✅ Azure Stream Analytics ✅ Fabric Eventstream
各レコードには、関連するデータ型があります。 データ型は、その型のレコードが保持できる値のセット、またはその型の式が生成できる値のセットを記述 (および制約) します。
列ではなく型を持つレコードであることに注意してください。 列の各レコードは、異なる型を持つことができます。 ほとんどのアプリケーションで透過的な場合は、スキーマ の誤差シナリオやその他の通常とは異なる型指定パターンを簡単に処理できます。
サポートされているデータ型
サポートされているデータ型の一覧を次に示します。
データ型 | 説明 |
---|---|
bigint | -2^63 (-9,223,372,036,854,775,808) ~ 2^63-1 (9,223,372,036,854,775,807) の整数。 |
float | 1.79E+308 から -2.23E-308、0、2.23E-308 から 1.79E+308 までの範囲の浮動小数点数。 通常、浮動小数点数には、正確なバイナリ表現がありません。 精度の損失が発生する可能性があります。 これは Azure Stream Analytics に固有ではありませんが、すべての浮動小数点数実装で発生します。 |
nvarchar(max) | Unicode 文字で構成されるテキスト値。 注: max 以外の値はサポートされていません。 |
datetime | 秒の小数部 (7 桁、100 ナノ秒の有効桁数) を持つ時刻と組み合わされる日付を定義します。これは、24 時間クロックに基づき、UTC (タイム ゾーン オフセット 0) を基準とします。 |
ビット | 1、0、または NULL の値を受け取ることができる整数。 これは互換性 レベル 1.2 以降でサポートされています。 |
レコード | 名前と値のペアのセット。 値は、サポートされているデータ型である必要があります。 |
アレイ | 値の順序付きコレクション。 値は、サポートされているデータ型である必要があります。 |
bigint と float データ型を結合 (または比較) できます。 これは、表現できない非常に大きな bigint 値の場合を除き、すべてのケースで正しく機能します。
注
範囲外の bigint データ型を読み取ると、Azure Stream Analytics でサポートされます。Stream Analytics ジョブは、 エラー メッセージ InputDeserializationError を使用してイベントを逆シリアル化できません。 データを前処理し、文字列に変換できます。 1 つのオプションは、Azure 関数を使用してデータを前処理し、このような大きな整数を文字列に変換することです。
型の変換
データ型の変換を管理する規則を次に示します。
- 入力の読み取りと出力の書き込み操作中に精度が低下しない変換は暗黙的であり、常に成功します
- 出力書き込み操作内の精度の損失とオーバーフローは、構成済みのエラー ポリシー ([ドロップ] または [再試行] に設定) によって処理されます
- 出力書き込み操作中に発生する型変換エラーは、エラー ポリシーによって処理されます
- 入力読み取り操作中に発生した型変換エラーにより、ジョブがイベントを削除する
値を float に変換すると、精度が失われる可能性があります。 これは、Azure Stream Analytics に固有のものではなく、一般的には float データ型に固有です。 そのため、エラーとは見なされません。 すべての桁を節約する必要がある場合は、データを文字列として読み取る必要があります。
データのキャスト
ストリーミング SQL 言語には、データのデータ型の監視と調整に役立つ 4 つの関数があります。
- CAST : 1 つの列を特定の型にキャストします。変換エラーが発生した場合、ジョブは失敗します
-
TRY_CAST : 1 つの列を特定の型にキャストします。エラーは NULL として許容されます。 最適な使用方法については 、入力の検証 を参照してください
TRY_CAST
- CREATE TABLE : 入力に対して 1 つの明示的なスキーマを定義します。 変換エラーが発生した行がストリームから削除される
- GetType : 列の型を返します
ほとんどのユース ケースでは、 TRY_CASTを使用することをお勧めします。 この関数は、エラーの値を NULL に置き換えることでデータの損失を防ぎつつ、出力の種類を確保することでダウンストリーム処理を保護します。 行は削除されず、元の値は別の列に投影できます。
強力な保証のために、推奨されるオプションは CREATE TABLE を使用することです。 この方法では、特定の入力のスキーマをジョブに通知でき、逸脱のリスクはありません。 トレードオフとして、特定の入力で定義できるスキーマは 1 つだけであり、準拠していない行は削除されます。
可能であれば、他の関数で暗黙的に (サイレントに) 行うのではなく、これらの関数を介してすべてのキャスト操作を明示的に実行する必要があります。 これにより、SQL データベースなどの厳密に型指定された出力に対する型の不一致、予期しない動作、挿入エラーが回避されます。 このようなエラーからメイン クエリ ロジックを保護する方法については、 入力の検証 を参照してください。
ビットへの変換
値は、次の規則を使用して float と bit の間で変換されます。
より | 移行先 |
---|---|
(BIT) 1 | (FLOAT) 1.0 |
(BIT) 0 | (FLOAT) 0.0 |
(BIT)ヌル | (FLOAT)ヌル |
(FLOAT) 0.0 | (BIT) 0 |
(FLOAT) その他の値 | (BIT) 1 |
(FLOAT)ヌル | (BIT)ヌル |
型マッピングとシリアル化形式
データの種類 | の CSV | CSV 出力 | JSON in | JSON out | Avro in | Avro out |
---|---|---|---|---|---|---|
bigint | 64 ビット符号付き整数に変換された文字列 | ジョブ カルチャを使用して文字列に変換された 64 ビット符号付き整数 | number: 64 ビット符号付き整数に変換された整数。 ブール値: 互換性レベル 1.1 以下の "false" は 0 に変換され、"true" は 1 に変換されます |
number: integer | long および int は 64 ビット符号付き整数に変換されます。 ブール値: 互換性レベル 1.1 以下の false は 0 に変換され、true は 1 に変換されます |
長い |
浮く | 64 ビット符号付き浮動小数点数に変換された文字列 | ジョブ カルチャを使用して文字列に変換された 64 ビット符号付き浮動小数点数 | number: 64 ビット符号付き浮動小数点数に変換された分数 | number: fraction | double と float を 64 ビット符号付き浮動小数点数に変換 | ダブル |
nvarchar(max) | 文字列 | 文字列 | 文字列 | 文字列 | 文字列 | 文字列 |
datetime | ISO 8601 標準に従って datetime に変換された文字列 | ISO 8601 標準を使用した文字列 | ISO 8601 標準に従って datetime に変換された文字列 | ISO 8601 標準を使用して文字列に変換された datetime | ISO 8601 標準に従って datetime に変換された文字列 | ISO 8601 標準を使用して文字列に変換された datetime |
bit (互換性レベル 1.2 以降) | 文字列 "true"、"false"、または "null" は、対応する整数値 1、0、または null に変換されます | 文字列 "true" または "false" に変換される | ブール値: "false" は 0 に変換され、"true" は 1 に変換されます | ブール値: ブール値 | ブール値: false は 0 に変換され、true は 1 に変換されます | ブーリアン |
記録 | なし | サポートされていません。"Record" 文字列が出力されます | JSON オブジェクト | JSON オブジェクト | Avro レコードの種類 | Avro レコードの種類 |
配列 | なし | サポートされていません。"Array" 文字列が出力されます | JSON オブジェクト | JSON オブジェクト | Avro レコードの種類 | Avro レコードの種類 |
注
Parquet にはデータ型の変換は必要ありません。
構造化データ ストアへの書き込み時の型マッピング
データの種類 | SQL | Power BI | Azure Cosmos DB | PostgreSQLの | Azure Data Explorer |
---|---|---|---|---|---|
bigint | bigint、int、smallint、tinyint、すべての文字列型 (ntext、nvarchar、char、...) | はい | numeric: integer | bigint | dynamic、int、long |
浮く | float、real、decimal、numeric、すべての文字列型 (ntext、nvarchar、char、...) | はい | number: fraction | 倍精度、数値。 1.78E+308 に制限 | dynamic, real, double |
nvarchar(max) | すべての文字列型 (ntext、nvarchar、char、uniqueidentifier...) | はい | 文字列 | 文字可変、テキスト | dynamic, string |
datetime | datetime、datetime2、datetimeoffset、すべての文字列型 (ntext、nvarchar、char、...) | はい | ISO 8601 標準を使用して文字列に変換された datetime | timestamp、time。 タイムゾーンオプションはサポートされていますが、タイムゾーンは提供されません | dynamic、string、datetime |
bit (互換性レベル 1.2 以降) | bigint、int、smallint、tinyint、bit、すべての文字列型 (ntext、nvarchar、char、...) | はい | boolean: 1 は true に変換され、0 は false に変換されます | ビット | dynamic、 bool |
記録 | サポートされていません。"Record" 文字列が出力されます | サポートされていません。"Record" 文字列が出力されます | JSON オブジェクト | サポートされていません | dynamic、bool、long、datetime、byte 配列、real、double、string |
配列 | サポートされていません。"Array" 文字列が出力されます | サポートされていません。"Array" 文字列が出力されます | JSON オブジェクト | サポートされていません | dynamic, string |