Quick BI使用MaxCompute数据源表创建数据集,如何使用SQL参数,实现查询控件查询固定天数前的数据内容?
更新时间:
问题描述
使用MaxCompute数据源,在自定义SQL创建数据集时,想通过对参数进行日期计算函数的操作,实现在仪表板中查询180天前的数据内容,结果运行SQL报错如下图:
问题原因
- 自定义SQL如下:
SELECT
*
FROM
API_TEST_DATA_COMPANY
WHERE
${REPORT_DATE:DATE_ADD(REPORT_DATE,-180)}
- 通过排查上述SQL,发现SQL参数这里的书写有多处错误:
${REPORT_DATE:DATE_ADD(REPORT_DATE,-180)}
- 由于是MaxCompute数据源,这里的函数应该使用DATEADD()。
- 函数格式错误,而且需要在字段名上加函数而不是参数名,
${字段名:参数名}
。 - 日期数值错误,查询控件查询到的内容为使用函数后的字段名,例如查询内容为20210101,那么:
REPORT_DATE+180=20210101
,REPORT_DATE为20210101前180天,查的内容是180天前的。REPORT_DATE-180=20210101
,REPORT_DATE为20210101后180天,查的内容是180天后的。
这里需要区分清楚。
- 下图为MaxCompute数据源的日期计算函数用法:
解决方案
由于是需要查询180天前的数据,则意味着查询控件中选择的日期为REPORT_DATE+180
天,所以天数应为180而不是-180。SQL参数正确写法如下:
${DATEADD(REPORT_DATE, 180, 'DD'):REPORT_DATE}
适用于
- Quick BI
说明:本文适用于数据集模块。
反馈
- 本页导读
文档反馈