イベントのデータ型とNull可能性
Telemetry は、構造化イベントからテーブル スキーマを推測します。柔軟な取り込みにより事前の移行手順が不要になりますが、有用な SQL は依然として安定したフィールドの意味と型に依存します。
耐久性の高いタイプを選ぶ
識別子と制御されたカテゴリには文字列を、計算される値には数値を、真の 2 状態の事実にはブール値を、瞬間にはタイムスタンプを使用します。
| 値 | おすすめ分野 |
|---|---|
| 期間 | 数値 duration_ms |
| お金 | 正規化された数値とソース通貨の合計 |
| 識別子 | 数字のみを含む場合でも文字列 |
| 結果 | 次のような制御された文字列 success, failed、または timeout |
| 機能フラグ | 正確に 2 つの意味がある場合のブール値 |
| イベント時間 | タイムゾーン修飾された入力を正規化したもの timestamp_utc |
送信しないでください "842" 1 つの展開で一定期間、 842 別のところで。再利用しないでください status あるサービスの HTTP コードと別のサービスのワークフロー カテゴリの場合。
欠損値を理解する
ログ API は、正規化中に null 値、空のオブジェクト、および空の配列を削除します。したがって、フィールドが欠落しているということは、その行に値が格納されていないことを意味します。これは、ゼロ、偽、空の文字列、または不明を意味するものではありません。
使用する IS NULL 不在が分析的に意味のある場合。使用する COALESCE 代替品に防御可能なビジネス上の意味がある場合のみ:
SELECT
event_name,
100.0 * SUM(CASE WHEN account_id IS NULL THEN 1 ELSE 0 END)
/ NULLIF(COUNT(*), 0) AS missing_account_rate_pct
FROM product_events
GROUP BY event_name;
の 必須フィールドのヌルレートレシピ ボリューム保護機能とプロデューサー バージョン コンテキストを追加します。
意味を変えずに進化する
通常、Null 許容フィールドの追加には互換性があります。フィールドのタイプを変更したり、既存のカテゴリを再定義したりすることはできません。意味が変わったら、新しい分野を導入したり、 schema_version そしてクエリを意図的に移行します。
ネストされたオブジェクトはクエリ可能な点線フィールドになります。入れ子になった各パスを安定した状態に保ち、要素構造がイベント間で変化する配列を避けます。
レビュー スキーマの進化, イベントスキーマ設計、そして ネストされた JSON のクエリ 生産契約を拡大する前に。