Important
この機能は、プライベート プレビュー段階にあります。 試すには、Azure Databricks の連絡先にお問い合わせください。
既存アプリに分析を追加するには、イベントを記録し、バックエンドで転送し、 Analyticsで検証します。 特定の分析ライブラリは必須ではありません。
前提条件
- App Analyticsプレビューに登録され、 アプリのテレメトリーが有効になっています。
- 要件に記載された権限。
ステップ1:イベントの記録
既存のインタラクションハンドラーからこのコードを呼び出します。 この例はレポートエクスポートが成功した後の report_exported を記録します:
const logRecord = {
timeUnixNano: (BigInt(Date.now()) * 1000000n).toString(),
eventName: 'report_exported',
attributes: [
{ key: 'databricks.app.analytics.schema.version', value: { intValue: '1' } },
{ key: 'databricks.app.analytics.event.id', value: { stringValue: crypto.randomUUID() } },
{ key: 'databricks.app.analytics.event.type', value: { stringValue: 'action' } },
{ key: 'databricks.app.analytics.event.name', value: { stringValue: 'report_exported' } },
],
};
const response = await fetch('/_analytics', {
method: 'POST',
headers: { 'content-type': 'application/json' },
body: JSON.stringify(logRecord),
});
if (!response.ok) throw new Error('Analytics export failed.');
/_analyticsはアプリに追加するルートであり、組み込みのAzure Databricksエンドポイントではありません。 ステップ2ではバックエンドハンドラーのエクスポートロジックが表示されます。
session_id はオプションです。 もし提供する場合は、すべてのイベントごとに新しいセッションIDを生成するのではなく、発信元の分析セッションを再利用してください。 イベントを再試行する場合は、同じレコードをIDとタイムスタンプを含めて再送信してください。
ページビュー、ウェブバイタル、アクションプロパティについては、 ペイロードの例を参照してください。
ステップ2:バックエンドからエクスポート
既存のバックエンドに POST /_analytics ハンドラーを追加してください。 解析・検証済みのリクエストボディを次の関数に渡します。 ルートはアプリのアクセス制御の後ろに置き、既存のリクエスト制限とエラー処理を適用してください。 関数が成功した後にのみブラウザに成功を返します。
この関数はレコードをOpenTelemetry Protocol(OTLP)リクエストでラップし、アプリのコレクタに送信します。
async function exportAnalyticsRecord(logRecord) {
const endpoint = process.env.OTEL_EXPORTER_OTLP_ENDPOINT;
if (endpoint !== 'http://localhost:4314') {
throw new Error('This example requires the TCP OTLP/HTTP receiver at localhost:4314.');
}
const response = await fetch(`${endpoint}/v1/logs`, {
method: 'POST',
headers: { 'content-type': 'application/json' },
body: JSON.stringify({
resourceLogs: [
{
resource: {
attributes: [{ key: 'service.name', value: { stringValue: process.env.DATABRICKS_APP_NAME } }],
},
scopeLogs: [{ logRecords: [logRecord] }],
},
],
}),
});
if (!response.ok) throw new Error('Collector rejected the request.');
const text = await response.text();
const result = text ? JSON.parse(text) : {};
if (Number(result.partialSuccess?.rejectedLogRecords ?? 0) > 0) {
throw new Error('Collector rejected the event.');
}
}
Important
このHTTPの例では、HTTPとgRPCの両方をサポートするTCP受信機を localhost:4314に使用しています。
unix://やgRPC専用のエンドポイントの場合は、互換性のあるOpenTelemetryエクスポーターを使いましょう。 コレクターは、ビジターのデバイス上ではなく、デプロイされたアプリ内で動作します。 アプリの テレメトリー環境変数を参照してください。
ステップ3:Analyticsで検証
- アプリの既存のデプロイワークフローを使って変更をデプロイし、その後インストゥルメンタル操作をトリガーします。
- アプリ詳細ページで Analytics を開き、SQLウェアハウスを選択します。
- オンボーディングが表示されている場合は、「 イベントの確認」を選択し、イベントが発生した際に 「分析を開く 」と表示します。
-
トップアクションやライブイベントで
report_exportedを見つけましょう。
テーブルへの取り込みの前に、コレクターによる受け入れが行われます。 イベントが表示されない場合は、Analyticsを更新して時間範囲を確認してください。 UIに表示される権限の指示に従ってください。 基礎となるテレメトリデータを確認するには、「 テレメトリデータの検証」をご覧ください。