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

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Syndicate_Admin
Administrator
Administrator

¿Cómo hacer un inter cálculo en matriz?

Hola
Buenos deseos a todos,

Birinder_0-1640322071039.png

Como puede ver en el lado izquierdo, hay una matriz que contiene precios descontados y nominales para 2 períodos. Quiero lograr resultados como la imagen que se muestra en el lado derecho. Quiero restar q2 2021 Precios descontados y nominales de fa 2020 precios rebajados y nominales.
Una tabla separada también puede funcionar con columnas separadas en las mismas tablas.

Ya lo he visto en este foro.
Pensé que etiquetaría a ese miembro para responder a mi pregunta, pero no está activo, desde febrero de 2020.


18 REPLIES 18
Syndicate_Admin
Administrator
Administrator

En ella, @Birinder

Recuperé algunos datos por la imagen que me dio, y espero que restaure su problema.

Measure = 
VAR n1 =
    CALCULATE (
        MAX ( 'Table'[Price] ),
        FILTER (
            'Table',
            [Period] = "Q2 2021"
                && [Currency] = MAX( 'Table'[Currency] )
                && [Methods] = MAX( 'Table'[Methods] )
        )
    )
VAR n2 =
    CALCULATE (
        MAX ( 'Table'[Price] ),
        FILTER (
            'Table',
            [Period] = "FA 2020"
                && [Currency] = MAX('Table'[Currency] )
                && [Methods] = MAX('Table'[Methods] )
        )
    )
RETURN
    n1 - n2

vzhangti_0-1640593313626.pngvzhangti_2-1640593559632.png

Saludos

Equipo de soporte de la comunidad _Charlotte

Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

Hola @v-zhangti
Gracias por tan gran esfuerzo en mi problema.
Pero a continuación también mencioné que todas las tablas son de diferentes dimensiones. Es un dato en vivo. Hay dimensiones y cada dimensión tiene múltiples tablas y dentro de esas tablas se encuentran los datos.
¿Tiene alguna idea sobre cómo podemos lograr esto?

En ella, @Birinder

El hecho de que pueda componer una vista de matriz como esta significa que hay asociaciones en cada tabla. Puede considerar el uso de la función LOOKUPVALUE para agregar los campos que necesita en una tabla.

https://docs.microsoft.com/dax/lookupvalue-function-dax

En el caso de la Medida que hice, la Moneda, el Período y los Métodos deben aparecer en una tabla para facilitar el filtrado.

Si es posible, todavía espero que pueda proporcionar archivos PBIX simples para probar, que pueden eliminar datos confidenciales por adelantado.

Saludos

Equipo de soporte de la comunidad _Charlotte

Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

En el caso de la Medida que hice, la Moneda, el Período y los Métodos deben aparecer en una tabla para facilitar el filtrado.


Sí, sí. Finalmente lo estás consiguiendo. También tengo la misma IDEA de hacerlo.

Si es posible, todavía espero que pueda proporcionar archivos PBIX simples para probar, que pueden eliminar datos confidenciales por adelantado.

Quiero pero los datos están activos, no tengo ningún permiso para eliminar los datos. Ni siquiera sé cómo crear un dato de dimensión ficticio. Lo siento amigo.

Pensé que LOOKUP VALUE funcionaría. Pero tan pronto como relleno la información de una dimensión, solo aparecen campos para esas dimensiones. No puedo seleccionar ninguna otra tabla de diferente dimensión.


En ella, @Birinder

Pensé que LOOKUP VALUE funcionaría. Pero tan pronto como relleno la información de una dimensión, solo aparecen campos para esas dimensiones. No puedo seleccionar ninguna otra tabla de diferente dimensión.

Creo que es posible que no haya encontrado el uso correcto de LOOKUPVALUE. ¿Puede describirme qué campos son comunes a "Dim_period" y "Dim_facts"? Dim_facts" y "Dim_methods", "Dim_methods" y "Dim_currency", qué campos están conectados en cada una de estas 4 tablas, ¿podría describirlos?

Saludos

hola @v-zhangti
Los campos que son comunes a "Dim_period" y "Dim_facts" son "period_id"

Los campos que son comunes a "Dim_facts" y "Dim_methods" son "Junk_Dimension_id"

No hay ningún campo directamente relacionado con Dim_methods y Dim_Currency. Hay un campo "Currencies_ID" en Dim_Currency que está conectado a "Dim_Facts" y, como se mencionó anteriormente, "Dim_facts" y "Dim_methods" está conectado a través de "Junk_Dimension_id"

En ella, @Birinder

Simulé algunos datos más, y espero que esta vez se ajuste a su situación.

vzhangti_0-1640678118443.png

Utilice la función para crear una nueva tabla.

vzhangti_1-1640679102110.png

Table = SELECTCOLUMNS(Dim_facts,"Currencies_ID",[Currencies_ID])

Agregue columnas calculadas mediante lookupvalue.

Price = LOOKUPVALUE(Dim_facts[Price],Dim_facts[Currencies_ID],[Currencies_ID])
Price = LOOKUPVALUE(Dim_facts[Price],Dim_facts[Currencies_ID],[Currencies_ID])
Junk_Dimension_id = LOOKUPVALUE(Dim_facts[Junk_Dimension_id],Dim_facts[Currencies_ID],[Currencies_ID])
Methods = LOOKUPVALUE(Dim_methods[Methods],Dim_methods[Junk_Dimension_id],[Junk_Dimension_id])
Period_id = LOOKUPVALUE(Dim_facts[Period_id],[Currencies_ID],[Currencies_ID])
Period = LOOKUPVALUE(Dim_period[Period],Dim_period[Period_id],[Period_id])

vzhangti_2-1640679254416.png

Measure solo usa la función en la respuesta anterior.

Saludos

Equipo de soporte de la comunidad _Charlotte

Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

hola @v-zhangti
Gracias Gracias Gracias Gracias.
Gracias por todo esto.

Ahora el error es de nuestro lado, porque al usar esto :-

Table = SELECTCOLUMNS(Dim_facts,"Currencies_ID",[Currencies_ID])

Se muestra el error de memoria db. Porque la tabla es pesada en tamaño. Está por encima de los 21 gb. mientras que el límite de memoria es de 20,48 gb. ¿Puede dar códigos para elegir una columna de tabla diferente primero y luego buscar la tabla FACT a través de ella?

Ojalá tuviera conocimiento de ello.
Pero gracias a ustedes y a Amit, literalmente aprendí mucho de ustedes.

En ella, @Birinder

Estos datos de origen son realmente demasiado grandes.

De la misma manera, tanto Junk_Dimension_id como Period_id se pueden usar como las columnas seleccionadas para la nueva tabla.

Table = SELECTCOLUMNS(Dim_facts,"Junk_Dimension_id",[Junk_Dimension_id])
Table = SELECTCOLUMNS(Dim_facts,"Period_id",[Period_id])

Espero que esto te ayude.

Saludos

Equipo de soporte de la comunidad _Charlotte

Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

Hola @v-zhangti
Pero también en estos dos casos, dim_facts se importa primero.
Lo que nuevamente muestra el error de memoria.

¿Qué pasa si podemos cambiar el token?
En lugar de elegir Dim_facts no podemos usar otra dimensión primero.

¿Cuál sería el código para ello?

En ella, @Birinder

También puede comenzar seleccionando la tabla Dim_Currency.

Table = SELECTCOLUMNS(Dim_Currency,"Currencies_id",[Currencies_id])

Saludos

Syndicate_Admin
Administrator
Administrator

@Birinder, ¿de dónde viene el fa20 y el q2 2021?

¿Puede compartir datos de muestra y salida de muestra en formato de tabla? O un pbix de muestra después de eliminar datos confidenciales.

Hola @amitchandak
Los datos están conectados animadamente.
Es bastante complejo, pero no puedo compartir los datos debido a preocupaciones de confiadencia para nuestra empresa.

Sin embargo, responderé a todas sus preguntas.

Fuente de Período es una tabla que se denomina "Período (v)" y pertenece a la dimensión "Dim_period".


Fuente de Precio es una tabla que se denomina "HECHOS" y pertenece a la dimensión "Dim_facts".

Fuente de Método es una tabla que se denomina "Método (f)" y pertenece a la dimensión "Dim_methods".

Fuente de moneda es una tabla que se denomina "Moneda USD" y pertenece a la dimensión "Dim_currency".

@Birinder , quería FA y Qtr son columnas diferentes en la tabla, Supongamos que FY y QTR

Podemos medir como

Este añoQtr= CALCULATE(sum('Table'[Qty]),filter(ALL('Date'),'Date'[YearQtr]=max('Date'[YearQtr])))
Este FY= CALCULATE(sum('Table'[Qty]),filter(ALL('Date'),'Date'[FY]=max('Date'[FY])))

entonces podemos tomar diff.

Podemos usar la inteligencia del tiempo para el período no podemos usar la inteligencia del tiempo podemos seguir el enfoque de rango de WOW

consulte a continuación si es necesario

Power BI: año tras año con o sin inteligencia de tiempo
https://medium.com/@amitchandak.1978/power-bi-ytd-questions-time-intelligence-1-5-e3174b39f38a
https://www.youtube.com/watch?v=km41KfM_0uA
Power BI: Qtr en Qtr con o sin inteligencia de tiempo
https://medium.com/@amitchandak.1978/power-bi-qtd-questions-time-intelligence-2-5-d842063da839
https://www.youtube.com/watch?v=8-TlVx7P0A0
Power BI: mes a mes con o sin inteligencia de tiempo
https://medium.com/@amitchandak.1978/power-bi-mtd-questions-time-intelligence-3-5-64b0b4a4090e
https://www.youtube.com/watch?v=6LUBbvcxtKA
Power BI— Semana a semana y DMT
https://medium.com/@amitchandak.1978/power-bi-wtd-questions-time-intelligence-4-5-98c30fab69d3
https://community.powerbi.com/t5/Community-Blog/Week-Is-Not-So-Weak-WTD-Last-WTD-and-This-Week-vs-La...
https://www.youtube.com/watch?v=pnAesWxYgJ8

Hola @amitchandak
FA y QTR son solo valores. Considéralos como sólo valores. No son variables de tipo duración. Hay una columna que se llama "Punto". Debajo de él hay valores como "P6 2021", "P9 2021" y así sucesivamente.
En la matriz, he usado la columna Período como valor de columna. Luego lo estoy profundizando para mostrarme los valores de diferentes métodos también.

Hola @amitchandak
Olvidé agregar esto antes. Mi problema es el mismo que este.
Excepto que no quiero la parte de multiplicación.
Si es posible, ¿puedes darme una solución como esta?

Resuelto: Crear una nueva columna calculada en la matriz - Microsoft Power BI Community

@Birinder , Si necesita diferenciar entre dos períodos, separados por 1 período o un año. Con la ayuda de la tabla de período / fecha, el rango del período y el año, el número de período que puede hacer

ejemplo

nueva columna en la tabla de período o fecha

Rango de período = RANKX(all(Period),Period[year period],,ASC,Dense)

medir
Este Período = CALCULATE(sum('Table'[Qty]), FILTER(ALL(Period),Period[Period Rank]=max(Period[Period Rank])))
Último período = CALCULATE(sum('Table'[Qty]), FILTER(ALL(Period),Period[Period Rank]=max(Period[Period Rank])-1))

Este Período = CALCULATE(sum('Table'[Qty]), FILTER(ALL(Period),'Period'[Year]=max('Period'[Year]) && Period[Period]=max(Period[Period])))
Último año mismo Período = CALCULATE(sum('Table'[Qty]), FILTER(ALL(Period),'Period'[Year]=max('Period'[Year])-1 && Period[Period]=max(Period[Period])))

En realidad, estoy algo confundido si está buscando algo que no sea la diferencia de período. Perdón por eso

Hola @amitchandak
no, también lo siento por explicaciones tan extrañas.
En los formularios de tabla simples, los datos son como SS a continuación:

Birinder_0-1640337161210.png

Ahora, si, agrega un objeto visual de matriz.
Arrastre la moneda a las filas, el precio a los valores y "Métodos" y "Período" a las columnas, obtenemos la tabla de matrices, que compartí en primer lugar.
Y sí, solo quiero una diferencia, simplemente no puedo entender la lógica detrás de eso. Nada más.


Ahora pasamos a la última respuesta.
Rango de período = RANKX(all(Period),Period[year period],,ASC,Dense)

Aquí, ¿a qué se refiere "todo"? Si solo tengo una columna de período, ¿por qué hay un término de "período de año" en la fórmula? Y una cosa más, ¿Por "Denso" te refieres a DESC? porque Dense no funciona.

Helpful resources

Announcements
RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

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

LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.