Jupyter Notebook中的查詢服務
Adobe Experience Platform可讓您將Query Service整合至JupyterLab作為標準功能,以在Data Science Workspace中使用結構化查詢語言(SQL)。
本教學課程示範常見使用案例的範例SQL查詢,以探索、轉換及分析Adobe Analytics資料。
快速入門
開始進行本教學課程前,您必須具備下列必要條件:
-
存取Adobe Experience Platform。 如果您沒有Experience Platform中組織的存取權,請在繼續之前與您的系統管理員交談
-
Adobe Analytics資料集
-
深入瞭解本教學課程使用的下列重要概念:
存取 JupyterLab 和 Query Service access-jupyterlab-and-query-service
-
在 中 Experience Platform, 從左導覽列導航到“筆記本 ”。 請稍等片刻讓 JupyterLab 載入。
note note NOTE 如果未自動顯示新的啟動器標籤,請按下檔案打開 新的啟動器標籤,然後選擇 新 啟動器。 -
在「啟動器」標籤中,按一下Python 3環境中的 空白 圖示以開啟空白筆記本。
note note NOTE Python 3是目前在筆記型電腦中唯一支援查詢服務的環境。 -
在左側選取範圍邊欄上,按一下 資料 圖示,然後按兩下 資料集 目錄以列出所有資料集。
-
尋找要探索的Adobe Analytics資料集並在清單上按一下滑鼠右鍵,按一下 在筆記本中查詢資料 以在空白筆記本中產生SQL查詢。
-
按一下包含函式
qs_connect()
的第一個產生儲存格,然後按一下播放按鈕來執行它。 此函數在筆記本執行個體和 之間 Query Service建立連接。 -
Adobe Analytics從第二個生成的 SQL 查詢複製 資料集 名稱,它將是 之後
FROM
的值。 -
按兩下 + 按鈕插入新的筆記本儲存格。
-
在新儲存格中複製、貼上及執行以下匯入陳述式。 這些陳述式將用來視覺化您的資料:
code language-python import plotly.plotly as py import plotly.graph_objs as go from plotly.offline import iplot
-
接下來,將下列變數複製並貼到新儲存格中。 視需要修改其值,然後執行。
code language-python 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
:目標資料來源的特定日期。
note note NOTE 您可以隨時變更這些值。 執行時,請務必執行變數儲存格以套用變更。
查詢您的資料 query-your-data
在個別筆記本儲存格中輸入下列SQL查詢。 在查詢的儲存格上選取,接著選取 播放 按鈕,以執行查詢。 成功的 查詢 結果或錯誤日誌將顯示在已執行的儲存格下方。
當筆記本長時間處於非活動狀態時,筆記本和 Query Service 筆記本之間的連接可能會中斷。 在這種情況下,請通過選擇 位於電源按鈕右上角的重新啟動 按鈕 來重新啟動JupyterLab。
筆記型電腦核心會重設,但儲存格會保留,請重新執行所有儲存格,繼續您中斷的儲存格。
每小時訪客計數 hourly-visitor-count
下列查詢會傳回指定日期的每小時訪客計數:
查詢
%%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
。 查詢結果將作為 Pandas 數據幀存儲在此變數中。 通過將結果存儲在數據幀中,您可以稍後使用所需的 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)
每小時活動計数 hourly-activity-count
下列查詢會傳回指定日期的每小時動作計數:
查詢
%%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()
每個訪客會話的事件数 number-of-events-per-visitor-session
以下查詢返回指定日期内每個訪客會話的事件數:
查詢
%%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)
指定日期的熱門頁面 popular-pages-for-a-given-day
下列查詢會傳回指定日期前十個最受歡迎的頁面:
查詢
%%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;
指定日的作用中使用者 active-users-for-a-given-day
以下查詢將返回指定日期中十個最活躍的使用者:
查詢
%%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;
依使用者活動列出的活躍城市 active-cities-by-user-activity
下列查詢會傳回在指定日期產生大部分使用者活動的十個城市:
查詢
%%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;
後續步驟
本教學課程示範在Jupyter筆記型電腦中運用Query Service的一些使用案例。 請依照使用Jupyter Notebooks分析您的資料教學課程,瞭解如何使用Data Access SDK執行類似的作業。