PowerPivot DAX 查询速度慢,有一个事实 table 但另一个事实则不然
PowerPivot DAX query slow with one fact table but not with another
我有 2 个查找 table;成员(83,000 行)和组(2,500 行)。
有 2 个事实 table; GroupMembers(190,000 行)和 Metrics(650,000 行)。
我创建了两个独立的模型:
1. Members, Groups and GroupMembers
2. Members, Groups and Metrics
这两个模型都只有一个关于事实 table(COUNTROWS)的计算量度。如果我引入 Members>MemberID on Rows 和 Filter on Groups>GroupID,使用 CountRows 作为值;模型 2 执行速度非常快,而模型 1 真的很慢。
这里是 DAX 查询结果。
模型 1:
模型 2:
这两个事实 table 之间的唯一区别是 GroupMembers 只有组和成员的唯一组合,而指标 table 有其他列,因此组和成员组合不是唯一的.
两个 excel 文件都可以在这里找到:http://1drv.ms/1GdK1WK
请帮忙!
[编辑]
我做了一些进一步的测试,发现如果我在 GroupMembers 中复制数据(即两次加载相同的 190,000 行,因此 GroupID/UserID 组合不是唯一的),性能会很好。去搞清楚! :)
我正在打开 MS 的支持案例并将更新此线程。
来自微软支持团队;显然 UserID int 值对于查询来说太大了。他们给了我一个解决方法,为用户 table 创建一个身份键列,并将其用作用户和用户组之间的关系。我将解决方法文件发布到 OneDrive http://1drv.ms/1BEEmDJ
的新文件夹中
支持团队将与产品团队讨论根本问题,他们将调查大型 int 列导致性能问题的原因。
我有 2 个查找 table;成员(83,000 行)和组(2,500 行)。
有 2 个事实 table; GroupMembers(190,000 行)和 Metrics(650,000 行)。
我创建了两个独立的模型:
1. Members, Groups and GroupMembers
2. Members, Groups and Metrics
这两个模型都只有一个关于事实 table(COUNTROWS)的计算量度。如果我引入 Members>MemberID on Rows 和 Filter on Groups>GroupID,使用 CountRows 作为值;模型 2 执行速度非常快,而模型 1 真的很慢。
这里是 DAX 查询结果。
模型 1:
模型 2:
这两个事实 table 之间的唯一区别是 GroupMembers 只有组和成员的唯一组合,而指标 table 有其他列,因此组和成员组合不是唯一的.
两个 excel 文件都可以在这里找到:http://1drv.ms/1GdK1WK
请帮忙!
[编辑] 我做了一些进一步的测试,发现如果我在 GroupMembers 中复制数据(即两次加载相同的 190,000 行,因此 GroupID/UserID 组合不是唯一的),性能会很好。去搞清楚! :)
我正在打开 MS 的支持案例并将更新此线程。
来自微软支持团队;显然 UserID int 值对于查询来说太大了。他们给了我一个解决方法,为用户 table 创建一个身份键列,并将其用作用户和用户组之间的关系。我将解决方法文件发布到 OneDrive http://1drv.ms/1BEEmDJ
的新文件夹中支持团队将与产品团队讨论根本问题,他们将调查大型 int 列导致性能问题的原因。