条件IF在Power Query的高级编辑器中

时间:2015-11-04 18:14:46

标签: excel if-statement powerbi powerquery

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

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.

3 个答案:

答案 0 :(得分:5)

您需要将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语句。我简化了它,因为你也与双引号有冲突。

答案 1 :(得分:0)

我认为您正在寻找:

if Not IsNull(field) then ....

您可能需要使用IsEmpty()或&#39;字段检查的某些数据类型是“无”#39;太。取决于数据类型和您正在使用的内容。

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

答案 2 :(得分:0)

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

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

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

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