Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
Hola a todos
Soy relativamente nuevo en Power BI y estoy tratando de encontrar una solución que me permita mostrar una tabla donde cada línea está agrupada por un número de transacción único y donde los productos se enumeran como columnas en lugar de filas, para habilitar una vista más sencilla de los datos.
A continuación se muestra el aspecto de mis datos:
Hay un máximo de 4 artículos por transacción. La tabla de datos etiqueta cada fila entre 1-4.
Quiero que mi resultado final se vea algo como esto, con 4 columnas que mostrarán el nombre del producto (de los cuales podría haber cientos) y la cantidad:
Realmente apreciaría cualquier sugerencia sobre cómo obtener los resultados deseados! Gracias de antemano.
Mo
Solved! Go to Solution.
@Mohs - Echa un vistazo a mi enlace de archivo de nuevo, segunda pestaña. Creé 1 medida que es una forula SUM simple. Luego lo puse en una Matriz, y puse el número de línea en las columnas, todo lo demás en filas, y me des hice de los subtotales, excepto por la línea Transction, que pensé que podría ser útil, pero también puedes deshacerte de eso. A continuación, expandió todas las descripciones de fila y eliminó el diseño escalonado predeterminado.
Esto se expandirá automáticamente para cada línea de pedido, por lo que si llega una transacción con 6 partidas individuales, tendrá 6 columnas de datos.
Podría poner los nombres de los productos en las columnas, pero tiene 13 productos únicos, por lo que se convierte en una tabla muy amplia para mostrar los 13, y sospecho que sus datos reales tienen productos aún más reales.
Puede combinar este proceso con el @MFelix de medida proporcionado si no desea cantidades reales, pero la concatenación del nombre del producto y el total en la parte Valores. Hice una versión aproximada de eso en la pestaña 3.
Puede expandir previamente toda la matriz para que los usuarios no tengan que hacerlo, y eliminar los botones de expansión +/- si lo desea, también se muestra en la pestaña 3
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI Reporting@Mohs, el código @mhossain proporcionado funcionará, pero esto no es una buena práctica para hacer. Tienes una buena mesa normalizada y la estás desnormalizando. Usted potencialmente tendrá docenas, cientos, o incluso miles de coluimns con el tiempo.
En su lugar, debe crear una tabla DIM. Usted está tratando de hacer de su tabla FACT su tabla DIM también.
Háganos saber cuál es su objetivo final : la salida visual o de informe. Podemos ayudarte a llegar allí. Sin embargo, la desnorización de los datos hará que el DAX sea muy difícil más adelante y no será dinámico a medida que entren nuevos tipos de transacciones. Se adhieren a un esquema de estrella, que tiene una tabla FACT normalizada.
Orientación de Microsoft sobre la importancia del esquema star
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI ReportingHola @edhans ,
He adjuntado una tabla de datos de ejemplo para que miites con lo que estoy trabajando.
Tenga en cuenta que es importante, me gusta cada ID de transacción en una sola fila (algo así como mi maqueta en mi publicación original), con 4 columnas de marcador de posición de producto. Los productos reales contenidos en esas columnas son más de 4 , pero es probable que no haya (nunca digas nunca aunque) más de 4 productos por transacción.Datos: Datos de muestra
Espero que eso ayude a explicar lo que busco. ¡Gracias de nuevo!
Muchas gracias @edhans por la respuesta -
Mi objetivo final es crear un objeto visual que muestre un programa de recogida de productos.
El objeto visual debe ser una tabla con las siguientes columnas (de izquierda a derecha): omití algunas de estas columnas en mi publicación original en aras de la simplicidad, pero quiero asegurarme de que puedo mostrar varios datos de cada transacción.
Columna 1 : Fecha y hora de inicio de la carga
Columna 2: Fecha y hora de finalización de la carga del producto
Columna 3: Transacción
Columna 4: Cliente
Columna 5: Destino físico del producto
Columna 6: Producto 1
Columna 7: Producto 2
Columna 8: Producto 3
Columna 9: Producto 4
Columna 10: Instrucciones especiales?notas
Agradecemos su apoyo,
Mohs
Hola @Mohs ,
Puede crear medidas que filtrarán los datos por el tipo de producto. Por ejemplo:
Product A =
VAR varProductName = "A"
VAR Result =
CALCULATE(
SUM('Table'[Qty]),
'Table'[Product] = varProductName
)
RETURN
Result
A continuación, simplemente suelte esta medida "Producto A" en una columna de su tabla. Repita para B, C, D, etc.
No tenía muchas de las columnas que deseaba en los datos muestreados (cliente, instrucciones especiales, etc.), pero es probable que se sacudan para estar en la fila correcta para una medida determinada. He creado las medidas del producto A y B y devuelve esto:
Pero sus datos todavía están completamente normalizados. De hecho, no hice ninguna transformación en sus datos originales.
Adjunto es mi archivo PBIX si desea echar un vistazo. Tenga en cuenta que estoy usando una tabla de fechas, y la fecha en el objeto visual de la tabla es de eso, no de la tabla de datos. Esto le permitirá la inteligencia del tiempo si quieres - vs el mes pasado, el año anterior, lo que sea.
Si necesita más ayuda, proporcione un conjunto representativo de datos en un formato utilizable (no imagen), y exactamente cómo desea que se vea la salida, pero esperemos que esto le ayude a empezar.
Cómo obtener una buena ayuda rápidamente. Ayúdanos a ayudarte.
Cómo obtener respuestas a su pregunta rápidamente
Cómo proporcionar datos de ejemplo en el foro de Power BI
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI ReportingHola @edhans
Pensé que las columnas de productos se fijarán a 4, según @Mohs requisito de que máximo sólo 4 ID de transacción para cualquier registro, tal vez me lo perdí, por favor compruebe.
Ese código no se limpió uno sólo para referencia y teniendo en cuenta lo anterior y la salida de datos/informe.
Estoy de acuerdo con usted en el lado de los datos strucutring.
Sí, tienes razón @mhossain - Yo estaba más centrado en "¿por qué esta tabla está siendo desnormalizada?" 😁
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI ReportingHola @Mohs ,
Cree una visualización de matriz y un measuare con los siguientes formatos y sintaxis:
Values = MAX('Table'[Product]) & "-" & SUM('Table'[Quantity])
Regards
Miguel Félix
Proud to be a Super User!
Check out my blog: Power BI em Português¡Esta es una gran solución!
Una pregunta sin embargo: Me gustaría que mi objeto visual final fuera una tabla y no una matriz, ya que no quiero que los usuarios tengan que trabajar con tener que expandir una tabla usando el icono '+' en la matriz. ¿Tiene alguna sugerencia sobre cómo lograrlo?
Saludos
Mohs
@Mohs - Echa un vistazo a mi enlace de archivo de nuevo, segunda pestaña. Creé 1 medida que es una forula SUM simple. Luego lo puse en una Matriz, y puse el número de línea en las columnas, todo lo demás en filas, y me des hice de los subtotales, excepto por la línea Transction, que pensé que podría ser útil, pero también puedes deshacerte de eso. A continuación, expandió todas las descripciones de fila y eliminó el diseño escalonado predeterminado.
Esto se expandirá automáticamente para cada línea de pedido, por lo que si llega una transacción con 6 partidas individuales, tendrá 6 columnas de datos.
Podría poner los nombres de los productos en las columnas, pero tiene 13 productos únicos, por lo que se convierte en una tabla muy amplia para mostrar los 13, y sospecho que sus datos reales tienen productos aún más reales.
Puede combinar este proceso con el @MFelix de medida proporcionado si no desea cantidades reales, pero la concatenación del nombre del producto y el total en la parte Valores. Hice una versión aproximada de eso en la pestaña 3.
Puede expandir previamente toda la matriz para que los usuarios no tengan que hacerlo, y eliminar los botones de expansión +/- si lo desea, también se muestra en la pestaña 3
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI ReportingMe alegro de que pudimos resolverlo @Mohs
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI Reporting@MFelix FYI aquí es un vínculo a un conjunto de datos de ejemplo que imita con qué estoy trabajando. Me gustaría que mi objeto visual final mostrara no sólo los productos 1-4 en una línea, sino también otras columnas (por ejemplo, el nombre del buque, las notas que se asocian con cada ID de transacción.
Datos de muestra
Hola @Mohs
Ir a powerquery y crear consulta en blanco y pegar a continuación en el editor de avanzada y ver los pasos, esto le proporcionará exactamente lo que desea, hágamelo saber si no está claro.
Dejar
Source á Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSAeNEIDZVitWBiBgBcRJcxAhDjRFWNcZAnIwiYgLEKXARY6g5qSgiIHVpKIgnI4iAjInAyISCwA", BinaryEncoding.Base64), Compression.Deflate)), let _t á ((tipo de texto que acepta valores NULL) meta [Serialized.Text ? true]) en la tabla de tipos [Transaction ? _t, Seuquence ? _t, Product - _t, Qty - _t]),
"Tipo modificado" - Table.TransformColumnTypes(Source,"Transaction", Int64.Type, "Seuquence", Int64.Type, "Producto", tipo text,"Qty", Int64.Type),
"Changed Type1" á Table.TransformColumnTypes(-"Changed Type","Qty", escriba text-),
"Añadido Personalizado" - Table.AddColumn(-"Changed Type1", "Products", each [Product]&[Qty]),
"Columnas eliminadas" - Table.RemoveColumns(-"Added Custom","Product", "Qty"-),
"Changed Type2" á Table.TransformColumnTypes('"Columnas eliminadas",'Seuquence',tipo text'),
"Añadido Custom1" - Table.AddColumn(-"Changed Type2", "prod", each "Poduct" & " "&[Seuquence]),
"Filas agrupadas" - Table.Group(-"Added Custom1", "Transaction" , "combinar", cada Text.Combine([Products],"; "), escriba texto, escriba el texto,
"Dividir columna por delimitador" ? Table.SplitColumn('Filas agrupadas"', 'combinar', Dividir.SplitTextByDelimiter(";", QuoteStyle.Csv), ''combinar.1',', 'combinar.2', 'combinar.3', 'combinar.4''),
"Changed Type3" á Table.TransformColumnTypes('Dividir columna por delimitador",'combinar.1','tipo', ''combinar.2','tipo', '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
"Columnas renombradas" - Table.RenameColumns(-"Changed Type3","combine.1", "Product1"" , "combine.2", "Product2", "combine.3", "Product3", "combine.4", "Product4")
En
"Columnas renombradas"