App Analyticsを始めましょう

Important

この機能は、プライベート プレビュー段階にあります。 試すには、Azure Databricks の連絡先にお問い合わせください。

既存アプリに分析を追加するには、イベントを記録し、バックエンドで転送し、 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で検証

  1. アプリの既存のデプロイワークフローを使って変更をデプロイし、その後インストゥルメンタル操作をトリガーします。
  2. アプリ詳細ページで Analytics を開き、SQLウェアハウスを選択します。
  3. オンボーディングが表示されている場合は、「 イベントの確認」を選択し、イベントが発生した際に 「分析を開く 」と表示します。
  4. トップアクションやライブイベントでreport_exportedを見つけましょう。

テーブルへの取り込みの前に、コレクターによる受け入れが行われます。 イベントが表示されない場合は、Analyticsを更新して時間範囲を確認してください。 UIに表示される権限の指示に従ってください。 基礎となるテレメトリデータを確認するには、「 テレメトリデータの検証」をご覧ください。

その他のリソース