# Python SDK 利用ガイド
このガイドは、Python SDKを使用してプロジェクトにデータをインポートする方法を説明します。GitHub (opens new window)でPython SDKのソースコードを入手することができます。
**最新バージョン:**1.7.0
更新時間: 2021-12-29
# 1、 SDKの初期化
1.pip
でPython SDKを取得します。
pip install ThinkingDataSdk
コマンドアップグレード:
pip install --upgrade ThinkingDataSdk
2.SDKの初期化
プログラム初期化コードにSDKを導入してください。import方法は2つあります。
from tgasdk.sdk import TGAnalytics, LoggingConsumer
ta = TGAnalytics(LoggingConsumer(log_directory))
または
import tgasdk.sdk
ta = tgasdk.TGAnalytics(tgasdk.LoggingConsumer(log_directory))
SDKインスタンスの初期化
# SDK初期化の2つ方法,ConsumerはLoggingConsumer,BatchConsumer,AsyncBatchConsumer,DebugConsumerを含む.
#デフォルト
ta = TGAnalytics(Consumer)
# UUID重複除去を追加
ta = TGAnalytics(Consumer, enable_uuid=True)
次の4つの方法でSDKインスタンスを取得することができます。
(1)LoggingConsumer**:**一括且つリアルタイムでローカルのテキストを書き、テキストは日で区切り、LogBusでアップロードします。デフォルトでキャッシュデータが8Kを超えるとテキストを書きこみ、buffer_sizeを設定することでサイズを変更します。単位はByteです。即時に書き込む必要がある場合はflush()メソッドを呼び出します。
#デフォルトで日で分割
ta = TGAnalytics(LoggingConsumer(log_directory))
時間単位でテキを分割したい場合は、次のように初期化します。
ta = TGAnalytics(LoggingConsumer(log_directory, rotate_mode = ROTATE_MODE.HOURLY))
サイズで分割したい場合は、次のように初期化します。
#1Gで分割
ta = TGAnalytics(LoggingConsumer(log_directory, log_size= 1024))
プレフィックスをカスタマイズしたい場合は、次のように初期化します。
#プレフィックスをカスタマイズ
ta = TGAnalytics(LoggingConsumer(log_directory, file_suffix="xx"))
log_directory
はローカルに書き込むフォルダアドレスであり、LogBusの監視フォルダアドレスをここのアドレスに設定するだけで、LogBusでデータをアップロードすることができます。
(2)BatchConsumer**:**一括リアルタイムでTAサーバにデータを転送するため(同期非ブロッキング)、転送ツールを併用する必要はありません。ネットワークの問題で送信に失敗した場合、3回まで再試行し、再度失敗した場合、データをキャッシュに保存します。キャッシュのサイズは設定可能で、デフォルトで50のため、キャッシュ保存のデータ総量は最大50*20(20はアップロードのbatch値で、設定可能)です。長時間ネットワークが中断した場合、データが失われるリスクがあります。
ta = TGAnalytics(BatchConsumer(SERVER_URI,APP_ID))
内部ネットワークで転送したい場合は、次のように初期化します。
# compressのデフォルト値True,gzip圧縮を表す.
batchConsumer = BatchConsumer(server_uri="url", appid="appid",
compress=False)
ta = TGAnalytics(batchConsumer)
SERVER_URI
は転送データのURLで、APP_ID
はプロジェクトのAPP IDです。
クラウドサービスを使用している場合は、次のURLを入力してください。
http://ta-receiver.thinkingdata.io
オンプレミスサービスを使用している場合は、次のURLを入力してください。
http://数据采集地址
注意:バージョン1.3.0以前は次のURLを入力してください:
http://ta-receiver.thinkingdata.io/logagent
http://数据采集地址/logagent
(3)AsyncBatchConsumer**:**一括リアルタイムでTAサーバにデータを転送し(非同期非ブロッキング)、転送ツールを併用する必要がなく、本番環境での使用****することを推奨しません。
ta = TGAnalytics(AsyncBatchConsumer(SERVER_URI,APP_ID,flush_size=200,queue_size=100000))
SERVER_URI
は転送データのURLで、APP_ID
はプロジェクトのAPP IDです。
クラウドサービスを使用している場合は、次のURLを入力してください。
http://ta-receiver.thinkingdata.io
オンプレミスサービスを使用している場合は、次のURLを入力してください。
http://数据采集地址
flush_size
はキャッシュの閾値で、この値を超えるとすぐに送信します。
queue_size
はキャッシュのサイズで、queue_size
を超えるデータは失われます。
(4)DebugConsumer**:**リアルタイムでTAサーバーにデータを転送し、転送ツールを併用する必要はありません。データにエラーが発生した場合、データ全体が格納されず、詳細なエラー説明に戻ります。正式な環境での使用を推奨しません。
ta = TGAnalytics(DebugConsumer(SERVER_URI, APP_ID))
DebugConsumerはデータのみを検証し、TAに書き込まない場合、次のように初期化します。
#write_data值默认为True,代表写入TA库
ta = TGAnalytics(DebugConsumer(server_uri="SERVER_URI", appid="APP_ID",write_data=False))
SERVER_URI``は
転送データのURLで、APP_ID
はプロジェクトのAPP IDです。
クラウドサービスを使用している場合は、次のURLを入力してください。
http://ta-receiver.thinkingdata.io
オンプレミスサービスを使用している場合は、次のURLを入力してください。
http://数据采集地址
# 2、イベントの送信
SDKの初期化が完了した後、track
を呼び出してイベントをアップロードすることができます。通常、数十から数百の異なるイベントをアップロードする必要があります。TAを初めて使用する場合は、いくつかの重要なイベントをアップロードすることをお勧めします。
どのようなイベントを送信すれば良いかについて疑問がある場合、クイックガイドをご参照ください。
# 2.1送信イベント
track
を呼び出してイベントをアップロードすることができます。前の内容をもとに、イベントのプロパティと情報送信の条件を設定することをお勧めします。ここでは、ユーザー支払いの例を示します。
distinct_id = "ABCDEF123456"
account_id = "TA10001"
properties = {
"#time":datetime.datetime.now(),
# イベント発生時間設定,設定しない場合,デフォルトで現在時間を使用
"#ip":"192.168.1.1",
# ユーザーのIPを設定,tdaはIPによって自動的に省、都市を解析
#"#uuid":uuid.uuid1(),#任意,enable_uuidオンにした場合,入力しなくて良い
"Product_Name":"商品名",
"Price":30,
"OrderId":"订单号abc_123"
}
# イベントアップロード,アカウントIDとゲストIDを含む
try:
ta.track(distinct_id,account_id,"Payment",properties)
# ゲストIDのみアップロード
# ta.track(distinct_id = distinct_id, event_name = "Payment", properties = properties)
# またはアカウントIDのみアップロード
# ta.track(account_id = account_id, event_name = "Payment", properties = properties)
except Exception as e:
#異常処理
print(e)
**注意:**ゲストIDとアカウントIDを紐づけるために、ゲームでゲストIDとアカウントIDを使用する場合は、両方アップロードすることをお勧めします。
そうしないと、アカウントがマッチできず、ユーザーが計算を繰り返すことになります。具体的なID紐づけルールはユーザー識別ルールをご参照ください。
- イベントの名前はアルファベットで始まり、数値、アルファベット、下線「_」を含むことができます。長さは最大50文字で大文字と小文字を区別しません。
- イベントのプロパティは
dict
オブジェクトで、各要素は1つのプロパティを表します。 - Key値はプロパティの名前であり、
str
型でアルファベットで始まり、数値、アルファベット、下線「_」を含むことができます。長さは最大50文字で大文字と小文字を区別しません。 - Value値はプロパティ値であり、
str
、int
、float
、bool
、datetime.datetime
、datetime.date
、list
をサポートします。
# 2.2 パブリックイベントプロパティの設定
すべてのイベントに表示したいプロパティについては、set_super_properties
を使用してパブリックイベントプロパティに設定することができます。イベントを送信する前に、パブリックイベントプロパティを設定することをお勧めします。
# パブリックイベントプロパティを設定
super_properties = {
"server_version":"1.2.3",
"server_name":"A1001"
}
ta.set_super_properties(super_properties)
distinct_id = "ABCDEF123456"
account_id = "TA10001"
properties = {
"Product_Name":"商品A",
"Price":60
}
# イベントをアップロードし,イベントにはパブリックイベントプロパティとそのイベントのイベントプロパティを含む
try:
ta.track(distinct_id,account_id,"Payment",properties)
except Exception as e:
#異常処理
print(e)
'''
相当于进行下列操作
properties = {
"server_version":"1.2.3",
"server_name":"A1001",
"Product_Name":"商品A",
"Price":60
try:
ta.track(distinct_id,account_id,"Payment",properties)
except Exception as e:
#异常处理
print(e)
'''
- パブリックイベントプロパティも
dict
オブジェクトで、各要素は1つのプロパティを表します。 - Keyの値はプロパティの名前で、
str
型で、アルファベットで始まり、数値、アルファベット、下線「_」を含むことができます。長さは最大50文字で大文字と小文字を区別しません。 - Valueはプロパティの値であり、
str
、int
、float
、bool
、datetime.datetime
、datetime.date
、list
をサポートします。
set_super_properties
を呼び出して設定済のパブリックイベントプロパティを設定すると、以前のプロパティ値が上書きされます。パブリックイベントプロパティとtrack
でアップロードしたイベントのプロパティのKeyと重複する場合、イベントのプロパティはパブリックイベントプロパティを上書きします
super_properties = {
"server_version":"1.2.3",
"server_name":"A1001"
}
ta.set_super_properties(super_properties)
super_properties = {"server_name":"B9999"}
ta.set_super_properties(super_properties)
# この時"server"の值は"B9999"
distinct_id = "ABCDEF123456"
account_id = "TA10001"
properties = {
# "server_version"が上書きされる
"server_version":"1.3.4",
"Product_Name":"商品A",
"Price":60
}
# イベントをアップロードし,この時"server_version"の值は"1.3.4","server_name"の值は"B9999"
try:
ta.track(distinct_id,account_id,"Payment",properties)
except Exception as e:
#異常処理
print(e)
すべてのパブリックイベントプロパティを削除したい場合、clear_super_properties
を呼び出します。
# 3、ユーザープロパティ
TAプラットフォームで現在サポートしているユーザープロパティ設定インターフェイスはuser_set、user_setOnce、user_add、user_unset、user_append、user_delです。
# 3.1 user_set
通常のユーザープロパティは、user_set
を呼び出して設定することができます。このインターフェイスを使用してアップロードしたプロパティは、元のプロパティ値を上書きします。過去にこのユーザープロパティが存在しなかった場合は、新しいユーザープロパティが作成され、アップロードしたプロパティ型と同様です。
properties = {"user_name":"ABC"}
# ユーザープロパティをアップロードし,"user_name"の値は"ABC"
try:
ta.user_set(account_id = account_id, distinct_id = distinct_id, properties = properties)
properties = {"user_name":"XYZ"}
# ユーザープロパティを再アップロードし,"user_name"の値は"XYZ"に上書きされる
ta.user_set(account_id = account_id, distinct_id = distinct_id, properties = properties)
except Exception as e:
#異常処理
print(e)
user_set
設定のユーザープロパティはdict
オブジェクトで、各要素は1つのプロパティを表します。- Keyの値はプロパティの名前であり、
str
型で、アルファベットで始まり、数値、アルファベット、下線「_」を含むことができます。長さは最大50文字で大文字と小文字を区別しません。 - Valueはプロパティの値であり、
str
、int
、float
、bool
、datetime.datetime
、datetime.date
、list
を含むことができます。
# 3.2 user_setOnce
アップロードするユーザープロパティが1回しか設定しない場合、user_setOnce
を呼び出して設定することができます。このプロパティは既に値がある場合、この情報が無視されます。
properties = {"user_name":"ABC"}
# ユーザープロパティをアップロードし,"user_name"の値は"ABC"
try:
ta.user_setOnce(account_id = account_id, distinct_id = distinct_id, properties = properties)
except Exception as e:
#異常処理
print(e)
properties = {
"user_name":"XYZ",
"user_age":18
}
# ユーザープロパティを再アップロードし,"user_name"は既にあるため,"ABC"のままで変更されない;"user_age"の値は18
try:
ta.user_setOnce(account_id = account_id, distinct_id = distinct_id, properties = properties)
except Exception as e:
#異常処理
print(e)
user_setOnce
設定のユーザープロパティタイプと制限はuser_set
一致します。
# 3.3 user_add
数値型プロパティをアップロードするには、user_add
を呼び出して、そのプロパティに対して累積操作を行います。そのプロパティが設定されていない場合は、0を割り当ててから計算します。負の値も渡すことができ、減算に相当します。
properties = {
"total_revenue":30,
"vip_level":1
}
# ユーザープロパティをアップロード,"total_revenue"の値は30,"vip_level"の値は1
ta.user_add(account_id = account_id, distinct_id = distinct_id, properties = properties)
properties = {"total_revenue":60}
# ユーザープロパティをアップロード,"total_revenue"の値は90,"vip_level"の値は1
try:
ta.user_add(account_id = account_id, distinct_id = distinct_id, properties = properties)
except Exception as e:
#異常処理
print(e)
user_addで
設定したユーザープロパティ型および条件制限はuser_set
と一致するが、数値型のユーザープロパティのみが許可されます。
# 3.4 user_unset
ユーザーのユーザープロパティ値を削除したい場合、user_unset
を呼び出して指定したプロパティを空にすることができます。そのプロパティはクラスターで作成されていない場合、user_unset
がそのプロパティを作成しません。
try:
ta.user_unset(account_id, distinct_id, ["string1", "lasttime"])
except Exception as e:
#異常処理
print(e)
# 3.5 user_append
list型にユーザープロパティ値を追加するには、user_append
を呼び出して、指定したプロパティに追加操作を行います。このプロパティはクラスターで作成されていない場合はuser_append
で作成することができます。
list1 = []
list1.append('Google')
list1.append('Runoob')
properties = {'arrkey1': list1, 'arrkey2': ['11','22']}#//为arrkey1,arrkey2的数组类型追加属性
try:
ta.user_append(account_id=account_id, distinct_id=distinct_id, properties=properties)
except Exception as e:
#異常処理
print(e)
# 3.6 user_del
あるユーザーを削除したい場合、user_delete
を呼び出してユーザーを削除することができます。それ以降、このユーザーのユーザープロパティを参照することができなくなるが、発生したイベントを参照することができます。
try:
ta.user_del(account_id = account_id, distinct_id = distinct_id)
except Exception as e:
#異常処理
print(e)
# 4、その他の操作
# 4.1 データの即時提出
ta.flush()
即時に対応する受信機にデータを送信します。
# 4.2 SDKの終了
ta.close()
sdkを終了するには、キャッシュ内のデータの消去を避けため、サーバーをシャットダウンする前にこのインターフェイスを呼び出してください。
# 5、関連のプリセットプロパティ
# 5.1 すべてのイベントのプリセットプロパティ
次のプリセットプロパティは、Java SDKのすべてのイベント(自動収集イベントを含む)に含まれるプリセットプロパティです。
プロパティ名 | 日本語 | 説明 |
---|---|---|
#ip | IPアドレス | ユーザーのIPアドレス。TAはユーザーの位置情報を取得。 |
#country | 国 | ユーザーの国。IPアドレスに基づいて生成。 |
# country_code | 国コード | ユーザーがいる国の国コード(ISO 3166-1 alpha-2、2大文字のアルファベット)。IPアドレスに基づいて生成。 |
#province | 省 | ユーザーがいる省。IPアドレスに基づいて生成。 |
#city | 都市 | ユーザーがいる都市。IPアドレスに基づいて生成。 |
#lib | SDKタイプ | SDKのタイプ。Pythonなど。 |
#lib_version | SDKバージョン | Python SDKのバージョン。 |
# 6、高度な機能
v1.4.0以降、SDKは更新可能なイベント、書き換え可能なイベントとの2つの特殊イベントのアップロードをサポートしています。この2つのイベントは、TAシステム2.8以降のバージョンと併用する必要があります。特殊イベントは特定の場面でしか適用されないので、TAのクライアントとアナリストのもとに、特殊イベントのアップロードを行うようにしましょう。
# 6.1 更新可能なイベント
更新可能なイベントを通して、特定の場面でのイベントデータの変更要件を満たすことができます。更新可能なイベントは、イベントを識別するIDを指定し、更新可能なイベントオブジェクトの作成時に読み込むする必要があります。TAプラットフォームは、イベント名とイベントIDに基づいて更新するデータを決定します。
# 例: 更新可能なイベントをアップロード,イベント名は UPDATABLE_EVENTに仮定
distinct_id="65478cc0-275a-4aeb-9e6b-861155b5aca7"
account_id = "123"
event_name = "UPDATABLE_EVENT"
event_id = "123"
properties = {
"price": 100,
"status": 3
}
# イベントプロパティアップロード後に status は 3, price は 100
ta.track_update(distinct_id=distinct_id, account_id=account_id, event_name=event_name, event_id=event_id, properties=properties)
// イベントプロパティアップロード後に status は 5に更新され, price は変わらない不变
_new_proterties = {
"status": 5
}
ta.track_update(distinct_id=distinct_id, account_id=account_id, event_name=event_name, event_id=event_id, properties=_new_proterties)
# 6.2 書き換え可能なイベント
書き換え可能なイベントは更新可能なイベントと似ており、違いとしては書き換え可能なイベントは最新のデータで過去データを完全に上書きするので、過去データを削除し、最新のデータを格納することに相当します。TAプラットフォームは、イベント名とイベントIDに基づいて更新するデータを決定します。
# 例: 書き換え可能なイベントをアップロードし,イベント名は OVERWRITE_EVENTに仮定
distinct_id="65478cc0-275a-4aeb-9e6b-861155b5aca7"
account_id = "123"
event_name = "OVERWRITE_EVENT"
event_id = "123"
properties = {
"price": 100,
"status": 3
}
# イベントプロパティアップロード後に status は 3, price は 100
ta.track_overwrite(distinct_id=distinct_id, account_id=account_id, event_name=event_name, event_id=event_id, properties=properties)
//イベントプロパティアップロード後に status は 5に更新され, price は削除される
_new_proterties = {
"status": 5
}
ta.track_overwrite(distinct_id=distinct_id, account_id=account_id, event_name=event_name, event_id=event_id, properties=_new_proterties)
# ChangeLog
省略します。詳細は中国語版をご参照ください。