ジュピターノートのクエリサービス

Adobe Experience Platform 標準機能としてに統合する Data Science Workspace ことで、で構造化クエリ言語(SQL) Query Service を使用 JupyterLab できます。

このチュートリアルでは、Adobe Analyticsデータの調査、変換、分析を行う一般的な使用例のサンプルSQLクエリを示します。

はじめに

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

  • Adobe Experience Platformにアクセスします。 Experience PlatformのIMS組織へのアクセス権がない場合は、先に進む前に、システム管理者にお問い合わせください

  • Adobe Analyticsデータセット

  • このチュートリアルで使用する次の主要概念に対する十分な理解

JupyterLabとQuery Serviceにアクセス

  1. Experience Platformで、左のナビゲーション列から​ノートブック​に移動します。 JupyterLab が読み込まれるまで、しばらく待ちます。

    メモ

    新しい「ランチャー」タブが自動的に表示されなかった場合は、「ファイル」をクリックして新しい「ランチャー」タブを開き、「新しいランチャー」を選択します。

  2. 「ランチャー」タブで、Python 3 環境の「空白」アイコンをクリックして、空のノートブックを開きます。

    メモ

    現在、ノートブックのクエリサービスでサポートされている環境は Python 3 のみです。

  3. 左側の選択パネルで、データ​アイコンをクリックし、「データセット」ディレクトリをダブルクリックして、すべてのデータセットをリストします。

  4. 調査するAdobe Analyticsデータセットを探し、リスト上で右クリックして、「Notebook のクエリデータ」をクリックし、空のノートブックにSQLクエリを生成します。

  5. qs_connect() 関数が含まれる最初の生成済みセルをクリックし、再生ボタンをクリックして実行します。この関数は、ノートブックインスタンスとQuery Serviceの間に接続を作成します。

  6. 2番目に生成された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 クエリを入力します。クエリを実行するには、セルで選択し、再生​ボタンを選択します。 成功したクエリの結果またはエラーログは、実行されたセルの下に表示されます。

ノートブックが長時間非アクティブになると、ノートブックとQuery Serviceの接続が切断される場合があります。 その場合は、電源ボタンの横の右上隅にある​再起動​ボタン再起動ボタンを選択して、JupyterLabを再起動します。

ノートブックのカーネルはリセットされますが、セルは残ります。すべてのセルを再実行して、中断した場所に戻ります。

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 TIMESTAMP = to_timestamp('{target_year}-{target_month}-{target_day}')
GROUP  BY Day, Hour
ORDER  BY Hour;

上記のクエリでは、WHERE句のタイムスタンプがtarget_yearの値に設定されています。 変数を中括弧({})で囲んで、SQL クエリに含めます。

オプションの変数 hourly_visitor は、クエリの最初の行に含まれます。クエリの結果は、この変数に Pandas データフレームとして保存されます。結果をデータフレームに保存すると、目的の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)

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 TIMESTAMP = to_timestamp('{target_year}-{target_month}-{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 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)

次のクエリは、指定した日付の最も人気の高い 10 ページを返します。

クエリ

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

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

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

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

次のクエリは、指定した日付のユーザーアクティビティの大部分を生成している 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 ノートブックによるデータの分析」のチュートリアルに従って、Data Access SDK を使用して同様の操作がどのように実行されるかを確認します。

このページ