-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBIM-to-TMDL.linq
40 lines (34 loc) · 1.96 KB
/
BIM-to-TMDL.linq
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<Query Kind="Statements">
<NuGetReference Version="19.87.7">Microsoft.AnalysisServices</NuGetReference>
<Namespace>AMO = Microsoft.AnalysisServices</Namespace>
<Namespace>Microsoft.AnalysisServices.Tabular.Extensions</Namespace>
<Namespace>Microsoft.AnalysisServices.Tabular.Serialization</Namespace>
<Namespace>Microsoft.AnalysisServices.Tabular.Tmdl</Namespace>
<Namespace>TOM = Microsoft.AnalysisServices.Tabular</Namespace>
</Query>
typeof(Microsoft.AnalysisServices.Tabular.TmdlSerializer).Assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion.Dump();
var bimPath = Path.Combine(Path.GetDirectoryName(Util.CurrentQueryPath), "Contoso.bim").Dump("BIM Source");
var targetPath = Path.Combine(Path.GetDirectoryName(Util.CurrentQueryPath), "TMDL").Dump("TMDL Destination");
var db = TOM.JsonSerializer.DeserializeDatabase(File.ReadAllText(bimPath), mode: AMO.CompatibilityMode.PowerBI);
MetadataSerializationOptions options = new MetadataSerializationOptionsBuilder(MetadataSerializationStyle.Tmdl)
.WithChildrenMetadata()
.WithInferredDataTypes()
.WithoutRestrictedInformation()
.WithExpressionTrimStyle(TmdlExpressionTrimStyle.TrimTrailingWhitespaces | TmdlExpressionTrimStyle.TrimLeadingCommonWhitespaces)
.WithMetadataOrderHints()
.WithFormattingOptions(new MetadataFormattingOptionsBuilder(MetadataSerializationStyle.Tmdl)
.WithEncoding(Encoding.UTF8)
.WithNewLineStyle(NewLineStyle.WindowsStyle)
.WithTabsIndentationMode()
.WithBaseIndentationLevel(0)
.WithCasingStyle(TmdlCasingStyle.CamelCase)
.GetOptions())
.WithCompatibilityOptions(new MetadataCompatibilityOptionsBuilder()
.WithTargetCompatibilityMode(Microsoft.AnalysisServices.CompatibilityMode.PowerBI)
.WithTargetCompatibilityLevel(1606)
.GetOptions())
.GetOptions();
options.Dump("Serialization Options");
TOM.TmdlSerializer.SerializeDatabaseToFolder(db, targetPath, options);
// Verify:
TOM.TmdlSerializer.DeserializeDatabaseFromFolder(targetPath).Dump();