【发布时间】: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, "', '") & "'"
标签: powerbi powerquery m