forked from m-kovalsky/Tabular
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRemoveUnnecessaryColumns_MemorySavings.cs
22 lines (18 loc) · 1.15 KB
/
RemoveUnnecessaryColumns_MemorySavings.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var sb = new System.Text.StringBuilder();
string newline = Environment.NewLine;
string ann = "Vertipaq_ColumnSize";
long tot = 0;
// Header
sb.Append("TableName" + '\t' + "ColumnName" + '\t' + "ColumnSize" + newline );
foreach (var c in Model.AllColumns.Where(a => (a.IsHidden || a.Table.IsHidden) && a.ReferencedBy.Count() == 0 && ! a.UsedInRelationships.Any() && ! a.UsedInSortBy.Any() && ! a.UsedInHierarchies.Any()
&& (! a.Table.RowLevelSecurity.Any(b => b != null && b.IndexOf("[" + a.Name + "]", StringComparison.OrdinalIgnoreCase) >= 0 ))
&& (! Model.Roles.Any(c => c.RowLevelSecurity.Any(d => d != null && (d.IndexOf(a.Table.Name + "[" + a.Name + "]", StringComparison.OrdinalIgnoreCase) >=0 || d.IndexOf("'" + a.Table.Name + "'[" + a.Name + "]", StringComparison.OrdinalIgnoreCase) >=0))))).OrderBy(a => a.Table.Name).ThenBy(a => a.Name))
{
string tableName = c.Table.Name;
string colName = c.Name;
string annValue = c.GetAnnotation(ann);
sb.Append(tableName + '\t' + colName + '\t' + annValue + newline);
tot = tot + Convert.ToInt64(annValue);
}
tot.Output(); // Value shown in bytes
sb.ToString().Output();