JavaScript SDK v3.1から、セキュリティを向上させ、ingestionのボトルネックを排除するために、新しいingestion endpointがサポートされています。この新しいendpointを使用することで、以下の拡張機能と変更が導入されます:
これらの値は入力されなくなります。顧客はtd_user_agentからPrestoおよびHiveのTD_PARSE_AGENT関数を使用してそれらを取得する必要があります:
td_browser: クライアントbrowser
- td_browser_version: クライアントbrowserバージョン
- td_os: クライアントoperating system
- td_os_version: クライアントoperating systemバージョン
- 注: td_user_agentは、navigator.userAgent APIを介してJavaScriptを使用して入力されます
JSSDK/versionがtd_user_agentプロパティの末尾に追加されます
- すなわち、
td_user_agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36;JSSDK/3.1.1"
- すなわち、
新しいendpointは、requestが受信されるとAPIKEYを検証します。APIKEYが無効な場合、即座に401エラーを返します。
{"code":401,"message":"Credentials are required to access this resource."}
TD JS SDKは、trackPageview関数を使用して以下のパラメータをログに記録します。
| パラメータ | 説明 | デフォルト |
|---|---|---|
| td_version | td-js-sdkのバージョン | X |
| td_client_id | クライアントのuuid | NO |
| td_charset | 文字セット | X |
| td_description | descriptionメタタグ | X |
| td_language | ブラウザ言語 | X |
| td_color | 画面のcolor depth | X |
| td_screen | 画面解像度 | X |
| td_viewport | viewportサイズ | X |
| td_title | ドキュメントタイトル | X |
| td_url | ドキュメントURL | X |
| td_user_agent | ブラウザuser agent | X |
| td_platform | ブラウザplatform | X |
| td_host | ドキュメントhost | X |
| td_path | ドキュメントpathname | X |
| td_referrer | ドキュメントreferrer | X |
| td_ip | リクエストIP(server) | NO |
| td_browser | クライアントbrowser(server) | X |
| td_browser_version | クライアントbrowserバージョン(server) | X |
| td_os | クライアントoperating system(server) | X |
| td_os_version | クライアントoperating systemバージョン(server) | X |
| td_global_id | 3rd party cookie | NO |
| td_ssc_id | Server Side Cookie | NO |
追跡されるデフォルトパラメータには、グローバルなプライバシー法への準拠を確保するためにtd_client_id、td.ip、およびtd_global_idが含まれていません。td.setコマンドを呼び出すことで有効にできます。
新しいJavaScript endpointをオプトインするための新しいオプションuseNewJavaScriptEndpointを導入します。これにはtrueまたはfalse値があります。このオプションを有効にする場合は、新しいendpointを指すようにhost設定も変更する必要があります。
host設定は、使用する環境に応じて以下の値を持つ必要があります:
AP02リージョン: ap02.records.in.treasuredata.com
Tokyoリージョン: ap01.records.in.treasuredata.com
USリージョン: us01.records.in.treasuredata.com
EU01リージョン: eu01.records.in.treasuredata.com
_useNewJavaScriptEndpoint_をfalseに設定するか、設定しないことでこの機能をオプトアウトする場合は、hostを古い設定に更新してください。
var td = new Treasure({
database: 'foo',
writeKey: 'your_write_only_key',
useNewJavaScriptEndpoint: true,
host: 'us01.records.in.treasuredata.com'
});- 以前のバージョンでサポートされている既存の関数を使用できますか?
- はい。機能は現状のままです。
- queryでtd_browser、td_browser_version、td_os、td_os_versionを取得するにはどうすればよいですか?
-- Presto
-- element_atはkeyが欠落している場合でも処理できます。
SELECT
element_at(
td_parse_agent(td_user_agent) ,
'name'
) AS td_browser,
element_at(
td_parse_agent(td_user_agent) ,
'version'
) AS td_browser_version,
element_at(
td_parse_agent(td_user_agent) ,
'os'
) AS td_os,
element_at(
td_parse_agent(td_user_agent) ,
'os_version'
) AS td_os_version
FROM
web_access
-- OR, 以下はHiveとPrestoの両方で機能します
SELECT
td_parse_agent(td_user_agent) ['name'] AS td_browser,
td_parse_agent(td_user_agent) ['version'] AS td_browser_version,
td_parse_agent(td_user_agent) ['os'] AS td_os,
td_parse_agent(td_user_agent) ['os_version'] AS td_os_version
FROM
web_accessReal-time segmentationを使用するには、Backendからのルーティング有効化が必要です。Treasure Data Supportに連絡して、ルーティングを有効にするアカウント、database、tableをお知らせください。バックエンドから実行できます。将来のリリースでこの制限を削除する予定です。