【问题标题】:PowerBI generates an SQL query that is too deeply nested. How to fix?PowerBI 生成嵌套太深的 SQL 查询。怎么修?
【发布时间】:2019-02-27 22:00:38
【问题描述】:

在 PowerBI 查询生成器中,我创建了以下查询:

let
    SV_DATA = Sql.Database("my.ip.add.ress", "SV_DATA", [CreateNavigationProperties=false]),
    ImportanceTables = Table.SelectRows(SV_DATA, each Text.EndsWith([Name], "_IMPORTANCE_RATINGS")),
    Importances = Table.Combine(ImportanceTables[Data])
in
    Importances

如您所见,该查询查找所有以_IMPORTANCE_RATINGS 结尾的表,并将它们组合成一个表。 (这是必要的,因为有数以千计的*_IMPORTANCE_RATINGS 表,它们会随着时间的推移而被添加和删除;因此我无法对它们进行硬编码)。

预览效果很好。

但是,当我尝试在报告中应用查询时,我从 SQL Server 收到以下错误:

未能将修改保存到服务器。返回的错误:'OLE DB 或 ODBC 错误:[DataSource.Error] Microsoft SQL:您的 SQL 语句的某些部分嵌套得太深。重写查询或将其分解为更小的查询..'。

但是,我看不出有任何方法可以简化我在 PowerBI 中的工作。似乎是 PowerBI 本身让 SQL 查询过于复杂。

建议?

谢谢, 直流

【问题讨论】:

  • ImportanceTables的列是否统一?这些表的数量是多少?
  • 是的,列是统一的,但以防万一我明确指出:{"PROG_ID", "RESPONSE_ID", "COMPOSITE", "PRACTICE_NUMBER", "IMPORTANCE_RATING", "CHANNEL", "BREAKOUT", "SOURCE"}。每个表有大约 10K 行。
  • 那我会避免这样做。我想它会延长 SQL 查询并使其更加复杂。但是我在这里可能错了。
  • 这样的表有多少?
  • @Eugene:你刚刚重申了我的问题:鉴于我的实现由于 SQL 过于嵌套而无法正常工作,我的替代方案是什么?顺便说一句,您在下面的答案不起作用,因为ImportanceTable[Data] 不是表格列表。

标签: powerbi powerquery


【解决方案1】:

试试这个:

Importances = Table.Combine(ImportanceTables[Data], {"PROG_ID", "RESPONSE_ID", "COMPOSITE", "PRACTICE_NUMBER", "IMPORTANCE_RATING", "CHANNEL", "BREAKOUT", "SOURCE"} )

甚至

Importances = Table.Combine(ImportanceTables[Data])

,如果表中的列是统一的。

Table.Combine() 接受表列表作为第一个参数。

但是,如果您的餐桌数量过多,您可能会面临其他问题。

【讨论】:

  • 好吧,好消息:您的建议简化了我的查询。我会尽快更新这个问题。坏消息:仍然出现“嵌套太深”错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-04
  • 2013-05-10
  • 2022-08-12
  • 2012-10-26
  • 1970-01-01
相关资源
最近更新 更多