Show Menu
主題×

Jupyter筆記本中的查詢服務

Adobe Experience Platform 允許您通過將結構化查詢語言(SQL)作為 Data Science Workspace 標準功能 Query Service 整合 JupyterLab 到中來使用。
本教程演示了用於探索、轉換和分析資料的常見使用案例的SQL查詢 Adobe Analytics 示例。

快速入門

開始本教學課程之前,您必須具備下列必要條件:

存取 JupyterLab 和 Query Service

  1. Experience Platform ,從左側導覽欄 瀏覽至Notebooks 。 請讓JupyterLab載入。
    如果未自動顯示新的「啟動器」頁籤,請按一下「檔案」開啟新的「啟動器」 頁籤 ,然後選 擇「新建啟動器」
  2. 在「啟動器」(Launcher)頁籤中,單 Python 3環境中的「空白」(Blank)表徵圖以開啟空的筆記本。
    Python 3目前是筆記型電腦中唯一支援查詢服務的環境。
  3. 在左側選擇邊欄上,按一下「 資料 」圖示,然後按兩下「資料集 ​」目錄以列出所有資料集。
  4. 查找要 Adobe Analytics 瀏覽的資料集並按一下右鍵清單,按一下「筆記本」( Notebook )中的「查詢資料」(Query Data),在空的筆記本中生成SQL查詢。
  5. 按一下包含函式的第一個產生的儲存格, qs_connect() 然後按一下播放按鈕以執行它。 此函式在筆記本實例和之間建立連接 Query Service。
  6. 從第二個生 Adobe Analytics 成的SQL查詢中複製資料集名稱,它將是後面的值 FROM
  7. 按一下+按鈕插入新的筆記本 單元格
  8. 在新儲存格中複製、貼上並執行下列匯入陳述式。 這些陳述將用於直觀顯示您的資料:
    import plotly.plotly as py
    import plotly.graph_objs as go
    from plotly.offline import iplot
    
    
  9. 接著,將下列變數複製並貼至新儲存格。 視需要修改其值,然後執行這些值。
    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 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執行類似作業。