Adobe Experience Platform 允許您通過將結構化查詢語言(SQL)作為 Data Science Workspace 標準功能 Query Service 整合 JupyterLab 到中來使用。
本教程演示了用於探索、轉換和分析資料的常見使用案例的SQL查詢 Adobe Analytics 示例。
開始本教學課程之前,您必須具備下列必要條件:
存取權 Adobe Experience Platform。 如果您無權存取中的IMS組織,請先與您的系統 Experience Platform管理員聯絡,然後再繼續
資料 Adobe Analytics 集
對本教學課程中使用的下列主要概念有正確認識:
在中 Experience Platform,從左側導 航列導航到Notebooks 。 請讓JupyterLab載入。
如果未自動顯示新的「啟動器」頁籤,請按一下「檔案」開啟新的「啟動器」 頁籤 ,然後選 擇「新建啟動器」。
在「啟動器」(Launcher)頁籤中,單 擊 Python 3環境中的「空白」(Blank)表徵圖以開啟空的筆記本。
Python 3目前是筆記型電腦中唯一支援查詢服務的環境。
在左側選擇邊欄上,按一下「 資料 」圖示,然後按兩下「資料集 」目錄以列出所有資料集。
查找要 Adobe Analytics 瀏覽的資料集並按一下右鍵清單,按一下「筆記本」( Notebook )中的「查詢資料」(Query Data),在空的筆記本中生成SQL查詢。
按一下包含函式的第一個產生的儲存格, qs_connect()
然後按一下播放按鈕以執行它。 此函式在筆記本實例和之間建立連接 Query Service。
從第二個生 Adobe Analytics 成的SQL查詢中複製資料集名稱,它將是後面的值 FROM
。
按一下+按鈕插入新的筆記本 單元格 。
在新儲存格中複製、貼上並執行下列匯入陳述式。 這些陳述將用於直觀顯示您的資料:
import plotly.plotly as py
import plotly.graph_objs as go
from plotly.offline import iplot
接著,將下列變數複製並貼至新儲存格。 視需要修改其值,然後執行這些值。
target_table = "your Adobe Analytics dataset name"
target_year = "2019"
target_month = "04"
target_day = "01"
target_table
:資料集的 Adobe Analytics 名稱。target_year
:目標資料的特定年份。target_month
:目標所在的特定月份。target_day
:目標資料的特定來源日。您可以隨時變更這些值。 執行此動作時,請務必執行要套用之變數儲存格。
在單個筆記本單元格中輸入以下SQL查詢。 按一下查詢的單元格,然後按一下播放按 鈕 。 成功的查詢結果或錯誤日誌顯示在已執行的單元格下面。
當筆記本長時間處於非活動狀態時,筆記本和筆記本之間的連接可能 Query Service 中斷。 在這種情況下,請 JupyterLab 按一下右上角的 Power (電源)按鈕重新啟動。
筆記本內核將重置,但單元格將保留,重 新運行 所有單元格以繼續您離開的位置。
下列查詢會傳回指定日期的每小時訪客計數:
%%read_sql hourly_visitor -c QS_CONNECTION
SELECT Substring(timestamp, 1, 10) AS Day,
Substring(timestamp, 12, 2) AS Hour,
Count(DISTINCT concat(enduserids._experience.aaid.id,
_experience.analytics.session.num)) AS Visit_Count
FROM {target_table}
WHERE TIMESTAMP = to_timestamp('{target_year}-{target_month}-{target_day}')
GROUP BY Day, Hour
ORDER BY Hour;
在上述查詢中,子句中的 WHERE
時間戳設定為值 target_year
。 在SQL查詢中加入變數,方法是將變數以大括弧({}
)括住。
查詢的第一行包含可選變數 hourly_visitor
。 查詢結果將作為Pactices資料幀儲存在此變數中。 將結果儲存在資料幀中,可讓您以後使用所需的包直觀地顯示查詢 Python 結果。 在新儲存 Python 格中執行下列程式碼以產生長條圖:
trace = go.Bar(
x = hourly_visitor['Hour'],
y = hourly_visitor['Visit_Count'],
name = "Visitor Count"
)
layout = go.Layout(
title = 'Visit Count by Hour of Day',
width = 1200,
height = 600,
xaxis = dict(title = 'Hour of Day'),
yaxis = dict(title = 'Count')
)
fig = go.Figure(data = [trace], layout = layout)
iplot(fig)
以下查詢返回指定日期的每小時活動計數:
%%read_sql hourly_actions -d -c QS_CONNECTION
SELECT Substring(timestamp, 1, 10) AS Day,
Substring(timestamp, 12, 2) AS Hour,
Count(concat(enduserids._experience.aaid.id,
_experience.analytics.session.num,
_experience.analytics.session.depth)) AS Count
FROM {target_table}
WHERE TIMESTAMP = to_timestamp('{target_year}-{target_month}-{target_day}')
GROUP BY Day, Hour
ORDER BY Hour;
執行上述查詢會將結果儲存 hourly_actions
為資料幀。 在新儲存格中執行下列函式以預覽結果:
hourly_actions.head()
可以修改上述查詢,以使用 WHERE子句中的邏輯運算子返回指定日期範圍的每小時操作計數:
%%read_sql hourly_actions_date_range -d -c QS_CONNECTION
SELECT Substring(timestamp, 1, 10) AS Day,
Substring(timestamp, 12, 2) AS Hour,
Count(concat(enduserids._experience.aaid.id,
_experience.analytics.session.num,
_experience.analytics.session.depth)) AS Count
FROM {target_table}
WHERE timestamp >= TO_TIMESTAMP('2019-06-01 00', 'YYYY-MM-DD HH')
AND timestamp <= TO_TIMESTAMP('2019-06-02 23', 'YYYY-MM-DD HH')
GROUP BY Day, Hour
ORDER BY Hour;
執行修改的查詢會將結果儲存 hourly_actions_date_range
為資料幀。 在新儲存格中執行下列函式以預覽結果:
hourly_actions_date_rage.head()
下列查詢會傳回指定日期每個訪客作業的事件數:
%%read_sql events_per_session -c QS_CONNECTION
SELECT concat(enduserids._experience.aaid.id,
'-#',
_experience.analytics.session.num) AS aaid_sess_key,
Count(timestamp) AS Count
FROM {target_table}
WHERE TIMESTAMP = to_timestamp('{target_year}-{target_month}-{target_day}')
GROUP BY aaid_sess_key
ORDER BY Count DESC;
執行下列程 Python 式碼,以產生每次瀏覽作業事件數的色階分佈圖:
data = [go.Histogram(x = events_per_session['Count'])]
layout = go.Layout(
title = 'Histogram of Number of Events per Visit Session',
xaxis = dict(title = 'Number of Events'),
yaxis = dict(title = 'Count')
)
fig = go.Figure(data = data, layout = layout)
iplot(fig)
下列查詢會傳回指定日期中十個人氣最高的頁面:
%%read_sql popular_pages -c QS_CONNECTION
SELECT web.webpagedetails.name AS Page_Name,
Sum(web.webpagedetails.pageviews.value) AS Page_Views
FROM {target_table}
WHERE TIMESTAMP = to_timestamp('{target_year}-{target_month}-{target_day}')
GROUP BY web.webpagedetails.name
ORDER BY page_views DESC
LIMIT 10;
下列查詢會傳回指定日期中十位最活躍的使用者:
%%read_sql active_users -c QS_CONNECTION
SELECT enduserids._experience.aaid.id AS aaid,
Count(timestamp) AS Count
FROM {target_table}
WHERE TIMESTAMP = to_timestamp('{target_year}-{target_month}-{target_day}')
GROUP BY aaid
ORDER BY Count DESC
LIMIT 10;
以下查詢返回在指定日期生成大多數用戶活動的十個城市:
%%read_sql active_cities -c QS_CONNECTION
SELECT concat(placeContext.geo.stateProvince, ' - ', placeContext.geo.city) AS state_city,
Count(timestamp) AS Count
FROM {target_table}
WHERE TIMESTAMP = to_timestamp('{target_year}-{target_month}-{target_day}')
GROUP BY state_city
ORDER BY Count DESC
LIMIT 10;
本教程演示了在筆記型電腦中使用的一些 Query Service 示例使 Jupyter 用案例。 請依循「 使用Jupyter Notebooks 」教學課程分析資料,以瞭解如何使用資料存取SDK執行類似作業。