在資料分析中,一些複雜的邏輯或模型可通過自訂SQL建立資料表。並且自訂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支援關聯資料表,請參見構建模型。