检查 Power Query table 是否为空然后 return 其他内容

Check if Power Query table is Empty then return something else

我有一个 Power Query table,它从 ODBC 连接中提取数据,过滤该数据,然后 return 将其输入 excel。然后,我将几列添加到 excel 中的 table 中,这些列使用 Excel networkdays 公式。我的问题是 Power Query table 偶尔会为空,当为空时,NetWorkdays 公式会从 excel table 中消失。

我的问题是这样的。有没有一种方法可以检查 Power Query 是否为空和 return 0 或其他可以防止 excel 单元格中的公式消失的方法,或者可以防止 excel 删除的方法公式的如果 table 为空?

我找到了一种方法,如果查询结果中没有数据,Power Query 将 return 一个空行,但这是一种变通方法。

  1. 在工作簿中创建一个 table,它与 Power Query return 编辑的 table 具有完全相同的列(不包括您为 NETWORKDAYS 添加的列公式)。 table 应该只有一行,可以为空。
  2. 从您刚刚创建的 Table 创建一个新查询并将您的 ODBC 查询附加到它。
  3. 从 1 添加索引(这将使我们能够识别您的查询中的哪一行来自您创建的 table,以便我们可以在您的 ODBC 查询 return 行时将其过滤掉)
  4. 创建一个 ODBC 查询的副本。这样我们就可以确定查询是否 returning 行。
  5. 在查询编辑器中打开副本。添加名为 "Group" 的自定义列 使用公式 ="Group" 添加每行具有 "Group" 的列。
  6. 在“转换”选项卡上,对您在第 3 步中创建的组列执行分组依据和分组,并使用名为“计数”的新列和“计数行”操作。这将 return 一行 table 两列(分组和计数)。
  7. 使用此公式添加另一个自定义列 =if [Count]>0 then 1 else 0
  8. 现在返回到您在步骤 2-3 中创建的附加查询,并将其与您在步骤 4-7 中创建的查询合并。将它合并到索引列(来自您的步骤 2-3 查询)和您在步骤 7 中添加的自定义列(到您的步骤 4-7 查询)。请务必使用 Join Kind Left Anti(这只会 return 在第二个查询中没有匹配的行。

最后,如果 ODBC 查询中没有数据 return,它将加载您在步骤 1 中创建的 table 中的行。如果 ODBC 中有数据查询,第 1 步 table 中的行将被 Left Anti Join 过滤掉。

您可以编辑查询并使用“if”函数,例如

let
    #"Some Result" = if not List.IsEmpty(#"Some List") then
            #"Some List"
        else
            {"define","some","default","list","here"}
in
    #"Some Result"