【问题标题】:Condition IF In Power Query's Advanced EditorPower Query 高级编辑器中的条件 IF
【发布时间】:2016-04-05 05:07:12
【问题描述】:

我有一个名为field的字段,我想看看它是否为空,但查询时出错,我的代码是这样的:

let
    Condition= Excel.CurrentWorkbook(){[Name="test_table"]}[Content],
    field= Condition{0}[fieldColumn],
    query1="select * from students",
    if field <> null then query1=query1 & " where id = '"& field &"',
    exec= Oracle.Database("TESTING",[Query=query1])
in
    exec

但我在条件中遇到错误,您确定错误吗? 我得到了Expression.SyntaxError: Token Identifier expected.

【问题讨论】:

标签: excel if-statement powerbi powerquery


【解决方案1】:

您需要将 if 行分配给一个变量。每 M 行需要以一个赋值开头:

let
Condition= Excel.CurrentWorkbook(){[Name="test_table"]}[Content],
field= Condition{0}[fieldColumn],
query1="select * from students",
query2 = if field <> null then query1 & " some stuff" else " some other stuff",
exec= Oracle.Database("TESTING",[Query=query2])
in
exec

在 query2 中,您可以构建 select 语句。我简化了它,因为你也和双引号有冲突。

【讨论】:

  • @SergeyLossev - 您编辑了这个 17 个月大的答案以更改单个空格?变得真实,伙计!停止寻找布朗尼点。而是做一些有用的事情。
【解决方案2】:

我想你正在寻找:

if Not IsNull(field) then ....

您可能还必须使用 IsEmpty() 或“field is Not Nothing”检查某些数据类型。取决于数据类型和您使用的内容。

要进行故障排除,最好尝试设置断点并定位错误发生的位置并观察变量以防止出现该特定值。

【讨论】:

  • 还没有,我仍然有:Expression.SyntaxError: Token Identifier expected.
  • 这听起来像是查询格式问题,而不是 Excel 问题。我知道 sql,但这超出了我的专业范围。
  • 我不这么认为,因为我可以手动添加查询并运行它,它必须是 Power 查询中的 sintaxis 的东西,我不那么强
  • 您似乎正在尝试通过“参数化列表”运行查询,但是您将其构建为没有动态参数的单个固定字符串。那么可能对 Oracle.Database 的调用不正确?
  • Pablo 使用的查询语言是 Power Query (M),它往往与其他语言不同。 NotIsNull 不是 M 语言的一部分,检查 null 的正确方法是 field &lt;&gt; null
【解决方案3】:

为了满足这个要求,我将使用 PQ UI 构建一个新的查询,从 Oracle 中选择学生表/视图,然后使用 UI 过滤任何值的 [id] 列。

然后在高级编辑器中,我将使用 Condition + field 步骤中的代码编辑生成的 FilteredRows 行,例如

FilteredRows = Table.SelectRows(TESTING_students, each [id] = Excel.CurrentWorkbook(){[Name="test_table"]}{0}[fieldColumn])

这是对生成脚本的微小改动,而不是尝试从头开始编写整个内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    相关资源
    最近更新 更多