Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Grow your Fabric skills and prepare for the DP-600 certification exam by completing the latest Microsoft Fabric challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Necesita ayuda con DAX, para hacer medidas como aditivo

Hola a todos,

Estoy haciendo Análisis estadístico - Prueba de ChiSquare en PowerBI usando DAX,

Mi objetivo principal es mostrar solo el resultado final de la prueba ChiSqaure, que es el valor P, que implica una serie de cálculos. El problema al que me enfrento es que no puedo agregar 3 medidas (que no es aditiva), por lo que necesito hacer estas medidas como aditivas por naturaleza.

Este es el modelo de datos,

  • JAR Attributes es la tabla principal
  • Kishore_SR_0-1667276189373.png
  • JAR_Year se crean tablas 1 y JAR_Year 2 para la comparación de dos años
  • Función de JAR_Year 1: JAR_Year 1 = DISTINTO (VALORES ('Atributos jar'[AÑO]))
  • Función de JAR_Year 2: JAR_Year 2 = 'JAR_Year 1' (Nota: he hecho la relación b/n JAR Attributes y JAR_Year tabla 2 como Inactiva, porque al hacerlas tan activas no será posible filtrar y comparar de dos años)
  • El propósito principal de esta prueba es calcular el valor de P, los resultados de la prueba para la comparación interanual
  • Para el cálculo del valor de P, necesitamos calcular los valores observados, esperados y Chi-cuadrado.
  • Tenemos tres columnas Too Less, Just About Right, Too Strong en la tabla JAR Attributes. Necesitamos calcular los valores Observado, Esperado, Chi-cuadrado y P a partir de estas 3 columnas

Ahora voy a explicar los cálculos involucrados en esta prueba,

  • Demasiado menos observado - (Nombre de medida - #Too menos Obs_M = SI(SELECTEDVALUE('JAR_Year 1'[AÑO]),CALCULATE(SUMA('JAR Atributos'[Demasiado menos]),'Atributos JAR'[PRODUCT_1ST]="M")) + SI(SELECTEDVALUE('JAR_Year 2'[AÑO]),CALCULATE(SUMA('JAR Atributos'[Demasiado menos]),'Atributos JAR'[PRODUCT_1ST]="M",ALL('JAR_Year 1'[AÑO]),userelationship('JAR Atributos'[AÑO],'JAR_Year 2'[AÑO])))
  • Casi correcto observado - (Nombre de la medida - #JAR Obs_M = SI(SELECTEDVALUE('JAR_Year 1'[AÑO]),CALCULATE(SUMA('JAR Atributos'[Casi a la derecha]),'Atributos JAR'[PRODUCT_1ST]="M")) + SI(SELECTEDVALUE('JAR_Year 2'[AÑO]),CALCULATE(SUM('JAR attributes'[Just About right]),'JAR Attributes'[PRODUCT_1ST]="M",ALL('JAR_Year 1'[YEAR]),userelationship('JAR Attributes'[YEAR],'JAR_Year 2'[YEAR])))
  • Demasiado fuerte observado - (Nombre de la medida - #Too Fuerte Obs_M = SI(SELECTEDVALUE('JAR_Year 1'[AÑO]),CALCULATE(SUMA('JAR Atributos'[Demasiado fuerte]),'JAR Atributos'[PRODUCT_1ST]="M")) + SI(SELECTEDVALUE('JAR_Year 2'[AÑO]),CALCULATE(SUM('JAR Attributes'[Too Strong]),'JAR Attributes'[PRODUCT_1ST]="M",ALL('JAR_Year 1'[YEAR]),USERELATIONSHIP('JAR Attributes'[YEAR],'JAR_Year 2'[YEAR])))
  • Estas 3 medidas son para el cálculo de los valores observados
  • Kishore_SR_3-1667278437956.png
  • Luego hay que calcular los valores esperados, Fórmula para esperado - (Esperado = Total de la columna * Total de la fila / Total general)
  • Total de filas - (Nombre de medida - #Row Total_M = [#Too Menos Obs_M] + [#JAR Obs_M] + [#Too Obs_M fuerte]
  • Too Less Column Total - (Nombre de medida - #Less Columna Total_M = SI([#JAR Obs_M] >0,CALCULATE([#Too Less Obs_M],ALLSELECTED('JAR Attributes'[YEAR])))
  • JAR Column Total - (Nombre de medida - #JAR Columna Total_M = SI([#JAR Obs_M] >0,CALCULATE([#JAR Obs_M],ALLSELECTED('JAR Attributes'[YEAR])))
  • Total de columna demasiado fuerte - (Nombre de medida - #Strong Columna Total_M = SI([#JAR Obs_M] >0,CALCULAR([#Too Fuerte Obs_M],ALLSELECTED('Atributos JAR'[AÑO])))
  • Total general - (Nombre de la medida - #Grand Total_M = CALCULAR ([#Less columna Total_M] + [#JAR columna Total_M] + [#Strong columna Total_M])
  • Kishore_SR_4-1667278496910.png
  • Ahora, usando Total de fila, Total de columna y Total general, calculamos los valores esperados
  • Too Less Expected - (Nombre de la medida - #Too Menos Expect_M = CALCULAR(DIVIDE([#Less Columna Total_M] * [#Row Total_M], [#Grand Total_M]))
  • JAR Esperado - (Nombre de la medida - #JAR Expect_M = CALCULAR(DIVIDIR([#JAR Columna Total_M] * [#Row Total_M], [#Grand Total_M]))
  • Demasiado fuerte esperado - Nombre de la medida - #Too Fuerte Expect_M = CALCULAR(DIVIDIR([#Strong Columna Total_M] * [#Row Total_M], [#Grand Total_M]))
  • Kishore_SR_2-1667278357720.png
  • Ahora, usando los valores Observado y Esperado, calculamos los valores de Chi Cuadrado
  • Fórmula para Chi Cuadrado - ChiSqu = ∑ (Observado – Esperado) ^2/Esperado
  • Demasiado menos ChiSqu - Nombre de la medida - #Too Menos CS_M = CALCULAR(([#Too Menos Count_M] - [#Too menos Expect_M])^2/ [ #Too menos Expect_M])
  • JAR ChiSqu - Nombre de la medida - #Just Acerca de la derecha CS_M = CALCULAR(([#JAR Count_M] - [#JAR Expect_M])^2/ [#JAR Expect_M])
  • ChiSqu demasiado fuerte - Nombre de la medida - #Too Fuerte CS_M = CALCULAR(([#Too Fuerte Count_M] - [#Too Fuerte Expect_M])^2/ [ #Too Fuerte Expect_M]
  • Kishore_SR_6-1667278597896.png
  • Ahora necesito sumar los 6 valores en esas 3 medidas (Chi cuadrado total = 0.154 + 0.152 + 0.266 + 0.264 + 0.884 + 0.875 = 2.595) y tenerlo asíKishore_SR_0-1667280218966.png
  • Lo que hice es, primero he calculado el total de cada fila.
  • #Total CS_M = CALCULAR([#Too menos CS_M]+[#Just sobre CS_M derecho]+[#Too CS_M fuerte])
  • Kishore_SR_1-1667280262311.png
  • Ahora traté de calcular la suma total de #Total CS_M, que es 1.304 + 1.291 = 2.595
  • #ChiSq_M = SI(SELECTEDVALUE('JAR_Year 1'[AÑO]),CALCULATE([#Total CS_M],ALLSELECTED('JAR_Year 2'[YEAR]))) + IF(SELECTEDVALUE('JAR_Year 2'[YEAR]),CALCULATE([#Total CS_M],ALLSELECTED('JAR_Year 1'[YEAR])))
  • ResultadoKishore_SR_2-1667280295703.png
  • Nota: Probé la función anterior, en lugar de Suma de 1.304 + 1.291 = 2.595 está haciendo 1.304 + 1.304 = 2.608 y 1.291 + 1.291 = 2.583
  • Pero mi resultado esperado debería ser
  • Kishore_SR_3-1667280321395.png
  • En este momento, debido a dos valores diferentes de Chi Cuadrado, los valores de P también dan dos valores diferentes ... pero el resultado debe dar solo un Chi Cuadrado, valores P
  • P value_M = SI([#JAR Obs_M]>0,CALCULATE(CHISQ. DIST. RT([#ChiSq_M],2)))
  • Kishore_SR_4-1667280357060.png
  • Pero el resultado esperado debería ser,
  • Kishore_SR_5-1667280379094.png

Espero haber aclarado toda la información necesaria, si alguien encuentra esto difícil de entender, por favor hágamelo saber

Realmente necesito ayuda para resolver este problema, lidiando con esto desde hace mucho tiempo

Cualquier ayuda wolud ser apreciable, Gracias de antemano..!!

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

Hola @Kishore_SR ,
Gracias por el archivo.
Mis sugerencias no funcionaron, pero debido a la complejidad de sus cálculos, no puedo encontrar la fuente en un tiempo razonable.
Así que espero que alguien más recoja esto.

Syndicate_Admin
Administrator
Administrator

Hola @Kishore_SR ,
para este tipo de cálculo en DAX, debe comprender los conceptos de row- y filtercontext:
Contexto de fila en DAX - SQLBI
Y aunque hizo una muy buena descripción de su problema, me resulta un poco difícil de seguir sin datos de muestra. Por lo tanto, si las siguientes opciones no funcionan, proporcione algunos datos de muestra que se concilien con los valores que ha proporcionado.
Opciones:

CALCULATE(
     [#Too Less CS_M]+[#Just About Right CS_M]+[#Too Strong CS_M], REMOVEFILTERS(TableNameFromYearInVisual[Year]))

o:

#Total CS_M = 
SUMX(
VALUES(TableNameFromYearInVisual[Year]),
CALCULATE(
     [#Too Less CS_M]+[#Just About Right CS_M]+[#Too Strong CS_M], REMOVEFILTERS(TableNameFromYearInVisual[Year]))
)

@ImkeF ,

Gracias por su respuesta,

He cargado los datos de muestra y el archivo PBIX de muestra en la unidad, ( https://drive.google.com/drive/folders/1mXoFeHAxxpRxcSNJ7SUHfKOkkudSS8xn?usp=share_link )

Captura de pantalla del panel:

Kishore_SR_1-1667377240074.png

Las medidas se guardan en la carpeta de visualización CHI SQUARE_M

Por favor, compruébelo y hágamelo saber

¡¡Gracias!!

Helpful resources

Announcements
Europe Fabric Conference

Europe’s largest Microsoft Fabric Community Conference

Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.

RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

MayPowerBICarousel1

Power BI Monthly Update - May 2024

Check out the May 2024 Power BI update to learn about new features.

Top Solution Authors