我正在尝试创建一个供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创建模型表,但我想先检查一下,然后再消失几天。
答案 0 :(得分:0)
避免讨论允许用户动态向模型中添加表和数据是否是一个好主意,对此问题的答案如下:
当然!假设您使用的是SQL Server 2016(或更高版本),有两种方法可以以编程方式更改模型(添加表,删除列,更改度量表达式等)。
您可以使用PowerShell,C#或SSIS中的脚本任务通过TMSL或TOM将实际更改应用于模型。