[僅限PaaS]{class="badge informative" title="僅適用於雲端專案(Adobe管理的PaaS基礎結構)和內部部署專案的Adobe Commerce 。"}
在Commerce Intelligence中翻譯SQL查詢
曾經想過如何將SQL查詢轉譯為您在中使用的計算資料行、量度和報表Commerce Intelligence? 如果您是大量的SQL使用者,瞭解Commerce Intelligence中的SQL轉譯方式可讓您更聰明地在Data Warehouse管理員中工作,並充分利用Commerce Intelligence平台。
在本主題結束時,您找到SQL查詢子句和 專案的 轉譯矩陣Commerce Intelligence。
從檢視一般查詢開始:
SELECTa,group bySUM(b)Aggregate function (欄)FROM cSource資料表WHEREd IS NOT NULLFilterAND time < XAND time >= Ytime frameGROUP BY agroup by此範例涵蓋大部分的翻譯案例,但有一些例外。 從aggregate函式的轉譯方式開始深入研究。
彙總函式
查詢中的彙總函式(例如,count、sum、average、max、min)採用 中的 量度彙總 或 資料行彙總Commerce Intelligence的形式。 差異因子是執行彙總是否需要聯結。
檢視上述每個專案的範例。
量度彙總 aggregate
彙總within a single table時需要量度。 因此,以上查詢的SUM(b)彙總函式最可能由加總資料行B的量度表示。
檢視Total Revenue量度在Commerce Intelligence中如何定義的特定範例。 檢視您嘗試翻譯的下方查詢:
SELECTSUM(order_total) as "Total Revenue"Metric operation (欄)FROM ordersMetric source資料表WHEREemail NOT LIKE '%@magento.com'filterAND created_at < XAND created_at >= Ytimestamp (及報告time range)按一下「Manage Data > 量度> 建立新量度」以瀏覽至量度產生器,您必須先選取適當的source表格(在此例中為orders表格)。 之後會設定量度,如下所示:
欄彙總
彙總從另一個表格聯結的欄時,需要計算欄。 舉例來說,您可能會在customer表格中建置名稱為Customer LTV的欄,其加總為orders表格中與該客戶相關聯的所有訂單的總值。
此彙總的查詢可能如下所示:
Selectc.customer_idSUM(o.order_total) as "Customer LTV"FROM customers cJOIN orders oON c.customer_id = o.customer_idWHERE o.status = 'success'在Commerce Intelligence中設定此專案需要使用您的Data Warehouse管理員,您可以在其中建立orders與customers資料表之間的路徑,然後在客戶資料表中建立名為Customer LTV的資料行。
檢視如何在customers和orders之間建立新路徑。 最終目標是在customers資料表中建立新的彙總資料行,因此請先導覽至Data Warehouse中的customers資料表,然後按一下 Create a Column > 選取定義> SUM。
接下來,您需要選取來源表格。 如果orders表格的路徑存在,只要從下拉式清單中選取它即可。 不過,如果您正在建立新路徑,請按一下「Create new path」,下列畫面會顯示您:
在此,您需要仔細考慮您嘗試加入的兩個表格之間的關係。 在此案例中,可能有Many個訂單與One客戶相關聯,因此orders表格列於Many側,而customers表格則列於One側。
path相當於SQL中的Join。儲存路徑之後,您就可以建立Customer LTV欄! 請參閱下文:
現在您已在Customer LTV資料表中建立新的customers資料行,您已準備好使用此資料行建立量度彙總 (例如,找出每位客戶的平均LTV)。 您也可以group by或filter,依報表中的計算資料行,使用建置在customers資料表上的現有量度。
Group By子句
查詢中的Group By函式通常在Commerce Intelligence中表示為用來劃分或篩選視覺報表的欄。 例如,讓我們重新造訪您先前探索的Total Revenue查詢,但這次依coupon\_code劃分收入區段,以更清楚哪些優惠券產生最多收入。
從下列查詢開始:
SELECT coupon_code,group bySUM(order_total) as "Total Revenue"Metric operation(欄)FROM ordersMetric source資料表WHEREemail NOT LIKE '%@magento.com'filterAND created_at < '2016-12-01'AND created_at >= '2016-09-01'timestamp (及報告time range)GROUP BY coupon_codegroup by使用您先前建立的相同Total Revenue量度,您現在已準備好建立依優惠券代碼分段的收入報表! 請看下方的gif,其中顯示如何設定此視覺報表,檢視9月至11月的資料:
公式
有時候,為了計算不同欄之間的關係,查詢可能涉及多個彙總。 例如,您可以透過下列兩種方式之一計算查詢中的平均訂單值:
AVG('order\_total')或SUM('order\_total')/COUNT('order\_id')
前一個方法會涉及建立新度量,該度量會在order\_total欄上執行平均值。 不過,後一種方法可以直接在Report Builder中建立,假設您已設定量度以計算Total Revenue和Number of orders。
後退一步,檢視Average order value的整體查詢:
SELECTSUM(order_total) as "Total Revenue"operation (欄)COUNT(order_id) as "Number of orders"operation (欄)SUM(order_total)/COUNT(order_id) as "Average order value"operation (欄) /量度作業(欄)FROM orderssource表格WHEREemail NOT LIKE '%@magento.com'filterAND created_at < '2016-12-01'AND created_at >= '2016-09-01'現在假設您已設定量度以計算Total Revenue和Number of orders。 由於這些量度存在,您只需開啟Report Builder並使用Formula功能建立隨選計算即可:
正在結束
如果您是大量的SQL使用者,考慮如何在Commerce Intelligence中翻譯查詢可讓您建立計算欄、度量和報表。
如需快速參考,請檢視下方的矩陣。 這會顯示SQL子句的對等Commerce Intelligence專案,以及它如何對應至多個專案,這取決於查詢中如何使用該專案。
Commerce Intelligence元素
SQL ClauseMetricFilterReport group byReport time framePathCalculated column inputsSource tableSELECTFROMWHEREWHERE (含時間元素)JOIN...ONGROUP BY