Forum Discussion
jeronimo2334
3 years agoHelper III
Create new table applying cartesian logic
Hello all, I have 3 tables, 2 of them are dimensional: DIM TABLE - EXAMS exam1 exam2 exam3 DIM TABLE - STUDENTS student1 student2 student3 FACT TABLE - RESULTS ...
- 3 years ago
jeronimo2334 Updated to meet that additional requirement
Place the following M code in a blank query to see the steps for your expected table.
See it all at work in the attached file.
let Source = ExamsT, #"Added Custom" = Table.AddColumn(Source, "Custom", each StudentsT), #"Expanded Custom" = Table.ExpandTableColumn(#"Added Custom", "Custom", {"Student"}, {"Student"}), #"Changed Type" = Table.TransformColumnTypes(#"Expanded Custom",{{"Student", type text}}), #"Merged Queries" = Table.NestedJoin(#"Changed Type", {"Exam", "Student"}, ResultsT, {"Exam", "Student"}, "ResultsT", JoinKind.LeftOuter), #"Expanded ResultsT" = Table.ExpandTableColumn(#"Merged Queries", "ResultsT", {"Result"}, {"Result"}), #"Replaced Value" = Table.ReplaceValue(#"Expanded ResultsT",null,"Not taken",Replacer.ReplaceValue,{"Result"}), #"Sorted Rows" = Table.Buffer(Table.Sort(#"Replaced Value",{{"Exam", Order.Ascending}, {"Student", Order.Ascending}, {"Result", Order.Descending}})), #"Removed Duplicates" = Table.Distinct(#"Sorted Rows", {"Exam", "Student"}) in #"Removed Duplicates"Please accept the solution when done and consider giving a thumbs up if posts are helpful.
Contact me privately for support with any larger-scale BI needs, tutoring, etc.
jeronimo2334
3 years agoHelper III
Thank you! That is almost the expected result. I edited my post, adding a small gotcha.
Issue being, a student can have multiple entries in the Results table, with a fail and a pass grade. The expected table should show only the pass if there is a case of multiple results. It should only show the fail result if there is no pass result.
CNENFRNL
3 years agoCommunity Champion
Simple enough