天天看點

Quick BI的SQL傳參模組化可以用在什麼場景

作者:潘炎峰 更多内容詳見資料中台官網 https://dp.alibaba.com

Quick B的SQL傳參模組化功能提供基于SQL的資料加工處理能力,減輕了IT支撐人員的工作量。在即席查詢SQL中,我們用${實體字段:顯示别名}來表示參數的占位符,配置完占位符後,就可以在查詢控件中進行參數綁定。在Quick BI的SQL傳參模組化中,本質透傳的是邏輯條件,執行過程中會将“${實體字段:顯示别名}”替換為“實體字段 > 查詢值 ” 或 “實體字段 = 查詢值 ” 或 “實體字段 in (查詢值A、查詢值B、查詢值C) ” 或 “實體字段>= 查詢值A and實體字段<= 查詢值B”。下面我們來看看,哪些場景會用到Quick B的SQL傳參模組化功能吧!

場景一:任意時間段内的使用者購買行為分析

  1. 場景描述:在零售行業往往需要分析使用者的活躍度和客戶的忠誠度,那麼通過分析任意時間段内使用者購買頻率是常用的分析思路。
  2. 基于SQL傳參如何實作:

1) SQL模組化,這個場景就是典型的二次聚合分析,而且任意時間段,需要作用到子查詢中,SQL模組化語句如下:

select

sum(case when buy_cnt = 1 then 1 else 0 end ) as buy_cut_1,

sum(case when buy_cnt = 2 then 1 else 0 end ) as buy_cut_2,

sum(case when buy_cnt >2 and buy_cnt<=5 then 1 else 0 end ) as buy_cut_2_5,

sum(case when buy_cnt >5 and buy_cnt<=10 then 1 else 0 end ) as buy_cut_5_10,

sum(case when buy_cnt >10 and buy_cnt<=20 then 1 else 0 end ) as buy_cut_10_20,

sum(case when buy_cnt >20 then 1 else 0 end ) as buy_cut_up_20

from

(SELECT a.customer_name,

count(a.order_id) as buy_cnt

from company_sales_record_copy a

WHERE ${a.report_date : date_test } /定義查詢時間參數/

group by a.customer_name

) b

2) 參數設定,在Quick BI中SQL傳參本質上傳邏輯條件,SQL傳參需要選擇為“日期-年月日”,供查詢控件中識别資料類型。

Quick BI的SQL傳參模組化可以用在什麼場景

3) 點選“建立資料集”,建構“任意時間多次購買客戶數”資料集

Quick BI的SQL傳參模組化可以用在什麼場景

4) 儀表闆配置,以交叉表配置為例。選擇對應SQL傳參模組化資料集,拖拽選擇需要展現的字段。如下所示:

Quick BI的SQL傳參模組化可以用在什麼場景

5) 查詢項綁定配置,選擇SQL參數項作為查詢條件項,設定查詢項與圖表元件的關聯關系和篩選項展現形式。如下圖所示:

Quick BI的SQL傳參模組化可以用在什麼場景

6) 資料驗證:點選查詢進行資料驗證和SQL準确性驗證。Quick BI的SQL引擎根據查詢條件配置和SQL傳參模組化進行參數綁定。如下圖所示:

Quick BI的SQL傳參模組化可以用在什麼場景

通過以上六步操作,就可以很好的實作SQL傳參模組化的全流程穿越,以此來支撐多次聚合的複雜分析場景。

場景二、銷售庫存類資料分析(SQL模組化供參考)

1.場景描述:在零售行業分析任意時間段的庫存和銷量資料是比較常用的需求,通過該資料分析甄别某個商品近期銷售情況和庫存?針對這樣的場景,如何建構Quick BI的SQL傳參模組化?

1) 資料樣例,背景資料具體字段包括(統計日期、省份、城市、期初庫存、進貨量、出貨量、期末庫存等):

Quick BI的SQL傳參模組化可以用在什麼場景

2) 需要實作結果說明,基于以上資料,假設需要分析20190801~20190820浙江杭州的銷售庫存資料,需要給出的結果為:(期初庫存取彙總開始時間的期初庫存值,期末庫存取彙總結束時間的期末庫存值,進貨朗、出貨量采用sum彙總),另外時間為篩選區間。

Quick BI的SQL傳參模組化可以用在什麼場景

3) Quick BI中SQL模組化語句如下(供參考):

SELECT QBI_T_1_.

COL_2

AS '省份',

QBI_T_1_.`COL_3` AS '城市',           

sum( case when QBI_T_1_.COL_1 = start_date then QBI_T_1_.

COL_4

else 0 end) as '期初庫存',

SUM(QBI_T_1_.

COL_5

) AS '進貨量',

COL_6

) AS '出貨量',

SUM(case when QBI_T_1_.COL_1 = end_date then QBI_T_1_.

COL_7

else 0 end ) as '期末庫存'

FROM

quickbi_test

.

QBI_0808_1566542575222

AS QBI_T_1_ /每日庫存銷量表/

left join (

select min(a.

COL_1

) as start_date,

max(a.

COL_1

) as end_date

FROM

quickbi_test

QBI_0808_1566542575222

AS a /每日庫存銷量表/

where ${a.

COL_1

:report_date} /查詢項中綁定的SQL傳參/

) b /*擷取待彙總的統計時間*/           

on (

QBI_T_1_.COL_1 >= start_date           

and QBI_T_1_.COL_1 <= end_date

)           

group by QBI_T_1_.

COL_2

,

QBI_T_1_.`COL_3`
           

阿裡巴巴資料中台團隊,緻力于輸出阿裡雲資料智能的最佳實踐,助力每個企業建設自己的資料中台,進而共同實作新時代下的智能商業!

阿裡巴巴資料中台解決方案,核心産品:

Dataphin,以阿裡巴巴大資料核心方法論OneData為核心驅動,提供一站式資料建構與管理能力;

Quick BI,集阿裡巴巴資料分析經驗沉澱,提供一站式資料分析與展現能力;

Quick Audience,集阿裡巴巴消費者洞察及營銷經驗,提供一站式人群圈選、洞察及營銷投放能力,連接配接阿裡巴巴商業,實作使用者增長。

歡迎志同道合者一起成長!更多内容詳見資料中台官網