Power BI 中的 M(Power Query),将参数从列表传递到 SQL 语句

Posted

技术标签:

【中文标题】Power BI 中的 M(Power Query),将参数从列表传递到 SQL 语句【英文标题】:M (Power Query) in Power BI, passing params from a list to SQL statement 【发布时间】:2020-08-05 18:35:16 【问题描述】:

我有一个 Oracle 数据库,其中包含 1000 多个项目和数百万条详细记录。我一次只需要查询大约 6 个项目。我正在尝试编写一个 M 表达式来将我在一个表(称为“项目”)中的 5 个或 6 个项目作为 Where 子句传递给我的查询。该查询看起来不错,SQL 语法完美,但有错误。我正在使用一个函数...fnGetProjects 见下文。

() =>
let
    Source = "'" & Text.Combine(Projects,  "', '") & "'"
in
    Source

这是我的查询..

let
    WhereClause = fnGetProjects(),
    Source = Oracle.Database("gtmb", [HierarchicalNavigation=true, Query="SELECT  p.Proj_ID, p.Proj_Description, p.Proj_Name FROM Project_YTD p where p.Proj_ID IN ("& WhereClause &")"])
in
    Source 

这是我的错误信息...

Formula.Firewall:查询“MyProjects (2)”(步骤“源”)引用 其他查询或步骤,因此它可能无法直接访问数据源。 请重建此数据组合。

我怀疑它与优先级有关......但我认为我阅读使用函数是一种解决方法。我也尝试使用表格和参数以各种形式进行此操作,但没有运气。查询所有项目让我的最终用户等待太久。

任何帮助表示赞赏。

谢谢,

迈克

【问题讨论】:

您是否尝试在 WhereClause 步骤中仅使用 "'" & Text.Combine(Projects, "', '") & "'"?即WhereClause = "'" & Text.Combine(Projects, "', '") & "'" 【参考方案1】:

进入文件,并在“选项和设置”中的文件中。

在那里,进入“数据源设置

点击“编辑权限”。

在编辑权限中,选择“”作为隐私级别。

它应该可以工作。

【讨论】:

谢谢,试过了,还是不行。同样的错误。对我来说,该功能似乎需要先运行,但也许它正在同时运行?不确定...一直在努力解决这个问题。 好的。对不起。您能否提供更多代码元素?你能看看“本机查询”吗?

以上是关于Power BI 中的 M(Power Query),将参数从列表传递到 SQL 语句的主要内容,如果未能解决你的问题,请参考以下文章

使用“List.Zip”替换 Power Query / Power BI / M 代码中的多个列值

在 Power Bi 中使用 Power Query M 的上一周日期

Power BI 中的 Power Query 帮助

Power BI Python 在Power BI Desktop中Python代码如何使用Power Query数据

Power Query / Power BI - 用另一列中的值替换空值

来自 Power Query 的 Power BI Desktop 增量表更新