在超集自定义过滤器中将单个日期过滤器用于日期范围

时间:2020-04-29 22:09:48

标签: filter apache-superset superset

在Superset中,我只想使用单个日期选择,而是将其用于日期范围,例如7天前。 例如: 选择日期:2020-04-18至2020-04-18

预计日期:2020-04-11至2020-04-18 原因是大多数仪表板需要单个日期,但某些必需的时间序列显示最近7天的结果。

这是我在自定义查询中准备的代码。

    SELECT  distinct(dt) FROM mytable
WHERE 
    dt >= date_add('day', -7, from_iso8601_timestamp('{{ to_dttm.isoformat() }}'))
    AND
    dt <= date_add('day', 0, from_iso8601_timestamp('{{ to_dttm.isoformat() }}'))

这是json的结果。它确实在WHERE处添加了额外的查询,它运行通过但只显示了1个日期。

SELECT distinct(dt)  FROM mytable\n
WHERE dt >= date_add('day', -7, from_iso8601_timestamp('2020-04-18T00:00:00'))\n     
AND dt <= date_add('day', 0, from_iso8601_timestamp('2020-04-18T00:00:00'))) AS \"expr_qry\"\n
WHERE \"dt\" >= from_iso8601_timestamp('2020-04-18T00:00:00')\n  
AND \"dt\" <= from_iso8601_timestamp('2020-04-18T00:00:00')\nLIMIT 1000"

请告知。 非常感谢

1 个答案:

答案 0 :(得分:0)

您可以使用Jinja过滤器编写自定义查询。 您可以使用filter_values()在过滤器框中选择选定的值 功能。

{% set date_ref = filter_values('my_date')[0] %}

然后,您可以使用经典的MySql函数编写自定义查询。在查询中,请使用{{}}调用忍者变量,例如

AND date >= DATE_ADD({{date_ref}}, INTERVAL -7 DAYS)