Show Menu
トピック×

Jupyter ノートブックのクエリサービス

Adobe Experience Platform 標準機能としてに統合するこ Data Science Workspace とで、で構造化クエリ言語(SQL) Query Service を使用 JupyterLab できます。
This tutorial demonstrates sample SQL queries for common use cases to explore, transform, and analyze Adobe Analytics data.

はじめに

このチュートリアルを開始する前に、次の前提条件を満たす必要があります。

アクセス JupyterLab および Query Service

  1. In Experience Platform , navigate to Notebooks from the left navigation column. JupyterLab が読み込まれるまで、しばらく待ちます。
    新しい「ランチャー」タブが自動的に表示されなかった場合は、「 ファイル 」をクリックして新しい「ランチャー」タブを開き、「 新規ランチャー」を選択します
  2. 「ランチャー」タブで、Python 3 環境の「 空白 」アイコンをクリックして、空のノートブックを開きます。
    現在、ノートブックのクエリサービスでサポートされている環境は Python 3 のみです。
  3. 左側の選択パネルで、 データ ​アイコンをクリックし、「 データセット 」ディレクトリをダブルクリックして、すべてのデータセットをリストします。
  4. Find an Adobe Analytics dataset to explore and right-click on the listing, click Query Data in Notebook to generate SQL queries in the empty notebook.
  5. qs_connect() 関数が含まれる最初の生成済みセルをクリックし、再生ボタンをクリックして実行します。This function creates a connection between your notebook instance and the Query Service.
  6. Copy down the Adobe Analytics dataset name from the second generated SQL query, it will be the value after 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 クエリを入力します。クエリを実行するには、セルをクリックしてから、 再生 ​ボタンをクリックします。成功したクエリの結果またはエラーログは、実行されたセルの下に表示されます。
When a notebook is inactive for an extended period of time, the connection between the notebook and Query Service may break. In such cases, restart JupyterLab by clicking the Power button located at the top right corner.
ノートブックのカーネルはリセットされますが、セルは保持され、 すべて ​のセルを再実行して、中断した場所から続行します。

1 時間ごとの訪問者数

次のクエリは、指定した日付の 1 時間ごとの訪問者数を返します。

クエリ

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

上記のクエリでは、 WHERE 句のターゲット _acp_year target_year の値に設定されます。変数を中括弧( {} )で囲んで、SQL クエリに含めます。
オプションの変数 hourly_visitor は、クエリの最初の行に含まれます。クエリの結果は、この変数に Pandas データフレームとして保存されます。Storing results in a dataframe allows you to later visualize the query results using a desired Python package. Execute the following Python code in a new cell to generate a bar graph:
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)

1 時間ごとのアクティビティ数

次のクエリは、指定した日付の 1 時間ごとのアクション数を返します。

クエリ

%%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 句で論理演算子を使用して、指定した日付範囲の 1 時間ごとのアクション数を返すことができます。

クエリ

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

Execute the following Python code to generate a histogram for the number of events per visit session:
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)

特定の日のアクティブユーザー

次のクエリは、指定した日付の最もアクティブな 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;

ユーザアクティビティごとのアクティブな都市

次のクエリは、指定した日付のユーザーアクティビティの大部分を生成している 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;

次の手順

This tutorial demonstrated some sample uses cases for utilizing Query Service in Jupyter notebooks. 「 Jupyter ノートブックによるデータの分析 」のチュートリアルに従って、Data Access SDK を使用して同様の操作がどのように実行されるかを確認します。