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執行類似作業。

本頁內容

Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now