SSAS以编程方式创建表

时间:2018-07-23 16:04:40

标签: ssas ssas-tabular

我正在尝试创建一个供Power BI Embedded使用的SSAS表格模型,以使用EAV数据库的应用程序为数据建模(供参考:https://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model)。

我已经设法映射出表集,使用M个查询来按需成型和旋转表。但是我面临的问题是我们的应用程序允许用户创建新实体,因此源数据是可变的。

例如,假设数据有两个表:

EntityTypes
Car
Boat
Plane

这些实体属性保存在另一个表中

EntityID    EntityType  Attribute       Value
1           Car         #Seats          4
1           Car         Transmission    Manual
1           Car         Make            Ford
2           Car         Make            Honda
2           Car         Transmission    Auto
3           Boat        #Engines        2
3           Boat        Berths          4
4           Plane       EngineType      Jet
4           Plane       Manufacturer    Boeing
5           Boat        #Engines        2
6           Plane       #Engines        4

虽然我可以通过旋转在SSAS中创建汽车表,船表和飞机表,但我面临的问题是,当应用程序用户创建新实体时,如何在模型中创建新表来处理更改?我试图避免我们的支持团队中的人员在发生这种情况时需要编辑SSAS模型。

有人知道在SSAS模型中动态创建表的方法,以便在处理过程中在EntityType表中出现新行时,在模型中创建新表的方法吗?

我目前的理论是在SSIS中拆分EAV表,并在循环中使用TMSL创建模型表,但我想先检查一下,然后再消失几天。

1 个答案:

答案 0 :(得分:0)

避免讨论允许用户动态向模型中添加表和数据是否是一个好主意,对此问题的答案如下:

当然!假设您使用的是SQL Server 2016(或更高版本),有两种方法可以以编程方式更改模型(添加表,删除列,更改度量表达式等)。

您可以使用PowerShell,C#或SSIS中的脚本任务通过TMSL或TOM将实际更改应用于模型。