【问题标题】:How to write a valid custom SQL metric in Apache Superset? I need to write a metric like: SUM(col_name)/2700000.0 but I am getting error如何在 Apache Superset 中编写有效的自定义 SQL 指标?我需要编写一个指标,例如: SUM(col_name)/2700000.0 但我收到错误
【发布时间】:2019-07-09 19:34:24
【问题描述】:

我想在 Apache Superset Big Number 可视化类型中使用自定义 sql 指标。我想使用如下指标:SUM(col_name)/2700000.0,但它不起作用。

我尝试了 SUM(col_name) 并且它有效。我也尝试过 SUM(col_name)/COUNT(col_name) 这也有效。

我正在尝试使用的指标: SUM(col_name)/2700000.0

我希望该指标能够正常工作,但我收到了错误:

ORA-00904:“col_name”:标识符无效

当我点击汉堡图标并查看查询时,我可以看到:

SELECT SUM(col_name)/2700000.0
FROM
  (SELECT SUM(col_name)/2700000.0 AS "SUM(col_name)/2700000.0"
   FROM mytable
   ORDER BY SUM(col_name)/2700000.0 DESC)
WHERE ROWNUM <= 50000;

【问题讨论】:

    标签: superset apache-superset


    【解决方案1】:

    我假设这是在 Oracle 引擎上。 SQLAlchemy 中的 Superset 或 Oracle 方言中似乎存在一个错误,导致外部查询在不带引号的情况下呈现。通过将度量的别名更改为不带特殊字符的所有大写字母,例如MY_SUM,查询应该成功完成。

    编辑:此错误已在 SQLAlchemy 1.3.5 中修复,并且自 2019 年 6 月 19 日起对 Superset 主分支进行了必要的更改。

    【讨论】:

    • 将字符更改为全部大写并没有帮助。有什么帮助是给指标命名(例如“ABC”),所以发送到 Oracle 的查询有正常的别名: SELECT "ABC" FROM (SELECT SUM(col_name)/2700000 AS "ABC" FROM mytable ORDER BY SUM(col_name) )/2700000 DESC) 其中 ROWNUM
    【解决方案2】:

    似乎在使用自定义 SQL 指标时,您必须为指标命名(例如“ABC”)。然后指标得到一个别名“ABC”并且查询工作正常:

    选择“ABC” 从 (选择总和(col_name)/2700000 作为“ABC” 来自我的表 ORDER BY SUM(col_name)/2700000 DESC) WHERE ROWNUM

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 2017-06-15
      • 2016-09-23
      • 1970-01-01
      • 2021-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多