【问题标题】:How to avoid NULL check in JOIN condition in Tableau如何避免 Tableau 中 JOIN 条件中的 NULL 检查
【发布时间】:2022-03-11 07:04:20
【问题描述】:

我正在尝试更改 Tableau 仪表板的后端数据库。 Tableau 正在生成具有以下条件的 JOIN SQL: ON a.col1 = b.col2 OR (a.col1 is null and b.col2 is null) 有没有办法避免出现OR (a.col1 is null and b.col2 is null) 条件?我用列名尝试了 ZN 和 IFNULL ,但仍然添加了这样的条件。 Druid DB 仅在相等条件下支持 JOIN,并且由于 IS NULL 检查,查询失败。谢谢

    标签: druid tableau-desktop


    【解决方案1】:

    Tableau 将 NULL 视为一个值,而在 SQL 中并非如此,它是一个值的缺失。根据 https://help.tableau.com/current/pro/desktop/en-us/joining_tables.htm 在名为“关于连接键中的空值”的部分中,它提到了一个设置“将空值连接为空值”的选项,这可能在您的情况下已打开。

    在德鲁伊方面,如果您想将 NULL 视为默认值,那么可能的方法是将 NULL 转换为特殊值(例如 -1 或超出正常值范围的任何值)并让该值存在在两个表上而不是 NULL。

    在 Druid 摄取时,您可以使用:

       ...
       "transformSpec": {
            "transforms": [
              {
                "type": "expression",
                "name": "col1",
                "expression": "nvl( col1, -1)"
              }
            ]
       ...
    

    这会将col1 替换为计算列col1(这称为阴影),该列已将NULL 值替换为-1

    有关transformSpec 和可用表达式函数的更多信息,您可以访问:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-31
      • 1970-01-01
      相关资源
      最近更新 更多