Jupyter筆記本中的查詢服務

Adobe Experience Platform 允許您通過將其整合為標準功能, Data Science Workspace 在中 Query Service 使 JupyterLab 用結構化查詢語言。

本教程演示了用於探索、轉換和分析Adobe Analytics資料的常見使用案例的SQL查詢示例。

快速入門

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

訪問JupyterLab和Query Service

  1. Experience Platform中,從左側導覽欄導覽至​Notebooks。 請讓JupyterLab載入。

    注意

    如果未自動顯示新的「啟動器」頁籤,請按一下​File ,然後選擇​New Launcher​以開啟新的「啟動器」頁籤。

  2. 在「啟動器」頁籤中,按一下Python 3環境中的​Blank​表徵圖以開啟空的筆記本。

    注意

    Python 3目前是筆記型電腦中唯一支援查詢服務的環境。

  3. 在左側選擇邊欄上,按一下​Data​表徵圖並按兩下​Datasets​目錄以列出所有資料集。

  4. 查找要瀏覽的Adobe Analytics資料集並按一下右鍵清單,按一下​Query Data in Notebook​在空筆記本中生成SQL查詢。

  5. 按一下包含函式qs_connect()的第一個產生儲存格,然後按一下播放按鈕以執行它。 此函式在筆記本實例和Query Service之間建立連接。

  6. 從第二個生成的SQL查詢中複製Adobe Analytics資料集名稱,它將是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查詢。 在查詢的單元格上選擇,然後選擇​play​按鈕,以執行查詢。 成功的查詢結果或錯誤日誌顯示在已執行的單元格下面。

當筆記本長時間處於非活動狀態時,筆記本和Query Service之間的連接可能中斷。 在這種情況下,通過選擇位於電源按鈕旁右上角的​重新啟動​按鈕重新啟動按鈕來重新啟動JupyterLab。

筆記本內核會重設,但儲存格會保留,重新執行所有儲存格,以繼續您離開的位置。

每小時訪客計數

下列查詢會傳回指定日期的每小時訪客計數:

查詢

%%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;

後續步驟

本教程演示了在Jupyter筆記本中使用Query Service的一些示例使用案例。 請依照使用Jupyter Notebooks教學課程分析資料,瞭解如何使用Data Access SDK執行類似作業。

本頁內容