Python
このガイドでは、Python SDKを使用してプロジェクトに接続する方法を説明します。
最新バージョン:v3.0.0
更新日:2023-10-07
リソースのダウンロード:ソースコード
このドキュメントはv3.0.0以降のバージョンに適用されます。以前のバージョンについては、Python SDK接続ガイド(V2)を参照してください
1. SDKの統合
pipでPython SDKを取得します
pip install ThinkingDataSdk
アップグレードコマンド:
pip install --upgrade ThinkingDataSdk
- Logbusのインストール
SDK+LogBusの形式でサーバー側のデータの収集と送信を行うことをお勧めします。次のドキュメントを参考に、Logbusをインストールしてください:LogBus使用ガイド
2. 初期化
SDKの初期化のサンプルコードは次のとおりです:
from tgasdk.sdk import *
consumer = TDLogConsumer("LOG_DIRECTORY", rotate_mode=TD_ROTATE_MODE.HOURLY, file_prefix="LOG_FILE_PREFIX")
te = TDAnalytics(consumer)
LOG_DIRECTORYは、ローカルに書き込むフォルダーのパスです。LogBusの監視フォルダーのパスをここで指定したパスに設定するだけで、LogBusでデータを監視して送信できます。
LOG_FILE_PREFIXはログファイル名のプレフィックスです。
3. よく使う機能
ゲストIDとアカウントIDを正しく紐付けるため、ゲーム内でゲストIDとアカウントIDの両方を使用する場合は、この2つのIDを同時に送信することを強くお勧めします。そうしないと、アカウントが一致せず、ユーザーが重複してカウントされる可能性があります。具体的なIDの紐付けルールについては、ユーザー識別ルールの章を参照してください。
3.1 イベントの送信
trackを呼び出してイベントを送信できます。事前に整理したドキュメントに従って、イベントのプロパティと送信条件を設定することをお勧めします。イベントを送信するサンプルコードは次のとおりです:
distinct_id = "ABCDEF123456"
account_id = "TE10001"
properties = {
"#time": datetime.datetime.now(),
# このeventの発生時刻を設定します。設定しない場合は、デフォルトで現在時刻になります
"#ip": "192.168.1.1",
# ユーザーのIPを設定します。tdaはこのIPから都道府県・市区町村を自動的に解析します
# "#uuid":uuid.uuid1(),#任意。上記のenable_uuidスイッチがオンの場合は入力不要です
"Product_Name": "商品名",
"Price": 30,
"OrderId": "注文番号abc_123"
}
# イベントを送信します(アカウントIDとゲストIDを含む)
try:
te.track(distinct_id, account_id, "Payment", properties)
# ゲストIDのみを送信することもできます
# te.track(distinct_id = distinct_id, event_name = "Payment", properties = properties)
# またはアカウントIDのみを送信します
# te.track(account_id = account_id, event_name = "Payment", properties = properties)
except Exception as e:
# 例外処理
print(e)
- イベント名は文字列型で、英字で始まり、数字、英字、アンダースコア"_"を含めることができます。最大長は50文字です。
- Keyはそのプロパティの名前で、文字列型です。英字で始まり、数字、英字、アンダースコア "_" を含めることができます。最大長は50文字で、英字の大文字と小文字は区別されません。AEはすべて小文字に変換します
- Valueはプロパティの値で、文字列、数値、ブール値、時間、オブジェクト、オブジェクトグループ、配列に対応しています
ユーザープロパティの要件は、イベントプロパティと同じです
3.2 ユーザープロパティの設定
一般的なユーザープロパティは、user_setを呼び出して設定できます。このインターフェースで送信したプロパティは、既存のプロパティ値を上書きします。そのユーザープロパティが以前に存在しない場合は新しく作成され、タイプは渡されたプロパティのタイプと同じになります。ここでは、ユーザー名の設定を例にします:
properties = {"user_name": "ABC"}
# ユーザープロパティを送信します。"user_name"の値は"ABC"です
try:
te.user_set(account_id="account_id", distinct_id="distinct_id", properties=properties)
except Exception as e:
# 例外処理
print(e)
3.3 データの送信
TDLogConsumerを使用する場合、収集されたイベントはまずjson文字列に変換され、キャッシュ配列に追加されます。配列の要素数が設定された容量を超えた時点で、データがディスクに書き込まれます。デフォルトの容量上限は5件です。TDLogConsumerのコンストラクタでbuffer_sizeのサイズを設定できます。
業務シナリオによっては、データをすぐにAEサーバーへ送信したい場合があります。その場合はflush()インターフェースを呼び出します。なお、flush()を頻繁に呼び出すと、サービスのパフォーマンスが低下します。
te.flush();
3.4 SDKの終了
te.close()
SDKを終了します。キャッシュ内のデータが失われないよう、サーバーをシャットダウンする前にこのインターフェースを呼び出してください
4. ベストプラクティス
次のサンプルコードには、上記のすべての操作が含まれています。次の手順で使用することをお勧めします:
from tgasdk.sdk import *
# SDKを初期化
te = TDAnalytics(TDLogConsumer("LOG_DIRECTORY"))
# イベントを送信します。アカウントIDとゲストIDの両方を空にすることはできません
properties = {
"#time": datetime.datetime.now(), # このeventの発生時刻を設定します。設定しない場合は、デフォルトで現在時刻になります
"#ip": "192.168.1.1", # ユーザーのIPを設定します。tdaはこのIPから都道府県・市区町村を自動的に解析します
"Product_Name": "商品名"
}
try:
te.track("distinct_id", "account_id", "Payment", properties)
except Exception as e:
# 例外処理
print(e)
# ユーザープロパティを送信します。"user_name"の値は"ABC"です
user_properties = {"user_name": "ABC"}
try:
te.user_set(account_id="account_id", distinct_id="distinct_id", properties=user_properties)
except Exception as e:
# 例外処理
print(e)
# flushインターフェースを呼び出すと、データはすぐにファイルに書き込まれます。本番環境では、頻繁にflushを呼び出してIOやネットワークのオーバーヘッドが生じないよう注意してください
te.flush()

