From 0cf7ca1d429644bba612295836367652d9ad9a74 Mon Sep 17 00:00:00 2001 From: Ricardo Rincon Date: Tue, 3 Aug 2021 15:38:28 +0200 Subject: [PATCH] Create Build direct or indirect dependency tree of selected or all measures --- ...ependency tree of selected or all measures | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 Basic/Build direct or indirect dependency tree of selected or all measures diff --git a/Basic/Build direct or indirect dependency tree of selected or all measures b/Basic/Build direct or indirect dependency tree of selected or all measures new file mode 100644 index 0000000..f5c6949 --- /dev/null +++ b/Basic/Build direct or indirect dependency tree of selected or all measures @@ -0,0 +1,30 @@ +/* + * Title: Build direct or indirect dependency tree of selected or all measures + * Author: Daniel Otykier, twitter.com/DOtykier + * + * This script, when executed, will loop through the currently selected measures (or all measures), + * exporting all measures that depends on it, both direct or indirect way. + * + *This script was created in response to: + *https://github.com/TabularEditor/TabularEditor/issues/897 + * + */ + +string tsv = "Measure\tDependsOnMeasure"; // TSV file header row + +// Loop through all measures: (Change to Model.AllMeasures to Selected.Measures if only want Loop through selected measures) +foreach(var m in Model.AllMeasures /**/) { + + // Get a list of all measures referenced directly by the current measure: + var allReferences = m.DependsOn.Measures; + + // Get a list of ALL measures referenced by this measure (both directly and indirectly through other measures): + //var allReferences = m.DependsOn.Deep().OfType().Distinct(); + + // Output TSV rows - one for each measure reference: + foreach(var m2 in allReferences) + tsv += string.Format("\r\n{0}\t{1}", m.Name, m2.Name); +} + +tsv.Output(); +// SaveFile("c:\\MyProjects\\SSAS\\MeasureDependencies.tsv", tsv); // Uncomment this line to save output to a file