次の方法で共有


Digital Platform API - BSS AVRO ファイル形式

このドキュメントでは、AVRO ファイル形式を使用して対象ユーザー ファイルを準備し、データをプラットフォームにオンボードする方法について説明します。 拡張 ID と発行元が指定した ID を含む対象ユーザーをアップロードするには AVRO が必要であり、従来の BSS ファイル形式では、新しいユーザー ID の種類はサポートされていません。

ベスト プラクティス

  • 推奨されるファイル サイズ: 1 ファイルあたり 100 から 300 mb
  • 推奨されるファイル圧縮: deflate
  • 推奨される配信方法: パッシブ セグメントのアップロード (アカウント マネージャーにアクセスする)
  • セグメントの更新: 完全な対象ユーザー メンバーシップを再度送信する代わりに、既存のセグメントの変更のみをアップロードできます。 これにより、データ サイズが縮小され、1 日のアップロード制限に達する可能性が高くなります。

手順の概要

  • ユーザー セグメント レコードについて
  • AVRO ツール ライブラリをインストールする
  • Xandr AVRO スキーマ ファイルをダウンロードする
  • AVRO 対象ユーザー ファイルを生成する

ユーザー セグメント レコード

ユーザー レコードには、最上位の 2 つの要素があります。

  • ユーザー ID (uid)
  • セグメントの配列

ユーザー ID の種類

uid レコードごとにアップロードできる ID の種類は 1 つだけです (Xandr ユーザー ID、IFA、デバイス ID、eid など)。

このセクションでは、サポートされているさまざまなユーザー ID の種類とその説明、および Java ライブラリと Python ライブラリの例を見つけます。

AppNexus/Xandr User ID (ANID)

Xandr ID (とも呼ばれます user_id_64)。

Java ライブラリの例:

{"uid":
{"long":12345},
"segments":
[{"id":123,
"code":"",
"member_id":0,
"expiration":0,
"timestamp":0,
"value":0}]}

Python ライブラリの例:

{'uid': 64, 'segments': [seg1]}

Device ID

ifa (広告用識別子) と同様のユーティリティ。 オンボードされているモバイル デバイスの種類を示します。 レコードは device_id 、次の 2 つのフィールドで構成されます。

  • domain (enum) - 使用できる値は idfa、sha1udid、md5udid、openudid、aaid、windowsadid、rida、tifa、vida、lgudid です。
  • id (string)

Java ライブラリの例:

{"uid":
{"device_id":
{"id":"958cba26-f338-43f3-8bb0-ed821582daae",
"domain":"idfa"}},
"segments":
[{"id":123,
"code":"",
"member_id":0,
"expiration":0,
"timestamp":0,
"value":0}]}

Python ライブラリの例:

{'uid': {'id': 'qweqeqweq', 'domain': 'idfa'}, 'segments': [seg1]}

Extended ID's(eid) or Publisher-provided ID's(PPID)

拡張 ID - オンボードされているユニバーサル ID またはパブリッシャー ID の種類を示します。 eid レコードは、次の 2 つのフィールドで構成されます。

  • source (string) - ID のソース。 許可される値は、アクセス許可を持つメンバー定義のソースです。
  • id (string) - パブリッシャーまたは業界 ID。

現在、これらは、対象ユーザーのオンボードに使用できる唯一の 2 つです。

Java ライブラリの例:

{"uid":
{"eid":
{"source":"liveramp.com",
"id":"123123123"}},
"segments":
[{"id":123,
"code":"",
"member_id":0,
"expiration":0,
"timestamp":0,
"value":0}]}

Python ライブラリの例:

{'uid': {'id': 'qweqeqweq', 'source': 'liveramp.com'}, 'segments': [seg1]}

External ID

外部 ID - オンボードされているメンバー定義識別子を示します。 レコードは external_id 、次の 2 つのフィールドで構成されます。

  • member_id (int) - を所有 external_idするメンバーのメンバー ID。
  • id (string) - の対応する値 member_id

Java ライブラリの例:

{"uid":
{"external_id":
{"id":"clientid1",
"member_id":958}},
"segments":
[{"id":123,
"code":"",
"member_id":0,
"expiration":0,
"timestamp":0,
"value":0}]}

Python ライブラリの例:

{'uid': {'id': 'extid1', 'member_id': 914}, 'segments': [seg1]}

Identifier for Advertising (or IFA)

アドバタイズの識別子 - オンボードされているデバイスの種類を示します。 ifa レコードは、次の 2 つのフィールドで構成されます。

  • type (string) - ID の型。
  • id (string) - IFA ID。UUID 形式の IFA を表します。

サポートされている ifa 型については、「 デバイス拡張機能オブジェクト 」を参照してください

Java ライブラリの例:

{"uid":
{"ifa":
{"id":"99136473264876328",
"type":"atif"}},
"segments":
[{"id":123,
"code":"",
"member_id":0,
"expiration":0,
"timestamp":0,
"value":0}]}

Python ライブラリの例:

{'uid': {'id': 'qweqeqweq', 'type': 'atif'}, 'segments': [seg1]}

Segments オブジェクト

セグメント オブジェクトの配列を作成することで、同じ uid レコード内の複数のセグメントにアップロードできます。

File 説明
code string Xandr セグメント コード。
expiration int セグメントの有効期限 (分単位)。 に設定します。
- 0 最大有効期限 (180 日)。
- -1 セグメントの削除。
- -2 既定のメンバーの有効期限。
id int Xandr セグメント ID
member_id int セグメントのメンバー ID。 コードが指定されている場合は必須
timestamp long セグメントのアクティブ化時間 (エポックからの秒数)。 セグメントが "ライブ" になるタイミングを指定します。 セグメントをすぐにアクティブにするには、0 に設定します
value int セグメント値

AVRO ツール ライブラリのインストール

  • Java ライブラリ
curl -o http://archive.apache.org/dist/avro/avro-1.10.1/java/avro-tools-1.10.1.jar
  • Python ライブラリ
python3 -m pip install avro

Xandr Avro スキーマをダウンロードする

Xandr Avro スキーマは 、ここからダウンロードできます。

AVRO 対象ユーザー ファイルを生成する

Java ライブラリと Python ライブラリの使用例については、以下を参照してください。

Java の例

対象ユーザー ファイルを作成する

{"uid":{"long":12345},"segments":[{"id":123,"code":"","member_id":0,"expiration":0,"timestamp":0,"value":0}]}
{"uid":{"external_id":{"id":"clientid1","member_id":958}},"segments":[{"id":123,"code":"","member_id":0,"expiration":0,"timestamp":0,"value":0}]}
{"uid":{"ifa":{"id":"99136473264876328","type":"atif"}},"segments":[{"id":123,"code":"","member_id":0,"expiration":0,"timestamp":0,"value":0}]}
{"uid":{"device_id":{"id":"958cba26-f338-43f3-8bb0-ed821582daae","domain":"idfa"}},"segments":[{"id":123,"code":"","member_id":0,"expiration":0,"timestamp":0,"value":0}]}
{"uid":{"eid":{"source":"liveramp.com","id":"123123123"}},"segments":[{"id":123,"code":"","member_id":0,"expiration":0,"timestamp":0,"value":0}]}

対象ユーザー ファイルを AVRO に変換する

次のコマンドを実行します。

java -jar avro-tools-1.10.1.jar fromjson --codec deflate --schema-file xandr_schema.avsc sample.json > sample.avro  

場所

  • xandr_schema.avsc = 指定された Xandr Avro スキーマ ファイル。
  • sample.json = 対象ユーザー ファイル。
  • and sample.avro = 出力 AVRO ファイル

Python の例

注:

  • この例は Python Avro ライブラリ用であり、 Fast Avro ライブラリと混同しないでください。

  • Python Avro ライブラリでは、uid 共用体の型名は使用されません。 代わりに、フィールド名の完全一致によって uid 型が決定されます。

: {'uid': {'id': 'qweqeqweq', 'domain': 'idfa'}, 'segments': […]}

  • Fast Avro ライブラリでは、ヒントを使用して、Java ライブラリと同様の uid の正確な種類を指定します。

: {'uid': ('external_id', {'id':'exitd1', 'member_id': 914}), 'segments': [{'expiration': 259200, 'id': 25815407}]}

  • DataFileWriter.append() は、JSON ではなく Python ディクショナリ (dict) 型を受け入れます。

AVRO 対象ユーザー ファイルの作成

Python Avro ライブラリを使用したサンプル スクリプト:

import avro.schema
from avro.datafile import DataFileReader, DataFileWriter
from avro.io import DatumReader, DatumWriter
  
# the supplied xandr schema
schema = avro.schema.parse(open("xandr_schema.avsc", "rb").read())
  
# output avro file 
writer = DataFileWriter(open("sample.avro", "wb"), DatumWriter(), schema, codec=’deflate’)
   
# segments
seg1 = {'id': 1000, 'code': '', 'member_id': 0, 'expiration': 0, 'timestamp': 0, 'value': 0}
   
# anid
writer.append({'uid': 64, 'segments': [seg1]})
   
# external id
writer.append({'uid': {'id': 'exitd1', 'member_id': 914}, 'segments': [seg1]})
   
# idfa
writer.append({'uid': {'id': 'qweqeqweq', 'domain': 'idfa'}, 'segments': [seg1]})
   
# eid (or ppid)
writer.append({'uid': {'id': 'qweqeqweq', 'source': 'liveramp.com'}, 'segments': [seg1]})
writer.append({'uid': {'id': 'qweqeqweq', 'source': 'netid.de'}, 'segments': [seg1]})
   
writer.close()