SQL 資料集參數寫法範例

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 YAER(銷售日期)='${年份}'正文
年月

SELECT * FROM 互網路連結存取資料 WHERE YAER(銷售日期)='${年份}' 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在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙