在數據分析中,一些復雜的邏輯或模型可通過自定義SQL創建數據表。并且自定義SQL支持傳參,可滿足更復雜多變的分析場景。
前提條件
您已獲取數據,請參見連接數據源。
使用限制
API數據源不支持自定義SQL。
輸入SQL代碼
您可以通過以下2種方式添加自定義SQL。
進入自定義SQL頁面。
入口1:在數據源頁面,單擊右上角的SQL創建數據集。
入口2:數據集編輯頁面,在左側面板選擇數據源,畫布中沒有任何數據表時,單擊畫布中的使用SQL代碼創建第一張表或左側面板中的SQL代碼創建表。
輸入SQL代碼后,單擊運行。
SQL示例如下:
SELECT report_date, order_level, shipping_type, area, price, order_number from company_sales_record where $expr{report_date :report_date} and $expr{order_level :order_level} and $expr{order_number :order_number}
運行成功后,您可以在運行結果頁簽,看到結果預覽。
單擊確認編輯。
保存自定義SQL創建的數據集。
修改SQL代碼
您可以通過以下2種方式修改SQL代碼:
鼠標懸浮至畫布的表上,單擊編輯代碼圖標。
單擊畫布上的目標表,在右側的面板中,單擊編輯代碼。
占位符
Quick BI提供占位符的方式進行傳參,在查看報表并進行數據分析的過程中,您可以通過查詢控件把占位符的值傳到SQL中,從而實現數據的靈活分析。Quick BI支持值占位符和表達式占位符,您可以按照需求進行配置。
類型 | 描述 | 使用場景 | 格式 |
值占位符 | 可通過儀表板上的查詢控件傳入一個值、一組值。 說明 當占位符是日期時,需要選擇具體的日期格式,來控制傳入值的格式。 | 適用于大部分需要傳參的場景。 |
|
表達式占位符 | 可通過儀表板上的查詢控件傳入一個條件。 | 當儀表板上的篩選條件中,用戶可以自由修改篩選方式,需要使用表達式占位符,將整個篩選條件都傳入SQL。 例如下圖儀表板用戶可設置 |
|
配置方式
根據業務需要寫SQL,加入占位符。
在SQL代碼編輯頁面,單擊占位符管理。
在占位符管理面板,配置以下占位符并單擊確定。
配置項請參見占位符管理。
說明如果占位符應用在select語句后面,必須設置全局生效的默認值。
例如,在創建數據集時在select語句后面加了占位符“profit_range”,代碼如下:
SELECT report_date, order_level, shipping_type,price,order_number,area, case when profit_amt< ${profit_range} then'虧損' when profit_amt> ${profit_range} then'盈利' else '持平' end '訂單等級' from company_sales_record where $expr{report_date :report_date} and $expr{order_level :order_level} and $expr{order_number :order_number}
此時如果不設置默認值,無法正常運行。
需在占位符管理里設置“profit_range”的查詢默認值。
默認值設置后可以正常運行,運行結果如下:
單擊保存,保存數據集。
在頂部菜單欄選擇
。在儀表板編輯頁面添加查詢條件,綁定占位符。
例如,在設置查詢條件時,用一個下拉單選篩選area,綁定SQL占位符,可傳入1個值。
用文本篩選過濾order_number,綁定SQL參數,傳入一個條件。
當儀表板查詢時,會按照查詢條件把對應內容傳入值占位符和表達式占位符中。
例如,儀表板查詢條件如下圖所示。
則對應的SQL為如下:
SELECT * FROM company_sales_record WHERE area = '華北' AND order_number > 0
占位符用法示例:
SELECT * FROM tablename WHERE area in ('$val{area_ph}') -- 文本類型 多選 AND name = '$val{name_ph}' -- 文本類型 單選 AND number = $val{number_ph} -- 數值類型 AND report_date > '$val{report_date_ph.get(0)}' -- 日期類型 獲取日期范圍控件起始日期 AND report_date < '$val{report_date_ph.get(1)}' -- 日期類型 獲取日期范圍控件結束日期
占位符的使用場景請參見占位符。
兼容歷史寫法:
值占位符(原占位符)的歷史寫法:${占位符名}
表達式占位符(原參數)的歷史寫法:${物理字段名:參數名}
后續步驟
當您需要分析的字段在不同的數據表時,Quick BI支持關聯數據表,請參見構建模型。