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 Python 在Power BI Desktop中Python代码如何使用Power Query数据