【问题标题】:PowerPivot DAX query slow with one fact table but not with anotherPowerPivot DAX 查询一个事实表很慢,但另一个事实表却没有
【发布时间】:2015-01-18 06:10:18
【问题描述】:

我有 2 个查找表;成员(83,000 行)和组(2,500 行)。

有 2 个事实表; GroupMembers(190,000 行)和 Metrics(650,000 行)。

我创建了两个独立的模型:

1. Members, Groups and GroupMembers

2. Members, Groups and Metrics

两种模型在事实表 (COUNTROWS) 上只有一个计算度量。如果我在行中引入成员>成员 ID,并在组>组 ID 上进行过滤,则使用 CountRows 作为值;模型 2 执行速度非常快,而模型 1 非常慢。

这是 DAX 查询结果。

型号 1:

模型 2:

两个事实表之间的唯一区别是 GroupMembers 只有 Groups 和 Members 的唯一组合,而 Metrics 表有其他列,因此 Groups 和 Members 组合不是唯一的。

这两个 excel 文件都可以在这里找到:http://1drv.ms/1GdK1WK

请帮忙!

[编辑] 我做了一些进一步的测试,发现如果我在 GroupMembers 中复制数据(即两次加载相同的 190,000 行,因此 GroupID/UserID 组合不是唯一的),性能非常好。去搞清楚! :)

我正在向 MS 开一个支持案例,并将更新此线程。

【问题讨论】:

  • 那是什么接口?
  • 当你说你添加了两次,你的意思是你“取消透视”你的数据,所以你有更多的行和更少的列?
  • Petr,你问的是我发布的图片。那就是 SQL Server Profiler。如果从 PowerPivot 选项卡 > 设置窗口中“为当前 Excel 会话启用 PowerPivot 跟踪”,它将创建一个可以在 SQL Server Profiler 中打开的跟踪文件。
  • Jacob,不,不取消。我做了一个 UNION ALL,这样每一行都被添加了两次。

标签: excel powerpivot dax


【解决方案1】:

来自微软支持团队;显然 UserID int 值对于查询来说太大了。他们给了我一个解决方法来为用户表创建一个身份键列,并将其用作用户和用户组之间的关系。我将解决方法文件发布在 OneDrive http://1drv.ms/1BEEmDJ 的新文件夹中

支持团队将与产品团队讨论根本问题,他们将调查大型 int 列导致性能问题的原因。

【讨论】:

    猜你喜欢
    • 2018-01-03
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    • 2012-04-03
    • 1970-01-01
    • 2017-06-30
    • 2019-01-14
    • 1970-01-01
    相关资源
    最近更新 更多