Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!
Tengo un proyecto en el que necesito resumir los valores de una de las cuatro columnas que se determinan tres segmentaciones de datos (Geo Hierarchy, Gross/Net y Shrunk/Unshrunk).
Pude hacer que esto funcionara, usando un ejemplo que encontré en línea, para una de las dos columnas y dos segmentaciones de datos (ver más abajo), pero no puedo descubrir cómo hacer que funcione como se describió anteriormente.
Variable GrossNet BOE =
SWITCH(
TRUE(),
-------------- Entity --------------
SELECTEDVALUE(P_HIERARCHY_LVL[Field]) = "Entity",
CALCULATE(
IF(
HASONEVALUE(P_GROSS_NET[Gross Net]),
SWITCH(
VALUES(P_GROSS_NET[Gross Net]),
"Gross", SUM(PRODUCTION_AREA_PERF[gross_sales_boe]),
"Net", SUM(PRODUCTION_AREA_PERF[net_sales_boe])
),
SUM(PRODUCTION_AREA_PERF[gross_sales_boe])
),
USERELATIONSHIP(P_HIERARCHY_LVL[Category], PROD_AREA_COUNTRY[country_cd])
),
-------------------- Asset --------------
SELECTEDVALUE(P_HIERARCHY_LVL[Field]) = "Asset",
CALCULATE(
IF(
HASONEVALUE(P_GROSS_NET[Gross Net]),
SWITCH(
VALUES(P_GROSS_NET[Gross Net]),
"Gross", SUM(PRODUCTION_AREA_PERF[gross_sales_boe]),
"Net", SUM(PRODUCTION_AREA_PERF[net_sales_boe])
),
SUM(PRODUCTION_AREA_PERF[gross_sales_boe])
),
USERELATIONSHIP(P_HIERARCHY_LVL[Category], PROD_AREA_ASSET[asset_name])
),
-------------------- PA ----------------
SELECTEDVALUE(P_HIERARCHY_LVL[Field]) = "Production Area/Platform",
CALCULATE(
IF(
HASONEVALUE(P_GROSS_NET[Gross Net]),
SWITCH(
VALUES(P_GROSS_NET[Gross Net]),
"Gross", SUM(PRODUCTION_AREA_PERF[gross_sales_boe]),
"Net", SUM(PRODUCTION_AREA_PERF[net_sales_boe])
),
SUM(PRODUCTION_AREA_PERF[gross_sales_boe])
),
USERELATIONSHIP(P_HIERARCHY_LVL[Category], PROD_AREA_PLATFORM[production_area_abbr])
),
BLANK()
)
Soy bastante nuevo en Dax. Creo que lo que tengo está cerca, solo necesito ayuda para descubrir cómo hacer algo como esto dentro de la declaración IF del código anterior:
SUM(
IF(GrossNet = 'Gross' AND ShrunkUnshrunk = 'Shrunk', 'GrossShrunkBOE',
IF(GrossNet = 'Gross' AND ShrunkUnshrunk = 'Unshrunk', 'GrossUnshrunkBOE',
IF(GrossNet = 'Net' AND ShrunkUnshrunk = 'Shrunk', 'NetShrunkBOE',
IF(GrossNet = 'Net' AND ShrunkUnshrunk = 'Unshrunk', 'NetUnshrunkBOE',0
)
)
)
)
)
Cualquier ayuda que pueda obtener es muy apreciada.
SUM(
IF(GrossNet = 'Gross' AND ShrunkUnshrunk = 'Shrunk', 'GrossShrunkBOE',
IF(GrossNet = 'Gross' AND ShrunkUnshrunk = 'Unshrunk', 'GrossUnshrunkBOE',
IF(GrossNet = 'Net' AND ShrunkUnshrunk = 'Shrunk', 'NetShrunkBOE',
IF(GrossNet = 'Net' AND ShrunkUnshrunk = 'Unshrunk', 'NetUnshrunkBOE',0
)
)
)
)
)
¿Son 'GrossShrunkBOE'/'GrossUnshrunkBOE'/'NetShrunkBOE'/'NetUnshrunkBOE' en el resultado real parte de las medidas de la función IF que devolverán el valor del tipo de número? Veo que su medida devolverá 0 en el último resultado falso.
De acuerdo con su código, creo que debería haber dos segmentaciones de datos GrossNet y ShrunkUnshrunk en su modelo de datos.
Measure =
VAR _SELECT_GrossNet = SELECTEDVALUE('Slicer1'[GrossNet])
VAR _SELECT_ShrunkUnshrunk = SELECTEDVALUE('Slicer2'[ShrunkUnshrunk])
RETURN
SWITCH(
TRUE(),
_SELECT_GrossNet = 'Gross' && _SELECT_ShrunkUnshrunk = 'Shrunk', [GrossShrunkBOE],
_SELECT_GrossNet = 'Gross' && _SELECT_ShrunkUnshrunk = 'Unshrunk', [GrossUnshrunkBOE],
_SELECT_GrossNet = 'Net' && _SELECT_ShrunkUnshrunk = 'Shrunk', [NetShrunkBOE],
_SELECT_GrossNet = 'Net' && _SELECT_ShrunkUnshrunk = 'Unshrunk', [NetUnshrunkBOE],
0
)
No sume la medida en un código a menos que cree una tabla virtual en la medida. Pruebe la función sumx para sumar su medida.
SUM = SUMX('DataTable',[Measure])
Saludos
Rico Zhou
Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.