Forum Discussion
Condiciones en medida
Hola comunidad.
Necesito clasificar a los clientes por condiciones. Tengo una base de datos con una conexión de consulta directa y condiciones en dos tablas que se cargan localmente (desde SharePoint). No puedo usar el modo de importación y no puedo realizar la transformación necesaria en Power Query. Entonces, tengo un modelo mixto y necesito la medida que se calculará en base ados condiciones.
Lo que se necesita en la primera condición:
SI (
DQ - Tabla de muestra [Cliente] = LD - Primeras condiciones [Cliente]
Y
DQ - Tabla de muestra [Canal] = LD - Primeras condiciones [Canal]
Y
[Valor por cliente] >= LD - Primeras condiciones [Valor]
ENTONCES
Primeras condiciones [tipo])
Lo que se necesita en la segunda condición:
SI (
DQ - Tabla de muestra [Cliente] = LD - Segundas condiciones [Cliente]
Y
DQ - Tabla de muestra [período] = LD - Condiciones secundarias [período]
Y
[Valor por cliente] >= LD - Segundas condiciones [Valor]
ENTONCES
Segundas condiciones [tipo])
Sólo este orden de condiciones es importante.
No puedo encontrar una manera correcta de escribir la medida. Por favor ayuda, espero que sea posible en DAX 🙂
Todos los detalles en el archivo: join.pbix
PS Y las condiciones de valor, como de costumbre, deben calcularse de mayor a menor valor en cada grupo.
14 Replies
- Syndicate_AdminAdministrator
Pruebe las dos medidas siguientes:
Classification type 1 = VAR measurecalc = [Value by Customer] VAR temptable = CALCULATETABLE ( 'LD - First Conditions', 'LD - First Conditions'[Customer] IN VALUES ( 'DQ - Sample Table'[Customers] ), 'LD - First Conditions'[Channel] IN VALUES ( 'DQ - Sample Table'[Channel] ), 'LD - First Conditions'[Target Value] <= measurecalc ) RETURN MAXX ( temptable, 'LD - First Conditions'[Type] ) Classification type 2 = VAR measurecalc = [Value by Customer] VAR temptable = CALCULATETABLE ( 'LD - Second Conditions', 'LD - Second Conditions'[Customer] IN VALUES ( 'DQ - Sample Table'[Customers] ), 'LD - Second Conditions'[Period] IN VALUES ( 'LD - Second Conditions'[Period] ), 'LD - Second Conditions'[Target Value] <= measurecalc ) RETURN MAXX ( temptable, 'LD - Second Conditions'[Type] ) - Syndicate_AdminAdministrator
Gracias, pero se necesita una medida para ambas condiciones.
- Syndicate_AdminAdministrator
Gracias, pero se necesita una medida para ambas condiciones.
- Syndicate_AdminAdministrator
¿Cómo se resuelve cuál se selecciona?
¿Si tiene dos categorías para el mismo cliente?
¿Quieres mostrar por ejemplo T1 / T2?
- Syndicate_AdminAdministrator
Hola, perdón por el malentendido. La clasificación de los clientes debe realizarse en dos etapas, los cálculos en la segunda etapa deben excluir los datos de origen de la primera condición.
- Syndicate_AdminAdministrator
Pruebe el código siguiente:
Classification type 1 = VAR measurecalc = [Value by Customer] VAR ClassificationType1 = CALCULATETABLE ( 'LD - First Conditions', 'LD - First Conditions'[Customer] IN VALUES ( 'DQ - Sample Table'[Customers] ), 'LD - First Conditions'[Channel] IN VALUES ( 'DQ - Sample Table'[Channel] ), 'LD - First Conditions'[Target Value] <= measurecalc ) var FinalResult1 = MAXX ( ClassificationType1, 'LD - First Conditions'[Type] ) VAR ClassificationType2 = CALCULATETABLE ( 'LD - Second Conditions', 'LD - Second Conditions'[Customer] IN VALUES ( 'DQ - Sample Table'[Customers] ), 'LD - Second Conditions'[Period] IN VALUES ( 'LD - Second Conditions'[Period] ), 'LD - Second Conditions'[Target Value] <= measurecalc ) var FinalResult2 = MAXX ( ClassificationType2, 'LD - Second Conditions'[Type] ) RETURN COALESCE(FinalResult1, FinalResult2) - Syndicate_AdminAdministrator
Hola
Perdón por una larga respuesta. Desafortunadamente, la nueva medida no funciona correctamente. Ver archivo.
- Syndicate_AdminAdministrator
Tenga en cuenta que el uso del Tipo de las tablas de primera y segunda condiciones en las tablas donde se utiliza la medida Clasificación dará lugar a un error debido al contexto, ya que el tipo es parte del cálculo, filtra la tabla de manera que el único valor devuelto es el mismo que tiene el tipo para esa línea.
Debe utilizar la clasificación basada en los valores de muestra de DQ:
Como puede ver, los valores resaltados son los que se están recogiendo. ¿Es esto incorrecto en términos del resultado final?
Los que no tienen clasificación es porque no alcanzan los valores objetivo.
¿Podría explicar más sobre lo que es incorrecto en términos de resultado?
- Syndicate_AdminAdministrator
Sí, mi error. ¡Muchas gracias, muy apreciado!
- Syndicate_AdminAdministrator
Buenos días @MFelix ,
Disculpe las molestias, su solución funcionó perfectamente en datos de muestra, pero en la base de datos de trabajo da un error: "el resultado de una consulta a una base de datos externa ha superado el tamaño máximo de 1 Mio filas" (tanto en la versión de escritorio como en Power BI Service). ¿Podría ayudarme con lo que necesito hacer para resolver el problema?
Gracias de antemano.