G

Tabular Editor: Info_Helper

public
Guest Mar 01, 2024 Never 146
Clone
C# Info_Helper 211 lines (193 loc) | 13.78 KB
1
foreach (var column in Selected.Columns)
2
{
3
if (column.DataType == TabularEditor.TOMWrapper.DataType.String)
4
{
5
6
foreach(var c in Selected.Columns)
7
{
8
var _blankRowsCount =
9
EvaluateDax("CALCULATE(COUNTROWS(" + Selected.Table.DaxObjectFullName + "), ISBLANK(" + c.DaxObjectFullName + "))");
10
var _percentageBlanks =
11
EvaluateDax("FORMAT(DIVIDE(CALCULATE(COUNTROWS(" + Selected.Table.DaxObjectFullName + "), ISBLANK(" + c.DaxObjectFullName + ")), CALCULATE(COUNTROWS(" + Selected.Table.DaxObjectFullName + "))), \"0%\")");
12
var _errorRowsCount =
13
EvaluateDax("CALCULATE(COUNTROWS(" + Selected.Table.DaxObjectFullName + "), ISERROR(" + c.DaxObjectFullName + "))");
14
var _percentageErrors =
15
EvaluateDax("FORMAT(DIVIDE(CALCULATE(COUNTROWS(" + Selected.Table.DaxObjectFullName + "), ISERROR(" + c.DaxObjectFullName + ")), CALCULATE(COUNTROWS(" + Selected.Table.DaxObjectFullName + "))), \"0%\")");
16
17
var _result =
18
"\nInformation:" + Environment.NewLine +
19
"\n Name: " + c.Name + Environment.NewLine +
20
"\n Description: " + c.Description + Environment.NewLine +
21
"\n FormatString: " + c.FormatString + Environment.NewLine +
22
"\n DataType: " + c.DataType + Environment.NewLine +
23
"\n IsHidden: " + c.IsHidden + Environment.NewLine + Environment.NewLine +
24
"\n Blank Rows: " + _blankRowsCount + Environment.NewLine +
25
"\n Blanks (%): " + _percentageBlanks + Environment.NewLine +
26
"\n Rows with Error: " + _errorRowsCount + Environment.NewLine +
27
"\n Errors (%): " + _percentageErrors + Environment.NewLine + Environment.NewLine;
28
29
_result.ToString().Output();
30
}
31
}
32
if (column.DataType == TabularEditor.TOMWrapper.DataType.DateTime)
33
{
34
foreach(var c in Selected.Columns)
35
{
36
var _firstdate =
37
EvaluateDax("FirstDate(" + c.DaxObjectFullName + ")");
38
var _lastdate =
39
EvaluateDax("LastDate(" + c.DaxObjectFullName + ")");
40
var _earliestDate =
41
EvaluateDax("MIN(" + c.DaxObjectFullName + ")");
42
var _latestDate =
43
EvaluateDax("MAX(" + c.DaxObjectFullName + ")");
44
var _numberOfDays =
45
EvaluateDax("COUNTROWS(VALUES(" + c.DaxObjectFullName + "))");
46
var _distinctDateCount =
47
EvaluateDax("DISTINCTCOUNT(" + c.DaxObjectFullName + ")");
48
var _countSun =
49
EvaluateDax("COUNTROWS(FILTER(" + Selected.Table.DaxObjectFullName + ", WEEKDAY(" + c.DaxObjectFullName + ") = 1))");
50
var _countMon =
51
EvaluateDax("COUNTROWS(FILTER(" + Selected.Table.DaxObjectFullName + ", WEEKDAY(" + c.DaxObjectFullName + ") = 2))");
52
var _countTue =
53
EvaluateDax("COUNTROWS(FILTER(" + Selected.Table.DaxObjectFullName + ", WEEKDAY(" + c.DaxObjectFullName + ") = 3))");
54
var _countWed =
55
EvaluateDax("COUNTROWS(FILTER(" + Selected.Table.DaxObjectFullName + ", WEEKDAY(" + c.DaxObjectFullName + ") = 4))");
56
var _countThu =
57
EvaluateDax("COUNTROWS(FILTER(" + Selected.Table.DaxObjectFullName + ", WEEKDAY(" + c.DaxObjectFullName + ") = 5))");
58
var _countFri =
59
EvaluateDax("COUNTROWS(FILTER(" + Selected.Table.DaxObjectFullName + ", WEEKDAY(" + c.DaxObjectFullName + ") = 6))");
60
var _countSat =
61
EvaluateDax("COUNTROWS(FILTER(" + Selected.Table.DaxObjectFullName + ", WEEKDAY(" + c.DaxObjectFullName + ") = 7))");
62
var _blankRowsCount =
63
EvaluateDax("CALCULATE(COUNTROWS(" + Selected.Table.DaxObjectFullName + "), ISBLANK(" + c.DaxObjectFullName + "))");
64
var _percentageBlanks =
65
EvaluateDax("FORMAT(DIVIDE(CALCULATE(COUNTROWS(" + Selected.Table.DaxObjectFullName + "), ISBLANK(" + c.DaxObjectFullName + ")), CALCULATE(COUNTROWS(" + Selected.Table.DaxObjectFullName + "))), \"0%\")");
66
var _errorRowsCount =
67
EvaluateDax("CALCULATE(COUNTROWS(" + Selected.Table.DaxObjectFullName + "), ISERROR(" + c.DaxObjectFullName + "))");
68
var _percentageErrors =
69
EvaluateDax("FORMAT(DIVIDE(CALCULATE(COUNTROWS(" + Selected.Table.DaxObjectFullName + "), ISERROR(" + c.DaxObjectFullName + ")), CALCULATE(COUNTROWS(" + Selected.Table.DaxObjectFullName + "))), \"0%\")");
70
71
var _result =
72
"\nInformation:" + Environment.NewLine +
73
"\n Name: " + c.Name + Environment.NewLine +
74
"\n Description: " + c.Description + Environment.NewLine +
75
"\n FormatString: " + c.FormatString + Environment.NewLine +
76
"\n DataType: " + c.DataType + Environment.NewLine +
77
"\n IsHidden: " + c.IsHidden + Environment.NewLine +
78
Environment.NewLine +
79
80
"\n Blank Rows: " + _blankRowsCount + Environment.NewLine +
81
"\n Blanks (%): " + _percentageBlanks + Environment.NewLine +
82
"\n Rows with Error: " + _errorRowsCount + Environment.NewLine +
83
"\n Errors (%): " + _percentageErrors + Environment.NewLine +
84
Environment.NewLine +
85
86
"\nAnalysis:" + Environment.NewLine +
87
"\n First Date: " + _firstdate + Environment.NewLine +
88
" Description: Earliest date in the selected column" + Environment.NewLine +
89
" DAX Measure: MIN('" + Selected.Table.Name + "'[" + c.Name + "])" + Environment.NewLine + Environment.NewLine +
90
91
"\n Last Date: " + _lastdate + Environment.NewLine +
92
" Description: Latest date in the selected column" + Environment.NewLine +
93
" DAX Measure: LASTDATE('" + Selected.Table.Name + "'[" + c.Name + "])" + Environment.NewLine + Environment.NewLine +
94
95
"\n Earliest Date: " + _earliestDate + Environment.NewLine +
96
" Description: Minimum date value in the entire table" + Environment.NewLine +
97
" DAX Measure: MIN('" + Selected.Table.Name + "'[" + c.Name + "])" + Environment.NewLine + Environment.NewLine +
98
99
"\n Latest Date: " + _latestDate + Environment.NewLine +
100
" Description: Maximum date value in the entire table" + Environment.NewLine +
101
" DAX Measure: MAX('" + Selected.Table.Name + "'[" + c.Name + "])" + Environment.NewLine + Environment.NewLine +
102
103
"\n Number of Days: " + _numberOfDays + Environment.NewLine +
104
" Description: Count of unique days in the selected column" + Environment.NewLine +
105
" DAX Measure: COUNTROWS(VALUES('" + Selected.Table.Name + "'[" + c.Name + "]))" + Environment.NewLine + Environment.NewLine +
106
107
"\n Distinct Date Count: " + _distinctDateCount + Environment.NewLine +
108
" Description: Count of distinct dates in the selected column" + Environment.NewLine +
109
" DAX Measure: DISTINCTCOUNT('" + Selected.Table.Name + "'[" + c.Name + "])" + Environment.NewLine + Environment.NewLine +
110
111
"\n Day of Week Distribution: " + _countSun + " (Sun), " + _countMon + " (Mon), " + _countTue + " (Tue), " + _countWed + " (Wed), " + _countThu + " (Thu), " + _countFri + " (Fri), " + _countSat + " (Sat)" + Environment.NewLine +
112
" Description: Count of occurrences for each day of the week in the selected column" + Environment.NewLine +
113
" DAX Measure: COUNTROWS(FILTER('" + Selected.Table.Name + "', WEEKDAY('" + Selected.Table.Name + "'[" + c.Name + "]) = 1)) & \" (Sun), \" "+ Environment.NewLine + Environment.NewLine;
114
115
_result.ToString().Output();
116
}
117
}
118
if (column.DataType != TabularEditor.TOMWrapper.DataType.String &&
119
column.DataType != TabularEditor.TOMWrapper.DataType.Boolean &&
120
column.DataType != TabularEditor.TOMWrapper.DataType.DateTime)
121
{
122
123
foreach(var c in Selected.Columns)
124
{
125
var _max =
126
EvaluateDax("MAX(" + c.DaxObjectFullName + ")");
127
var _min =
128
EvaluateDax("MIN(" + c.DaxObjectFullName + ")");
129
var _range =
130
EvaluateDax(_max + " - " + _min);
131
var _avg =
132
EvaluateDax("ROUND(AVERAGE(" + c.DaxObjectFullName + "),2)");
133
var _sum =
134
EvaluateDax("SUM(" + c.DaxObjectFullName + ")");
135
var _dist =
136
EvaluateDax("DISTINCTCOUNT(" + c.DaxObjectFullName + ")");
137
var _count =
138
EvaluateDax("COUNT(" + c.DaxObjectFullName + ")");
139
var _countrows =
140
EvaluateDax("FORMAT( COUNTROWS (" + Selected.Table.DaxObjectFullName + "), \"#,##0\" )");
141
var _median =
142
EvaluateDax("MEDIANX(" + Selected.Table.DaxObjectFullName + "," + c.DaxObjectFullName + " )");
143
var _stdev =
144
EvaluateDax("ROUND(STDEV.P(" + c.DaxObjectFullName + " ),2)");
145
var _variance =
146
EvaluateDax("ROUND(VAR.P(" + c.DaxObjectFullName + " ),2)");
147
var _25Perc =
148
EvaluateDax("PERCENTILEX.INC(" + Selected.Table.DaxObjectFullName +", " + c.DaxObjectFullName + ", 0.25)");
149
var _75Perc =
150
EvaluateDax("PERCENTILEX.INC(" + Selected.Table.DaxObjectFullName +", " + c.DaxObjectFullName + ", 0.75)");
151
var _cv =
152
EvaluateDax("DIVIDE(" + _stdev + ", " + _avg + ", 0)");
153
var _blankRowsCount =
154
EvaluateDax("CALCULATE(COUNTROWS(" + Selected.Table.DaxObjectFullName + "), ISBLANK(" + c.DaxObjectFullName + "))");
155
var _percentageBlanks =
156
EvaluateDax("FORMAT(DIVIDE(CALCULATE(COUNTROWS(" + Selected.Table.DaxObjectFullName + "), ISBLANK(" + c.DaxObjectFullName + ")), CALCULATE(COUNTROWS(" + Selected.Table.DaxObjectFullName + "))), \"0%\")");
157
var _errorRowsCount =
158
EvaluateDax("CALCULATE(COUNTROWS(" + Selected.Table.DaxObjectFullName + "), ISERROR(" + c.DaxObjectFullName + "))");
159
var _percentageErrors =
160
EvaluateDax("FORMAT(DIVIDE(CALCULATE(COUNTROWS(" + Selected.Table.DaxObjectFullName + "), ISERROR(" + c.DaxObjectFullName + ")), CALCULATE(COUNTROWS(" + Selected.Table.DaxObjectFullName + "))), \"0%\")");
161
162
var _result =
163
"\nInformation:" + Environment.NewLine +
164
"\n Name: " + c.Name + Environment.NewLine +
165
"\n Description: " + c.Description + Environment.NewLine +
166
"\n FormatString: " + c.FormatString + Environment.NewLine +
167
"\n DataType: " + c.DataType + Environment.NewLine +
168
"\n IsHidden: " + c.IsHidden + Environment.NewLine +
169
"\n Summarization: " + c.SummarizeBy + Environment.NewLine +
170
Environment.NewLine +
171
172
"\n Blank Rows: " + _blankRowsCount + Environment.NewLine +
173
"\n Blanks (%): " + _percentageBlanks + Environment.NewLine +
174
"\n Rows with Error: " + _errorRowsCount + Environment.NewLine +
175
"\n Errors (%): " + _percentageErrors + Environment.NewLine +
176
Environment.NewLine +
177
178
"\nAnalysis:" + Environment.NewLine +
179
"\n Count: " + _count + Environment.NewLine +" (Total count of non-null values)" + Environment.NewLine +
180
" DAX Measure: COUNT(" + "'"+Selected.Table.Name+"'["+c.Name+"]" + ")" + Environment.NewLine + Environment.NewLine +
181
"\n Sum: " + _sum + Environment.NewLine +" (Total sum of values)" + Environment.NewLine +
182
" DAX Measure: SUM(" + "'"+Selected.Table.Name+"'["+c.Name+"]" + ")" + Environment.NewLine + Environment.NewLine +
183
"\n Avg: " + _avg + Environment.NewLine +" (Average value, rounded to 2 decimal places)" + Environment.NewLine +
184
" DAX Measure: ROUND(AVERAGE(" + "'"+Selected.Table.Name+"'["+c.Name+"]" + "), 2)" + Environment.NewLine + Environment.NewLine +
185
"\n Max: " + _max + Environment.NewLine +" (Maximum value)" + Environment.NewLine +
186
" DAX Measure: MAX(" + "'"+Selected.Table.Name+"'["+c.Name+"]" + ")" + Environment.NewLine + Environment.NewLine +
187
"\n Min: " + _min + Environment.NewLine +" (Minimum value)" + Environment.NewLine +
188
" DAX Measure: MIN(" + "'"+Selected.Table.Name+"'["+c.Name+"]" + ")" + Environment.NewLine + Environment.NewLine +
189
"\n Range: " + _range + Environment.NewLine + " (Range between the maximum and minimum values)" + Environment.NewLine +
190
" DAX Measure: MAX(" + "'"+Selected.Table.Name+"'["+c.Name+"]" + ") - MIN(" + "'"+Selected.Table.Name+"'["+c.Name+"]" + ")" + Environment.NewLine + Environment.NewLine +
191
"\n Distinct: " + _dist + Environment.NewLine + " (Count of distinct values)" + Environment.NewLine +
192
" DAX Measure: DISTINCTCOUNT(" + "'"+Selected.Table.Name+"'["+c.Name+"]" + ")" + Environment.NewLine + Environment.NewLine +
193
"\n CountRows: " + _countrows + Environment.NewLine + " (Number of rows in the table)" + Environment.NewLine +
194
" DAX Measure: FORMAT(COUNTROWS(" + "'"+Selected.Table.Name+"'" + "), \"#,##0\")" + Environment.NewLine + Environment.NewLine +
195
"\n Median: " + _median + Environment.NewLine + " (Median value)" + Environment.NewLine +
196
" DAX Measure: MEDIANX(" + "'"+Selected.Table.Name+"'" + ", " + "'"+Selected.Table.Name+"'["+c.Name+"]" + ")" + Environment.NewLine + Environment.NewLine +
197
"\n Standard Deviation: " + _stdev + Environment.NewLine + " (Standard deviation of values, rounded to 2 decimal places)" + Environment.NewLine +
198
" DAX Measure: ROUND(STDEV.P(" + "'"+Selected.Table.Name+"'["+c.Name+"]" + "), 2)" + Environment.NewLine + Environment.NewLine +
199
"\n Variance: " + _variance + Environment.NewLine + " (Variance of values, rounded to 2 decimal places)" + Environment.NewLine +
200
" DAX Measure: ROUND(VAR.P(" + "'"+Selected.Table.Name+"'["+c.Name+"]" + "), 2)" + Environment.NewLine + Environment.NewLine +
201
"\n 25th Percentile: " + _25Perc + Environment.NewLine + " (25th percentile to understand the distribution of values)" + Environment.NewLine +
202
" DAX Measure: PERCENTILEX.INC(" + "'"+Selected.Table.Name+"'" + ", " + "'"+Selected.Table.Name+"'["+c.Name+"]" + ", 0.25)" + Environment.NewLine + Environment.NewLine +
203
"\n 75th Percentile: " + _75Perc + Environment.NewLine + " (75th percentile to understand the distribution of values)" + Environment.NewLine +
204
" DAX Measure: PERCENTILEX.INC(" + "'"+Selected.Table.Name+"'" + ", " + "'"+Selected.Table.Name+"'["+c.Name+"]" + ", 0.75)" + Environment.NewLine + Environment.NewLine +
205
"\n Coefficient of Variation: " + _cv + Environment.NewLine + " (Measures the relative variability of the data, expressed as a percentage of the mean.)" + Environment.NewLine +
206
" DAX Measure: DIVIDE(" + _stdev + Environment.NewLine + ", " + _avg + ", 0)" + Environment.NewLine;
207
208
_result.ToString().Output();
209
}
210
}
211
}
212
213