Tabular Editor: Info_Helper
public
Mar 01, 2024
Never
146
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