Forum Discussion
Dynamic Measures based on changing data
- 3 years ago
The process is called "unpivoting" and it is usually done in Power Query during the ETL.
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45Wcg9y9HMJcAxy9Qsx1IfTQf4uoc4hhko6SmaqQMLIAEQqALG5CYQVq4NfqxFQlaEFql4zI+L0GgNVmRiD9YJ1QJxgCdUcCwA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [FamilyHelper = _t, ABS = _t, Aluminium = _t, NewPreviouslyUnknownMaterial1 = _t, NewPreviouslyUnknownMaterial2 = _t, #"Polyamide " = _t]), #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Source, {"FamilyHelper"}, "Material", "Percentage") in #"Unpivoted Other Columns"How to use this code: Create a new Blank Query. Click on "Advanced Editor". Replace the code in the window with the code provided here. Click "Done".
That way you make the data usable for Power BI and you can accommodate any new columns in your source data.
- 3 years ago
That's just the way your sample data is encoded. Has nothing to do with your ask. The important part is to apply the unpivot step to your actual data.
- 3 years ago
For anyone who is as thick as me; the final code i used looked like this:
let
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(MaterialMatrix,{"FamilyHelper"},"Material", "Percentage")
in
#"Unpivoted Other Columns"
Thank you Ibendlin - my first ever forum post so please bear with me :-).
I followed the guidance, but my company is blocking external link sharing on OneDrive, so i placed the information in tables below and included a screenshot of the final outcome i am trying to achieve. I am looking for the two columns "NewPreviouslyUnknownMaterial1" and "NewPreviouslyUnknownMaterial2" to be created automatically when a new material column is detected in in the "material_matrix" incoming data:
Example measure i am creating manually (this is the item i need help with; the data set can arrive with new materials on which may not have previously been converted to measures. I am looking for a way to automatically create new measures based on new materials):
Example "finished_goods" Table:
| FamilyHelper | Date | Qty Total | Weight | Total Weight |
| GRANDPARENT1/PARENT1/PRODUCT1 | 12/10/2022 | 11,291 | 3.000 | 33873 |
| GRANDPARENT1/PARENT1/PRODUCT2 | 12/10/2022 | 10,944 | 3.000 | 32832 |
| GRANDPARENT1/PARENT1/PRODUCT3 | 12/10/2022 | 10,844 | 3.000 | 32532 |
| GRANDPARENT1/PARENT1/PRODUCT1 | 20/12/2022 | 11,291 | 3.000 | 33873 |
Example "material_matrix" table:
| FamilyHelper | ABS | Aluminium | NewPreviouslyUnknownMaterial1 | NewPreviouslyUnknownMaterial2 | Polyamide |
| GRANDPARENT1/PARENT1/PRODUCT1 | 6% | 20% | 74% | ||
| GRANDPARENT1/PARENT1/PRODUCT2 | 18% | 20% | 62% | ||
| GRANDPARENT1/PARENT1/PRODUCT3 | 43% | 22% | 6% | 29% |