PythonとSQLAlchemyを使用したExperience Platform データの管理

SQLAlchemyを使用して、Adobe Experience Platform データの管理の柔軟性を向上させる方法について説明します。 SQLに精通していない人にとって、SQLAlchemyはリレーショナルデータベースを扱う際の開発時間を大幅に短縮することができます。 このドキュメントでは、SQLAlchemyをQuery Serviceに接続し、Pythonを使用してデータベースを操作するための手順と例を示します。

SQLAlchemyは、SQL データベースに保存されているデータをPython オブジェクトに転送できるObject Relational Mapper (ORM)およびPython コードライブラリです。 次に、Python コードを使用して、Experience Platform データレイク内に保持されているデータに対してCRUD操作を実行できます。 これにより、PSQLのみを使用してデータを管理する必要がなくなります。

はじめに

SQLAlchemyをExperience Platformに接続するために必要な資格情報を取得するには、Experience Platform UIのQueries ワークスペースにアクセスする必要があります。 現在クエリワークスペースにアクセスできない場合は、組織管理者にお問い合わせください。

Query Service資格情報 credentials

資格情報を見つけるには、Experience Platform UIにログインし、左側のナビゲーションから「クエリ」、その後「資格情報」を選択します。 ログイン資格情報の検索方法について詳しくは、資格情報ガイド ​を参照してください。

​ クエリサービスの有効期限が切れている資格情報が強調表示された「資格情報」タブ。

ポート 80はクエリサービスへの接続に推奨されるポートですが、ポート 5432を使用することもできます。

IMPORTANT
期限切れの資格情報(上の画像に表示)を使用してQuery Serviceに接続する場合、接続のセッション有効期間は、組織の設定で定義された時間が経過すると期限切れになります。 デフォルトでは、この期間は24時間です。 有効期限のない資格情報🔗でクライアントを接続する方法や、有効期限のない資格情報のセッション有効期間を変更する方法については、ドキュメントを参照してください。

QS資格情報にアクセスできたら、選択したPython エディターを開きます。

Pythonに資格情報を保存 store-credentials

Python エディターで、urllib.parse.quote ライブラリを読み込み、各資格情報変数をパラメーターとして保存します。 urllib.parse モジュールには、URL文字列をコンポーネントに分割するための標準インターフェイスが用意されています。 quote関数は、URL文字列の特殊文字を置き換えて、データをURL コンポーネントとして安全に使用できるようにします。 必要なコードの例を以下に示します。

TIP
Pythonの三重引用符を使用して、複数行のパスワード文字列を入力します。
from urllib.parse import quote

host = "<YOUR_HOST>"

port = "<YOUR_PORT>"

dbname = "<YOUR_DATABASE>"

user = "<YOUR_USERNAME>"

password = quote('''
<YOUR_PASSWORD>
''')
NOTE
SQLAlchemyをExperience Platformに接続するために指定したパスワードは、有効期限が切れる資格情報を使用すると期限切れになります。 詳しくは、資格情報の節を参照してください。

エンジン インスタンス [#create-engine]を作成します

変数を作成したら、create_engine関数をインポートし、SQLAlchemyでクエリサービス資格情報をコンパイルおよびフォーマットする文字列を作成します。 次に、create_engine関数を使用して、エンジンインスタンスを構築します。

NOTE
create_engineは、エンジンのインスタンスを返します。 ただし、接続が必要なクエリが呼び出されるまで、クエリサービスへの接続は開かれません。

サードパーティクライアントを使用してExperience Platformにアクセスする場合は、SSLを有効にする必要があります。 エンジンの一部として、connect_argsを使用して追加のキーワード引数を入力します。 SSL モードをrequireに設定することをお勧めします。 使用可能な値について詳しくは、SSL モードのドキュメント ​を参照してください。

次の例は、エンジンと接続文字列を初期化するために必要なPython コードを示しています。

from sqlalchemy import create_engine

db_string = "postgresql://{user}:{password}@{host}:{port}/{dbname}".format(
    user=user,
    password=password,
    host=host,
    port = port,
    dbname = dbname
)

engine = create_engine(db_string, connect_args={'sslmode':'require'})
NOTE
SQLAlchemyをExperience Platformに接続するために指定したパスワードは、有効期限が切れる資格情報を使用すると期限切れになります。 詳しくは、資格情報の節を参照してください。

これで、Pythonを使用してExperience Platform データをクエリする準備が整いました。 次の例では、クエリサービスのテーブル名の配列を返します。

from sqlalchemy import inspect
insp = inspect(engine)
print(insp.get_table_names())
recommendation-more-help
experience-platform-help-query-service