全部產品
Search
文件中心

:自訂SQL

更新時間:Jun 30, 2024

在資料分析中,一些複雜的邏輯或模型可通過自訂SQL建立資料表。並且自訂SQL支援傳參,可滿足更複雜多變的分析情境。

前提條件

您已擷取資料。

輸入SQL代碼

您可以通過以下2種方式添加自訂SQL。

  1. 進入自訂SQL頁面。

    • 入口1:在資料來源頁面,單擊右上方的SQL建立資料集image

    • 入口2:資料集編輯頁面,在左側面板選擇資料來源,畫布中沒有任何資料表時,單擊畫布中的使用SQL代碼建立第一張表或左側面板中的SQL代碼建立表image.png

  2. 輸入SQL代碼後,單擊運行

    image.png

    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}

    運行成功後,您可以在運行結果頁簽,看到結果預覽。image.png

  3. 單擊確認編輯

    儲存自訂SQL建立的資料集。

修改SQL代碼

您可以通過以下2種方式修改SQL代碼:

  • 滑鼠懸浮至畫布的表上,單擊編輯代碼表徵圖。image.png

  • 單擊畫布上的目標表,在右側的面板中,單擊編輯代碼image.png

預留位置

Quick BI提供預留位置的方式進行傳參,在查看報表並進行資料分析的過程中,您可以通過查詢控制項把預留位置的值傳到SQL中,從而實現資料的靈活分析。Quick BI支援值預留位置和運算式預留位置,您可以按照需求進行配置。

類型

描述

使用情境

格式

值預留位置

可通過儀表板上的查詢控制項傳入一個值、一組值。

說明

當預留位置是日期時,需要選擇具體的日期格式,來控制傳入值的格式。

適用於大部分需要傳參的情境。

'$val{預留位置名}'

運算式預留位置

可通過儀表板上的查詢控制項傳入一個條件。

當儀表板上的篩選條件中,使用者可以自由修改篩選方式,需要使用運算式預留位置,將整個篩選條件都傳入SQL。

例如下圖儀表板使用者可設定利潤>50或者利潤<50,需要連同操作符一起傳入SQL。參數傳參

$expr{物理欄位名:預留位置名}

配置方式

根據業務需要寫SQL,加入預留位置。

  1. 在SQL代碼編輯頁面,單擊預留位置管理

    image.png

  2. 預留位置管理面板,配置以下預留位置並單擊確定

    image.png

    配置項請參見預留位置管理

    說明

    如果預留位置應用在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}

    此時如果不設定預設值,無法正常運行。

    image.png

    需在預留位置管理裡設定“profit_range”的查詢預設值。

    image.png

    預設值設定後可以正常運行,運行結果如下:

    image.png

  3. 單擊儲存,儲存資料集。image.png

  4. 在頂部功能表列選擇開始分析 > 建立儀表板

  5. 在儀表板編輯頁面添加查詢條件,綁定預留位置。

    例如,在設定查詢條件時,用一個下拉單選篩選area,綁定SQL預留位置,可傳入1個值。image.png

    用文本篩選過濾order_number,綁定SQL參數,傳入一個條件。image.png

  6. 當儀表板查詢時,會按照查詢條件把對應內容傳入值預留位置和運算式預留位置中。

    例如,儀表板查詢條件如下圖所示。image.png

    則對應的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支援關聯資料表,請參見構建模型