1. 概述
1.1 版本
FineBI版本 | 功能變動 |
---|---|
6.0 | - |
6.0.16 | 過濾組件綁定參數功能優化 1)參數顯示優化:
2)參數綁定優化
|
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> | 正文 |