No puedo encontrar la sintaxis adecuada para una nueva medida

Un usuario Pregunto ✅

Kincaids

Nuestra empresa alquila instrumentos musicales a escolares. Hay dos tipos de alquileres: instrumentos de alquiler iniciales e instrumentos de alquiler avanzados. Hay dos tipos de alquileres iniciales: los llamamos paquetes de inicio y ofertas de introducción. Los datos en la muestra de nuestra tabla a continuación deberían ayudarnos a desglosarlos.

Nombre de la tabla – ‘Cuentas de alquiler – scrental’

Fecha del contrato Fecha de vencimiento del primer pago Depósito
12/8/2013 10/12/2013 17.12
9/1/2016 1/10/2016 0
2/7/2014 2/9/2014 17.16
29/08/2015 29/09/2015 0
2/12/2013 2/1/2014 178.04

Si no hay pago inicial, es un Alquiler para principiantes – Paquete de inicio. Arriba hay 2.

Si hay un pago inicial con un intervalo de 2 meses entre la fecha del contrato y la fecha de vencimiento del primer pago, se trata de un alquiler para principiantes: oferta de introducción. Arriba hay 2.

Si hay un pago inicial y un intervalo de 1 mes entre la fecha del contrato y la fecha de vencimiento del primer pago, se trata de un alquiler anticipado. Arriba hay 1.

¿Qué fórmula(s) debo usar para que esto suceda? Quiero poder hacer estas preguntas:

  1. ¿Cuántos alquileres son para principiantes y cuántos para avanzados?
  2. De los alquileres iniciales, ¿cuántos son paquetes de inicio y cuántos son ofertas de introducción?

¡Gracias por tu ayuda!

En respuesta a Kincaids

Hola @kincaids,

El DAX proporcionado por @alanhodgson es devolver una columna en el informe en lugar del Editor de consultas. Puede crear una columna calculada en el informe como esta:

z1.PNG

En su escenario, como desea devolver el valor de conteo de Alquileres para principiantes, Alquileres avanzados, Paquetes de inicio, Ofertas de introducción, le sugiero que cree cuatro medidas y luego coloque cada medida en una tarjeta visual separada.

Alquileres para principiantes = CALCULATE(COUNTROWS(‘Cuentas de alquiler – scrental’),FILTER(‘Cuentas de alquiler – scrental’,DATEDIFF(‘Cuentas de alquiler – scrental'[Contract Date],’Cuentas de alquiler – scrental'[1st Pmt Due Date],MES)=2),’Cuentas de alquiler – scrental'[Down Payment]<>0) + CALCULATE(COUNTROWS(‘Cuentas de alquiler – scrental’),FILTER(‘Cuentas de alquiler – scrental’,’Cuentas de alquiler – scrental'[Down Payment]=0))

Alquileres anticipados = CALCULATE(COUNTROWS(‘Cuentas de alquiler – scrental’),FILTER(‘Cuentas de alquiler – scrental’,DATEDIFF(‘Cuentas de alquiler – scrental'[Contract Date],’Cuentas de alquiler – scrental'[1st Pmt Due Date],MES)=1),’Cuentas de alquiler – scrental'[Down Payment]<>0)

Paquetes de inicio = CALCULATE(COUNTROWS(‘Cuentas de alquiler – scrental’),FILTER(‘Cuentas de alquiler – scrental’,’Cuentas de alquiler – scrental'[Down Payment]=0))

Oferta de introducción = CALCULATE(COUNTROWS(‘Cuentas de alquiler – scrental’),FILTER(‘Cuentas de alquiler – scrental’,DATEDIFF(‘Cuentas de alquiler – scrental'[Contract Date],’Cuentas de alquiler – scrental'[1st Pmt Due Date],MES)=2),’Cuentas de alquiler – scrental'[Down Payment]<>0)

z2.PNG

Atentamente,
qiuyun yu

sin casta

Creo que sería más fácil usar el editor de consultas para hacer esto en lugar de una medida.

Puede agregar una columna personalizada y usar las funciones DateTime de M para calcular la cantidad de meses entre las dos fechas.

Uso algo como esto cuando hago ese tipo de cálculo (puede haber una mejor manera, pero no soy un profesional con consulta de energía)

«MesesEntre=Fecha.Mes([1st Payment Due Date])-Fecha.Mes([Contract Date])+((Fecha.Año([1st Payment Due Date])-Fecha.Año([Contract Date]))*12)»

Luego agregue una columna condicional que verifique sus Criterios para generar el tipo correcto.

SI Pago inicial = 0: Alquiler para principiantes – Paquete de inicio

ELSE IF MesesEntre = 1 : Alquiler anticipado

ELSE IF MesesEntre = 2: Alquiler para principiantes – Oferta de introducción

Después de eso, puede eliminar la columna personalizada del asistente y listo.

¡Espero que esto ayude!

alanhodgson

En respuesta a sin casta

Hola @kincaids,

Puede usar la siguiente fórmula DAX para crear una nueva columna para el tipo de cuenta de alquiler:

Rental Account Type = IF([Down Payment] = 0, "Beginner Rental - Starter Pack",
IF((DATEDIFF([1st Pmt Due Date],[Contract Date], month) = 2, "Beginner Rental - Intro Offer",
"Advancing Rental"))

Utiliza las funciones DATEDIFF y IF.

Espero que esto ayude,

Alan

Kincaids

En respuesta a alanhodgson

¡Gracias por tu ayuda, @alanhodgson! Sin embargo, tengo un problema al crear la columna …

columna_personalizada.png

Cuando hago clic en «Mostrar error», se resalta la coma después del ‘2’ al final de la segunda línea. He intentado un par de cambios en vano. ¡Se agradecería más ayuda!

En respuesta a Kincaids

Hola @kincaids,

El DAX proporcionado por @alanhodgson es devolver una columna en el informe en lugar del Editor de consultas. Puede crear una columna calculada en el informe como esta:

z1.PNG

En su escenario, como desea devolver el valor de conteo de Alquileres para principiantes, Alquileres avanzados, Paquetes de inicio, Ofertas de introducción, le sugiero que cree cuatro medidas y luego coloque cada medida en una tarjeta visual separada.

Alquileres para principiantes = CALCULATE(COUNTROWS(‘Cuentas de alquiler – scrental’),FILTER(‘Cuentas de alquiler – scrental’,DATEDIFF(‘Cuentas de alquiler – scrental'[Contract Date],’Cuentas de alquiler – scrental'[1st Pmt Due Date],MES)=2),’Cuentas de alquiler – scrental'[Down Payment]<>0) + CALCULATE(COUNTROWS(‘Cuentas de alquiler – scrental’),FILTER(‘Cuentas de alquiler – scrental’,’Cuentas de alquiler – scrental'[Down Payment]=0))

Alquileres anticipados = CALCULATE(COUNTROWS(‘Cuentas de alquiler – scrental’),FILTER(‘Cuentas de alquiler – scrental’,DATEDIFF(‘Cuentas de alquiler – scrental'[Contract Date],’Cuentas de alquiler – scrental'[1st Pmt Due Date],MES)=1),’Cuentas de alquiler – scrental'[Down Payment]<>0)

Paquetes de inicio = CALCULATE(COUNTROWS(‘Cuentas de alquiler – scrental’),FILTER(‘Cuentas de alquiler – scrental’,’Cuentas de alquiler – scrental'[Down Payment]=0))

Oferta de introducción = CALCULATE(COUNTROWS(‘Cuentas de alquiler – scrental’),FILTER(‘Cuentas de alquiler – scrental’,DATEDIFF(‘Cuentas de alquiler – scrental'[Contract Date],’Cuentas de alquiler – scrental'[1st Pmt Due Date],MES)=2),’Cuentas de alquiler – scrental'[Down Payment]<>0)

z2.PNG

Atentamente,
qiuyun yu

Kincaids

En respuesta a v-qiuyu-msft

¡Gracias por la ayuda, @v-qiuyu-msft! Creo que esto está bien, pero tengo una ligera discrepancia y no estoy seguro de por qué. Quería filtrar algunos de los datos por mis «alquileres actuales», por lo que solo veo el recuento de instrumentos actualmente en alquiler que estaban en alquiler inicial frente a alquileres avanzados. Cuando hice un filtro básico (a diferencia del filtrado avanzado), obtuve un número total que es 4 menos que la estadística general:

alquileres_actuales.pngdesglose_de_alquiler.png

He intentado jugar con el filtro de nivel visual, pero creo que es correcto, así que no estoy seguro de por qué la discrepancia. Cualquier pensamiento sería útil. Avíseme si necesito proporcionarle información adicional (estoy feliz de hacerlo, pero no sé qué más podría necesitar para averiguarlo).

En respuesta a Kincaids

Hola @kincaids,

¿Cómo calculó los alquileres actuales? Compruebe si se aplica algún filtro específico al filtro de nivel visual de esos dos elementos visuales.

Atentamente,
qiuyun yu

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *