Show Menu
主題×

Jupyter筆記本中的查詢服務

Adobe Experience Platform可讓您將查詢服務整合到JupyterLab中,做為標準功能,在資料科學工作區中使用結構化查詢語言(SQL)。
本教學課程示範下列常見使用案例的SQL查詢範例,以探索、轉換和分析Adobe Analytics資料:

快速入門

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

訪問JupyterLab和查詢服務

  1. Experience Platform ,從左側導 覽欄導覽至Models 。 按一下 頂部頁首中的 「Notebooks(筆記本)」以開啟JupyterLab。 請讓JupyterLab載入。
    如果未自動顯示新的「啟動器」頁籤,請按一下「檔案」>「新建啟動器」以打 開新的「啟動器」頁籤
  2. 在「啟動器」(Launcher)頁籤中,按一下 Python 3環境中的「空白」(Blank)表徵圖以開啟空的筆記本。
    Python 3目前是筆記型電腦中唯一支援查詢服務的環境。
  3. 在左側選擇邊欄上,按一下「 資料 」圖示,然後按兩下「資料集 ​」目錄以列出所有資料集。
  4. 尋找要瀏覽的Adobe Analytics資料集並在清單上按一下滑鼠右鍵,按一下「筆記型電腦中的 Query Data 」,在空的筆記型電腦中產生SQL查詢。
  5. 按一下包含函式的第一個產生的儲存格, qs_connect() 然後按一下播放按鈕以執行它。 此函式在筆記本實例和查詢服務之間建立連接。
  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查詢。 按一下查詢的單元格,然後按一下播放按 。 成功的查詢結果或錯誤日誌顯示在已執行的單元格下面。
當筆記型電腦長時間處於非活動狀態時,筆記型電腦和查詢服務之間的連接可能會中斷。 在這種情況下,按一下右上角的 Power (電源)按鈕重新啟動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 _acp_year = {target_year} 
      AND _acp_month = {target_month}  
      AND _acp_day = {target_day}
GROUP  BY Day, Hour
ORDER  BY Hour;

在上述查詢中,子 _acp_year 句中 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  _acp_year = {target_year} 
       AND _acp_month = {target_month}  
       AND _acp_day = {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  _acp_year = {target_year} 
       AND _acp_month = {target_month}  
       AND _acp_day = {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  _acp_year = {target_year}
       AND _acp_month = {target_month}
       AND _acp_day = {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  _acp_year = {target_year}
       AND _acp_month = {target_month}
       AND _acp_day = {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  _acp_year = {target_year}
       AND _acp_month = {target_month}
       AND _acp_day = {target_day}
GROUP  BY state_city
ORDER  BY Count DESC
LIMIT  10;

下一步

本教程演示了在Jupyter筆記本中使用查詢服務的一些示例使用案例。 請依循「 使用Jupyter Notebooks 」教學課程分析資料,以瞭解如何使用資料存取SDK執行類似作業。