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

Be one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now

Reply
Syndicate_Admin
Administrator
Administrator

Ayuda de DAX

¡Hola! Soy un principiante total en PowerBI y estoy atascado en este tema por un día y realmente no puedo averiguar esto y realmente necesitaría su ayuda!

Este es un problema bastante elemental y probablemente ha sido respondido antes, pero he estado buscando y no puedo encontrar nada y aquí estoy. ¡Cualquier ayuda será muy apreciada!

Tengo este conjunto de datos (Tabla1): Cada fila representa un viaje al supermercado.

supermercadoBienes compradosCantidad de jan21Gastos de eneroCantidad de febrero de 21Gastos de febreroCantidad de mar...
AMueble1$3002$400...
Acomestibles8$8013$110...
Aespecias5$504$30...
BMueble1$2501$260...
Bcomestibles12$11015$130...
Bespecias2$153$25...

Lo que me gustaría obtener sería:

periodoMueblecomestiblesespeciasCantidad totalGasto total% De cambio
Jan21$550$190$6529$805-
Febrero 21$660$240$5538$99523.6%
Mar21..................
Abr21.....................

Mi intento hasta ahora me produce la columna cantidad total y gastos utilizando un DAX de la siguiente manera:
Nombre de tabla =

Unión(

Fila ( "Período", "2021-01", "Cantidad total", Suma ( Tabla1[Cantidad ene21] ), "Gasto total", Suma ( Cuadro1[Gastos ene21] ), ),
Fila ( ....
)

¿Hay una manera más fácil de hacer esto y cómo escribo un DAX para filtrar los diferentes tipos de Good Purchased y para el % de cambio?

¡Muchas gracias!

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Publicaré el código (que puede colocar en el Editor avanzado en Power Query). Esto te confundirá o te inspirará. Esperemos que sea este último.

Básicamente no estarás despreocupando los pares de columnas. Para ello necesita coherencia en el nombre de pares, por ejemplo, Jan21 para 2 columnas o Enero para 2 columnas.

Aquí está el código:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("bY0xDoAgDEXvQhwZLIhx1UEP4EiYCAOLGpT729KoDA5NX/Jf/rdWjEKKOactXjkFZMBrdNviU4QdopPsLWn3IcVwIg8UDqSBJgT4vPWIvkiGEkNSx7VFmf4mVdEY+8+rJ0E9Q8ilGqrGd5QtyjUXC+du", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [SuperMarket = _t, #"Goods Purchased" = _t, #"Jan21 Quantity" = _t, #"Jan Expenditure" = _t, #"Feb21 Quantity" = _t, #"Feb Expenditure" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"SuperMarket", type text}, {"Goods Purchased", type text}, {"Jan21 Quantity", Int64.Type}, {"Jan Expenditure", type text}, {"Feb21 Quantity", Int64.Type}, {"Feb Expenditure", type text}}),
    #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"SuperMarket", "Goods Purchased"}, "Attribute", "Value"),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Unpivoted Other Columns", "Attribute", Splitter.SplitTextByEachDelimiter({" "}, QuoteStyle.Csv, false), {"Attribute.1", "Attribute.2"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Attribute.1", type text}, {"Attribute.2", type text}}),
    #"Replaced Value" = Table.ReplaceValue(#"Changed Type1","21","",Replacer.ReplaceText,{"Attribute.1"}),
    #"Pivoted Column" = Table.Pivot(#"Replaced Value", List.Distinct(#"Replaced Value"[Attribute.2]), "Attribute.2", "Value"),
    #"Replaced Value1" = Table.ReplaceValue(#"Pivoted Column","$","",Replacer.ReplaceText,{"Expenditure"}),
    #"Changed Type2" = Table.TransformColumnTypes(#"Replaced Value1",{{"Expenditure", Int64.Type}, {"Quantity", Int64.Type}}),
    #"Renamed Columns" = Table.RenameColumns(#"Changed Type2",{{"Attribute.1", "Period"}})
in
    #"Renamed Columns"

Se ve complejo, pero todo se hizo con el ratón + interfaz.

Vea si puede aplicar sus datos. No estaré por aquí por unas horas pero te animo a resolverlo y publicar más tarde si estás luchando.

Hay muchos ejemplos de foros de pares no apresivos. Avísame cómo va

View solution in original post

6 REPLIES 6
Syndicate_Admin
Administrator
Administrator

Bueno, parece que tus datos reales son una situación más compleja.

Estas son mis sugerencias:

1. Usando las primeras 6 columnas de los datos de ejemplo que proporcionó, aplique el código que proporcionó. A ver si puedes hacer que funcione. Mira cada paso para ver qué está pasando. Comprenda la estrategia (básicamente remodelando los datos seleccionando 2 columnas fijas y desapretando los pares) y vea cómo cada paso le lleva allí.

La remodelación de los datos en Power Query le permite empezar a obtener datos que powerbi le gustan, es decir, columnar y desde allí puede empezar a investigar esquemas de estrellas.

2. Cierre y aplique la consulta de energía. Vea si puede crear un objeto visual de matriz con los datos remodelados. Si eso funciona, vaya a 3.

----------------------

3. Con sus datos reales, inicie un prototipo deshaciéndose del 90% de las columnas. Hazlo simple. Si los datos son como el ejemplo que proporcionó, está en un buen comienzo. Si ahora te das cuenta de que has hecho la pregunta equivocada, vuelve a publicar nuevos datos y requisitos de muestra (estarás más cerca de una solución y has aprendido mucho)

4. No creo que el artículo sqlbi sea un buen lugar para que usted comience - es una técnica avanzada y resuelve un problema específico

5. Es muy poco probable que vaya a encontrar una página web con "La solución" - trate de entender sus datos y cuáles son sus resultados deseados.

Buena suerte.

¡eh!

Me tomó un tiempo seguir sus pasos, pero me las arreglé para obtener el resultado deseado que quería. Reducí el número de categorías a 2 y realmente ayudó.

Realmente apreciar su esfuerzo y tiempo para ayudarme! Salud Mate 🙂

Syndicate_Admin
Administrator
Administrator

Publicaré el código (que puede colocar en el Editor avanzado en Power Query). Esto te confundirá o te inspirará. Esperemos que sea este último.

Básicamente no estarás despreocupando los pares de columnas. Para ello necesita coherencia en el nombre de pares, por ejemplo, Jan21 para 2 columnas o Enero para 2 columnas.

Aquí está el código:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("bY0xDoAgDEXvQhwZLIhx1UEP4EiYCAOLGpT729KoDA5NX/Jf/rdWjEKKOactXjkFZMBrdNviU4QdopPsLWn3IcVwIg8UDqSBJgT4vPWIvkiGEkNSx7VFmf4mVdEY+8+rJ0E9Q8ilGqrGd5QtyjUXC+du", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [SuperMarket = _t, #"Goods Purchased" = _t, #"Jan21 Quantity" = _t, #"Jan Expenditure" = _t, #"Feb21 Quantity" = _t, #"Feb Expenditure" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"SuperMarket", type text}, {"Goods Purchased", type text}, {"Jan21 Quantity", Int64.Type}, {"Jan Expenditure", type text}, {"Feb21 Quantity", Int64.Type}, {"Feb Expenditure", type text}}),
    #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"SuperMarket", "Goods Purchased"}, "Attribute", "Value"),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Unpivoted Other Columns", "Attribute", Splitter.SplitTextByEachDelimiter({" "}, QuoteStyle.Csv, false), {"Attribute.1", "Attribute.2"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Attribute.1", type text}, {"Attribute.2", type text}}),
    #"Replaced Value" = Table.ReplaceValue(#"Changed Type1","21","",Replacer.ReplaceText,{"Attribute.1"}),
    #"Pivoted Column" = Table.Pivot(#"Replaced Value", List.Distinct(#"Replaced Value"[Attribute.2]), "Attribute.2", "Value"),
    #"Replaced Value1" = Table.ReplaceValue(#"Pivoted Column","$","",Replacer.ReplaceText,{"Expenditure"}),
    #"Changed Type2" = Table.TransformColumnTypes(#"Replaced Value1",{{"Expenditure", Int64.Type}, {"Quantity", Int64.Type}}),
    #"Renamed Columns" = Table.RenameColumns(#"Changed Type2",{{"Attribute.1", "Period"}})
in
    #"Renamed Columns"

Se ve complejo, pero todo se hizo con el ratón + interfaz.

Vea si puede aplicar sus datos. No estaré por aquí por unas horas pero te animo a resolverlo y publicar más tarde si estás luchando.

Hay muchos ejemplos de foros de pares no apresivos. Avísame cómo va

Traté de despivot toda mi tabla, pero no tengo una columna fija que pueda utilizar como pivote (Muchos ejemplos de tiempo de uso en línea, pero Im pivotar la columna time(monthly) también)
Mis disculpas, pero todavía soy muy nuevo y todo el proceso no es intuitivo para mi cerebro tonto.

Otro problema que enfrenté fue con la cantidad loca de categorizaciones (esto es un dato de maqueta, el real tiene como 4-5 columnas de categoría y cada uno tiene diferentes categorías como geolocalización, nombres de supermercados, varios productos, etc). Si incluye cada uno de los datos del mes, llegó hasta 100 columnas desde que tengo >5 años de datos.

A efectos de análisis, creo que lo que quiero lograr es similar a esto:
https://www.sqlbi.com/articles/filtering-and-comparing-different-time-periods-with-power-bi/
donde puedo hacer comparaciones entre diferentes categorías en relación con el tiempo.

Syndicate_Admin
Administrator
Administrator

¿Tiene que ser DAX? Sería más fácil en Power Query remodelar los datos y luego usar una matriz para mostrar

Correcto... No tiene que ser DAX. Estaba demasiado obsesionado con ese 😅
¿Tienes alguna sugerencia sobre cómo hacerlo?

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

Dec Fabric Community Survey

We want your feedback!

Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.

ArunFabCon

Microsoft Fabric Community Conference 2025

Arun Ulag shares exciting details about the Microsoft Fabric Conference 2025, which will be held in Las Vegas, NV.

December 2024

A Year in Review - December 2024

Find out what content was popular in the Fabric community during 2024.

Top Solution Authors
Top Kudoed Authors