反馈已提交

网络繁忙

您正在浏览的是 FineBI6.0 帮助文档,点击跳转至: FineBI5.1帮助文档

SQL 数据集参数写法示例

  • 文档创建者:Roxy
  • 历史版本:14
  • 最近更新:April陶 于 2024-01-24
  • 1. 概述

    1.1 版本

    FineBI版本
    功能变动
    6.0-
    6.0.16

    过滤组件绑定参数功能优化

    1)参数显示优化:

    • 只显示主题内数据源包含的参数,不再显示与主题无关的参数;

    • 参数显示参数来源路径和参数名,方便定位参数来源;

    • 参数展示使用双层目录树,展示效果更清晰;

    2)参数绑定优化

    • 支持一个过滤控件绑定多个SQL参数,绑定多个参数后,所有绑定参数都受过滤控件值的控制

    • 同一个仪表板的过滤组件设置绑定SQL参数时,不能选择在该仪表板中已经被绑定过的参数

    1.2 功能简介

    本文提供 实时数据 中使用 SQL 数据集参数的 SQL 写法示例。

    注:不同数据库的写法不同,本文仅提供参考示例。

    1.3 注意事项

    1)where 1=1 表示条件永真,防止没有之后的参数条件时,where 多出而导致出错。

    2)<parameter> and </parameter>该添加的parameter用于在中间参数为空时,获取所有值。 可用于「文本参数」「数值参数」和「日期参数」。

    3)数据准备 sql 表参数中,年月参数、年季度参数、年月区间参数中的月份和季度参数类型为文本类型,取值为(1~12)和(1~4),不可以写成 01 这种格式的,否则仪表板中的控件读出数据会不正确。

    2.Microsoft SQL Server

    2.1 日期类参数

    日期类型SQL 示例
    推荐设置的参数类型
    年份SELECT * FROM 互联网访问数据 WHERE YEAR(销售日期)='${年份}'文本
    年月

    SELECT * FROM 互联网访问数据 WHERE YEAR(销售日期)='${年份}' and month(销售日期)='${月份}'

    文本
    日期
    SELECT * FROM 互联网访问数据 WHERE CAST(统计日期 as varchar) in ('${日期}')日期
    日期区间SELECT * FROM 互联网访问数据 WHERE 统计日期 between '${起始日期}' and '${结束日期}'日期
    年月区间

    SELECT * FROM 互联网访问数据 WHERE format(统计日期,'yyyyMM') >=concat('${开始年份}',case when '${开始月份}'>9 then '${开始月份}'else concat(0,'${开始月份}') end ) and format(统计日期,'yyyyMM') <=concat('${截至年份}',case when '${截至月份}'>9 then '${截至月份}'else concat(0,'${截至月份}') end )

    文本
    年季度SELECT * FROM 互联网访问数据 WHERE CAST(YEAR(注册时间) as varchar) = '${年份}' and CAST(FLOOR((MONTH(注册时间)+2)/3) as varchar) = '${季度}'文本

    2.2 文本类参数

    文本类型SQL 示例推荐设置的参数类型

    参数只能取一个值

    SELECT * FROM 互联网访问数据 WHERE  合同类型='${文本参数}'文本
    参数可以取多个值SELECT * FROM 互联网访问数据 WHERE  合同类型 in ('${文本参数}')文本
    当参数为空时,显示全部,参数有值时,显示参数值

    select *  from new_dian  where  1=1 ${if(len(所属大区2) == 0,"","and  所属大区 in ('" + 所属大区2 + "')")}

    或者:select * from new_dian where 1=1 <parameter> and 所属大区 in ('${所属大区}')</parameter>

    文本

    3. Oracle(teradata类似)

    3.1 日期类参数

    日期类型SQL 示例
    推荐设置的参数类型
    年份

    SELECT * FROM 互联网访问数据 WHERE TO_CHAR("销售日期,"'YYYY')='${年份A}'

    文本
    年月

    SELECT * FROM new_salesdetail WHERE TO_CHAR("销售日期",'YYYY')='${年份}' and EXTRACT(MONTH FROM "销售日期")='${月份}'

    文本
    日期

    SELECT * FROM new_salesdetail WHERE TO_CHAR("销售日期",'YYYY-MM-DD') in ('${日期参数}')

    日期
    日期区间

    SELECT * FROM new_salesdetail WHERE TO_CHAR("销售日期",'YYYY-MM-DD') between '${起始日期}' and '${结束日期}'

    日期
    年月区间

    SELECT * FROM new_salesdetail  WHERE TO_CHAR("销售日期",'YYYYMM') >=concat('${开始年份}',case when '${开始月份}'>9 then '${开始月份}'else concat(0,'${开始月份}') end ) and TO_CHAR("销售日期",'YYYYMM') <=concat('${截止年份}',case when '${截止月份}'>9 then '${截止月份}' else concat(0,'${截止月份}') end )

    文本
    年季度

    SELECT * FROM DEMO_CONTRACT WHERE TO_CHAR("注册时间",'YYYY')='${年份}' and FLOOR((EXTRACT(MONTH FROM "注册时间")+2)/3)='${季度}'

    文本



    3.2 文本类参数

    文本类型SQL 示例推荐设置的参数类型

    参数只能取一个值

    SELECT * FROM demo_contract WHERE "合同类型"='${文本参数}'

    文本
    参数可以取多个值

    SELECT * FROM demo_contract WHERE "合同类型" in ('${文本参数}')

    文本
    当参数为空时,显示全部,参数有值时,显示参数值

    SELECT * FROM demo_contract WHERE 1=1 <parameter> and "合同类型" in ('${文本参数}') </parameter>

    文本/日期/数值

    4. Presto

    4.1 日期类参数

    日期类型SQL 示例
    推荐设置的参数类型
    年份

    SELECT * FROM new_salesdetail WHERE cast(year(销售日期) as varchar)='${年份}'

    文本
    年月

    SELECT * FROM new_salesdetail WHERE TO_CHAR("销售日期",'yyyy')='${年份}' and cast(EXTRACT(MONTH FROM "销售日期") as varchar)='${月份}'

    文本
    日期

    SELECT * FROM new_salesdetail WHERE TO_CHAR("销售日期",'yyyy-mm-dd') in ('${日期参数}')

    日期
    日期区间

    SELECT * FROM new_salesdetail WHERE TO_CHAR("销售日期",'yyyy-mm-dd') between '${起始日期}' and '${结束日期}'

    日期
    年月区间

    SELECT * FROM DEMO_CONTRACT WHERE TO_CHAR("注册时间",'yyyymm') >=concat('${开始年份}',case when cast('${开始月份}' as tinyint)>9 then '${开始月份}' else concat('0','${开始月份}') end ) and TO_CHAR("注册时间",'yyyymm') <=concat('${截至年份}',case when cast('${截至月份}' as tinyint)>9 then '${截至月份}' else concat('0','${截至月份}') end )

    文本
    年季度

    SELECT * FROM DEMO_CONTRACT WHERE TO_CHAR("注册时间",'yyyy')='${年份}' and cast(FLOOR((EXTRACT(MONTH FROM "注册时间")+2)/3) as varchar)='${季度}'

    文本

    4.2 文本类参数

    文本类型SQL 示例推荐设置的参数类型

    参数只能取一个值

    SELECT * FROM demo_contract WHERE "合同类型"='${文本参数}'

    文本
    参数可以取多个值

    SELECT * FROM demo_contract WHERE "合同类型" in ('${文本参数}')

    文本
    当参数为空时,显示全部,参数有值时,显示参数值

    SELECT * FROM demo_contract WHERE 1=1 <parameter> and "合同类型" in ('${文本参数}') </parameter> 用于

    文本

    5. Postgresql

    5.1 日期类参数

    日期类型SQL 示例
    推荐设置的参数类型
    年份

    SELECT * FROM new_salesdetail WHERE TO_CHAR("销售日期",'YYYY')='${年份A}'

    文本
    年月

    SELECT * FROM new_salesdetail WHERE TO_CHAR("销售日期",'YYYY')='${年份}' and EXTRACT(MONTH FROM "销售日期")='${月份}'

    文本
    日期

    SELECT * FROM new_salesdetail WHERE TO_CHAR("销售日期",'YYYY-MM-DD') in ('${日期参数}')

    日期
    日期区间

    SELECT * FROM new_salesdetail WHERE TO_CHAR("销售日期",'YYYY-MM-DD') between '${起始日期}' and '${结束日期}'

    日期
    年月区间

    SELECT * FROM DEMO_CONTRACT WHERE TO_CHAR("注册时间",'yyyymm') >=concat('${开始年份}',case when cast('${开始月份}' as tinyint)>9 then '${开始月份}' else concat('0','${开始月份}') end ) and TO_CHAR("注册时间",'yyyymm') <=concat('${截至年份}',case when cast('${截至月份}' as tinyint)>9 then '${截至月份}' else concat('0','${截至月份}') end )

    文本
    年季度

    SELECT * FROM DEMO_CONTRACT WHERE TO_CHAR("注册时间",'YYYY')='${年份}' and FLOOR((EXTRACT(MONTH FROM "注册时间")+2)/3) ='${季度}'

    文本

    5.2 文本类参数

    文本类型SQL 示例推荐设置的参数类型

    参数只能取一个值

    SELECT * FROM demo_contract WHERE "合同类型"='${文本参数}'

    文本
    参数可以取多个值

    SELECT * FROM demo_contract WHERE "合同类型" in ('${文本参数}')

    文本
    当参数为空时,显示全部,参数有值时,显示参数值

    SELECT * FROM demo_contract WHERE 1=1 <parameter> and "合同类型" in ('${文本参数}') </parameter>

    文本

    6. APACHE IMPALA

    6.1 日期类参数

    日期类型SQL 示例
    推荐设置的参数类型



    年份

    SELECT * FROM xxxx WHERE cast(year(销售日期) as STRING)='${年份}'

    文本
    年月

    SELECT * FROM xxxx WHERE cast(year(销售日期) as STRING)='${年份}' and cast(month(销售日期) as STRING)='${月份}'

    文本
    日期

    SELECT * FROM xxxx WHERE 注册时间 in ('${日期参数}')

    日期
    日期区间

    SELECT * FROM xxxx WHERE 注册时间 between '${起始日期}' and '${结束日期}'

    日期
    年月区间

    SELECT * FROM xxxx WHERE TO_CHAR("注册时间",'yyyymm') >=concat('${开始年份}',case when cast('${开始月份}' as tinyint)>9 then '${开始月份}' else concat('0','${开始月份}') end ) and TO_CHAR("注册时间",'yyyymm') <=concat('${截至年份}',case when cast('${截至月份}' as tinyint)>9 then '${截至月份}' else concat('0','${截至月份}') end )

    文本
    年季度

    SELECT * FROM xxxx WHERE cast(year(注册时间) as STRING)='${年份}' and cast(truncate((month(注册时间)+2)/3) as STRING)='${季度}'


    文本

    6.2 文本类参数

    文本类型SQL 示例推荐设置的参数类型

    参数只能取一个值

    SELECT * FROM demo_contract WHERE 合同类型='${文本参数}'

    文本
    参数可以取多个值

    SELECT * FROM demo_contract WHERE 合同类型 in ('${文本参数1}')

    文本
    当参数为空时,显示全部,参数有值时,显示参数值

    SELECT * FROM demo_contract WHERE 1=1 <parameter> and 合同类型 in ('${文本参数}') </parameter>

    文本

    7. ClickHouse

    7.1 日期类参数

    日期类型SQL 示例
    推荐设置的参数类型
    年份

    SELECT * FROM xxxx WHERE toString(toYear(注册时间)) ='${年份}'

    文本
    年月

    SELECT * FROM xxxx WHERE toString(toYear(注册时间)) ='${年份}' and toString(toMonth(注册时间)) ='${月份}'

    文本
    日期

    SELECT * FROM xxxx WHERE 注册时间 in ('${日期参数}')

    日期
    日期区间

    SELECT * FROM xxxx WHERE 注册时间 between '${起始日期}' and '${结束日期}'

    日期
    年月区间

    SELECT * FROM xxxx WHERE TO_CHAR("注册时间",'yyyymm') >=concat('${开始年份}',case when cast('${开始月份}' as tinyint)>9 then '${开始月份}' else concat('0','${开始月份}') end ) and TO_CHAR("注册时间",'yyyymm') <=concat('${截至年份}',case when cast('${截至月份}' as tinyint)>9 then '${截至月份}' else concat('0','${截至月份}') end )

    文本
    年季度

    SELECT * FROM xxxx WHERE toString(toYear(注册时间))='${年份}' and toString(floor((toMonth(注册时间)+2)/3))='${季度}'

    文本

    7.2 文本类参数

    文本类型SQL 示例推荐设置的参数类型

    参数只能取一个值

    SELECT * FROM demo_contract WHERE "合同类型"='${文本参数}'

    文本
    参数可以取多个值

    SELECT * FROM demo_contract WHERE "合同类型" in ('${文本参数}')

    文本
    当参数为空时,显示全部,参数有值时,显示参数值

    SELECT * FROM demo_contract WHERE 1=1 <parameter> and "合同类型" in ('${文本参数}') </parameter>

    文本

    附件列表


    主题: 制作仪表板
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持