Forum Discussion
Pivotar o no pivotar
Hola
Me pregunto qué es más eficaz para Power BI.
Tengo una tabla que tiene una fila para cada fecha y cada columna es un valor numérico. Algunas columnas son solo columnas de precio y algunas columnas son específicas de la región. Esto es solo un ejemplo y va a haber más columnas que solo el precio de la región que son específicas de la región, como el volumen, la temperatura, etc.
| fecha | precio | Precio na | Precio ue | Precio FE |
| 1/1/2021 | 1.5 | 2.3 | 3.3 | 6.6 |
| 1/2/2021 | 1.4 | 2.6 | 3.6 | 6.3 |
| 1/3/2021 | 1.6 | 2.7 | 3.2 | 6.9 |
| 1/4/2021 | 1.4 | 2.5 | 3.6 | 7.3 |
| 1/5/2021 | 1.5 | 2.2 | 3.6 | 7.1 |
| 1/6/2021 | 1.6 | 2.7 | 3.4 | 6.5 |
| 1/7/2021 | 1.6 | 2.7 | 3.6 | 6.8 |
| 1/8/2021 | 1.6 | 2.4 | 3.2 | 7.3 |
| 1/9/2021 | 1.4 | 2.6 | 3.3 | 6.9 |
¿Sería mejor pivotar los datos para que haya una columna de fecha, una columna de región y la columna de precio? Al hacerlo de esta manera, se crean más filas, pero se reduce la cantidad de columnas. Así:
| fecha | región | Precio de la región | precio |
| 1/1/2021 | en | 2.3 | 1.5 |
| 1/1/2021 | Tenía | 3.3 | 1.5 |
| 1/1/2021 | FE | 6.6 | 1.5 |
| 1/2/2021 | en | 2.6 | 1.4 |
| 1/2/2021 | Tenía | 3.6 | 1.4 |
| 1/2/2021 | FE | 6.3 | 1.4 |
¿O qué tal si creo 3 tablas calculadas separadas para cada región en su lugar? Por lo tanto, cada tabla calculada será solo 2 columnas, con la fecha y el precio para esa región.
¿Cuál sería el mejor modelo de datos de estos, o hay una manera aún mejor que no mencioné?
@kirbynguyen , el segundo como una sola tabla es mucho mejor.
4 Replies
- Syndicate_Admin
Administrator
@kirbynguyen , el segundo como una sola tabla es mucho mejor.
- Syndicate_Admin
Administrator
Pregunta de seguimiento:
¿Hay alguna manera de pivotar fácilmente esto en la salida deseada sin tener que crear una gran cantidad de pasos adicionales para deshacerse de las filas duplicadas:
Fecha NA Precio UE Precio FE Precio NA Temp EU Temp FE Temp
1/1/2021 2.3 3.3 6.6 10 40 60
1/2/2021 2.6 3.6 6.3 20 50 60
1/3/2021 2.7 3.2 6.9 30 40 60
1/4/2021 2.5 3.6 7.3 10 50 60
1/5/2021 2.2 3.6 7.1 20 40 60
1/6/2021 2.7 3.4 6.5 30 50 60
1/7/2021 2.7 3.6 6.8 10 40 60
1/8/2021 2.4 3.2 7.3 20 50 60
1/9/2021 2.6 3.3 6.9 30 40 60
deseado:Fecha Región Región Precio Región Temp
1/1/2021 NA 2.3 10
1/1/2021 UE 3,3 40
1/1/2021 FE 6,6 60
1/2/2021 NA 2,6 20
1/2/2021 UE 3,6 50
1/2/2021 FE 6,3 60
La forma en que lo estoy haciendo ahora es que desesfilaré las columnas y, a continuación, crearé una columna calculada para que coincida con las regiones y, a continuación, filtraré las que no coincidan. Parece un montón de pasos adicionales, pero no estoy seguro de si hay una mejor manera de hacerlo- Syndicate_Admin
Administrator
Anulación de la dinamización de todos excepto la fecha, divida la columna de atributos y, a continuación, pivote en la columna Temp/Price.
let Source = <....>, #"Unpivoted Columns" = Table.UnpivotOtherColumns(Source, {"Date"}, "Attribute", "Value"), #"Split Column by Delimiter" = Table.SplitColumn(#"Unpivoted Columns", "Attribute", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), {"Region", "Column"}), #"Pivoted Column" = Table.Pivot(#"Split Column by Delimiter", List.Distinct(#"Split Column by Delimiter"[Column]), "Column", "Value") in #"Pivoted Column"
- Syndicate_Admin
Administrator
Recomendaría la siguiente versión:
fecha región precio 1/1/2021 en 2.3 1/1/2021 Tenía 3.3 1/1/2021 FE 6.6 1/1/2021 ninguno 1.5 1/2/2021 en 2.6 1/2/2021 Tenía 3.6 1/2/2021 FE 6.3 1/2/2021 ninguno 1.4