Check your eligibility for this 50% exam voucher offer and join us for free live learning sessions to get prepared for Exam DP-700.
Get StartedDon't miss out! 2025 Microsoft Fabric Community Conference, March 31 - April 2, Las Vegas, Nevada. Use code MSCUST for a $150 discount. Prices go up February 11th. Register now.
Hola
Actualmente tengo un conjunto de datos que es vertical por naturaleza y se parece a la siguiente tabla. Tenía curiosidad por saber la mejor manera de agregar los datos de tal manera que sería fácil para mí calcular el beneficio / pérdida para cada transacción. Cada ID de pedido variará en el número de filas debido al número de transacciones únicas disponibles con ese pedido.
Fecha | ID de pedido | Sku | Tipo de transacción | Tipo de pago | Detalle de pago | Cantidad | Cantidad |
05-Mar-20 | 0000001 | ABC-1 | Pago | Cargo por producto | $15 | 1 | |
05-Mar-20 | 0000001 | ABC-1 | Pago | Cuota de comerciante | Pick and Package | ($3) | |
05-Mar-20 | 0000001 | ABC-1 | Pago | Otro | Envío | ($5) | |
05-Mar-20 | 0000001 | ABC-1 | Pago | Descuentos | ($2) | 1 | |
05-Mar-20 | 0000002 | ABC-2 | Pago | Cargo por producto | $20 | 1 | |
05-Mar-20 | 0000002 | ABC-2 | Pago | Cuota de comerciante | Pick and Package | ($5) | |
05-Mar-20 | 0000002 | ABC-2 | Pago | Rebajas promocionales | Envío | $5 | |
05-Mar-20 | 0000002 | ABC-2 | Pago | Otro | Envío | ($5) | |
05-Mar-20 | 0000002 | ABC-2 | Pago | Descuentos | ($1) | ||
... | ... | ... | ... | ... | ... | ... | ... |
Típicamente una tabla de pedidos se vería algo como esto que haría que los cálculos mucho más fácil
Fecha | ID de pedido | Sku | Ingresos | Costo | Beneficio |
05-Mar-20 | 0000001 | ABC-1 | 15 | 10 | 5 |
¡Gracias!
Solved! Go to Solution.
@UCK echar un vistazo a este código:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("jZHRCoMgFIZfRcKLgoJy9ABbsLtYbJfRxZkdMiIL5y729lMbbAzHBOWI8H34/7ZtVGY1qIzlURoVZu8PVWZnA48ZpbYntfR3rkklQA1oLsyiRUkc0KUBhhoVFyA1OaLlm5FPBGRPGuATOGVMd4k1B+lOWqAy8yLGdR3l4PgynD/jFTTetiQxZYkvCXuh7H8XLPd24TeEdOHN8vNB80LeiT46oe6LwjThlfr5r0qLjeye", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Date = _t, #"Order ID" = _t, SKU = _t, #"Transaction Type" = _t, #"Payment Type" = _t, #"Payment Detail" = _t, Amount = _t, Quantity = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type date}}),
#"Merged Columns" = Table.CombineColumns(#"Changed Type",{"Payment Type", "Payment Detail"},Combiner.CombineTextByDelimiter(":", QuoteStyle.None),"Merged Transaction Type"),
#"Merged Columns1" = Table.CombineColumns(#"Merged Columns",{"Amount", "Quantity"},Combiner.CombineTextByDelimiter(":", QuoteStyle.None),"Merged Amounts"),
#"Pivoted Column" = Table.Pivot(#"Merged Columns1", List.Distinct(#"Merged Columns1"[#"Merged Transaction Type"]), "Merged Transaction Type", "Merged Amounts")
in
#"Pivoted Column"
Lo que esto hace es girar esto:
En algo que se parece a esto:
Esto no está hecho. No dijiste cómo querías que se manejara la cantidad. Sin embargo, ahora tengo cada cantidad/cantidad en la misma columna (Cargo de producto, Reembolso, etc.) y ahora puede dividir esas columnas en dólares y cantidades, luego convertirlas en valores numéricos. Los mantuve como texto en la línea "Paso cambiado". Si las cantidades son lo mismo, podría descartar las columnas de cantidad adicional. O si "Reembolso" tiene una cantidad de 1 en la primera fila y Los cargos de producto también, deje esas columnas como separadas después de dividirlas.
Avísame si esto te ayuda a empezar. Si no es así, sea más explícito en lo que espera que sea la salida. El ejemplo no cubrió toda la información de la tabla principal.
Cómo utilizar el código M proporcionado en una consulta en blanco:
1) En Power Query, seleccione Nueva fuente y, a continuación, Consulta en blanco
2) En la cinta de opciones Inicio, seleccione el botón "Editor avanzado"
3) Retire todo lo que ve, luego pegue el código M que le he dado en esa caja.
4) Pulse Hecho
5) Consulte este artículo si necesita ayuda para usar este código M en su modelo.
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI Reporting@UCK - Por lo que es posible que desee pivotar su valor en las últimas columnas. @ImkeF y @edhans probablemente pueden ser de mejor ayuda.
Hola @UCK ,
necesita una asignación de la que la clase de pago pertenece a Ventas o Costes.
¿Esta columna ya existe en la tabla de datos de origen o la tiene en una tabla diferente?
Por favor, especifique.
Imke Feldmann (The BIccountant)
If you liked my solution, please give it a thumbs up. And if I did answer your question, please mark this post as a solution. Thanks!
How to integrate M-code into your solution -- How to get your questions answered quickly -- How to provide sample data -- Check out more PBI- learning resources here -- Performance Tipps for M-queries
No, no hay columnas que especifiquen si cada tipo de pago es un costo o ventas
@UCK echar un vistazo a este código:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("jZHRCoMgFIZfRcKLgoJy9ABbsLtYbJfRxZkdMiIL5y729lMbbAzHBOWI8H34/7ZtVGY1qIzlURoVZu8PVWZnA48ZpbYntfR3rkklQA1oLsyiRUkc0KUBhhoVFyA1OaLlm5FPBGRPGuATOGVMd4k1B+lOWqAy8yLGdR3l4PgynD/jFTTetiQxZYkvCXuh7H8XLPd24TeEdOHN8vNB80LeiT46oe6LwjThlfr5r0qLjeye", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Date = _t, #"Order ID" = _t, SKU = _t, #"Transaction Type" = _t, #"Payment Type" = _t, #"Payment Detail" = _t, Amount = _t, Quantity = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type date}}),
#"Merged Columns" = Table.CombineColumns(#"Changed Type",{"Payment Type", "Payment Detail"},Combiner.CombineTextByDelimiter(":", QuoteStyle.None),"Merged Transaction Type"),
#"Merged Columns1" = Table.CombineColumns(#"Merged Columns",{"Amount", "Quantity"},Combiner.CombineTextByDelimiter(":", QuoteStyle.None),"Merged Amounts"),
#"Pivoted Column" = Table.Pivot(#"Merged Columns1", List.Distinct(#"Merged Columns1"[#"Merged Transaction Type"]), "Merged Transaction Type", "Merged Amounts")
in
#"Pivoted Column"
Lo que esto hace es girar esto:
En algo que se parece a esto:
Esto no está hecho. No dijiste cómo querías que se manejara la cantidad. Sin embargo, ahora tengo cada cantidad/cantidad en la misma columna (Cargo de producto, Reembolso, etc.) y ahora puede dividir esas columnas en dólares y cantidades, luego convertirlas en valores numéricos. Los mantuve como texto en la línea "Paso cambiado". Si las cantidades son lo mismo, podría descartar las columnas de cantidad adicional. O si "Reembolso" tiene una cantidad de 1 en la primera fila y Los cargos de producto también, deje esas columnas como separadas después de dividirlas.
Avísame si esto te ayuda a empezar. Si no es así, sea más explícito en lo que espera que sea la salida. El ejemplo no cubrió toda la información de la tabla principal.
Cómo utilizar el código M proporcionado en una consulta en blanco:
1) En Power Query, seleccione Nueva fuente y, a continuación, Consulta en blanco
2) En la cinta de opciones Inicio, seleccione el botón "Editor avanzado"
3) Retire todo lo que ve, luego pegue el código M que le he dado en esa caja.
4) Pulse Hecho
5) Consulte este artículo si necesita ayuda para usar este código M en su modelo.
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI ReportingMarch 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Prices go up Feb. 11th.
Check out the January 2025 Power BI update to learn about new features in Reporting, Modeling, and Data Connectivity.