次の方法で共有


Avrotize ツール

Avrotize は、データとデータベーススキーマの形式を変換し、さまざまなプログラミング言語でコードを生成するための汎用性の高いツール です。 このツールでは、Kusto テーブル定義を Avrotize Schema コマンドに変換する を使用して、Kusto テーブル スキーマを Apache Avro 形式 に変換できます。 このツールは、Kusto テーブルの動的列を次の方法で処理します。

  • サンプリングによるスキーマの推論
  • 任意のレベルの入れ子で配列とレコードを解決する
  • 競合するスキーマの検出
  • 異なるスキーマ ブランチごとに型共用体を作成する

手記

Avrotize k2a ツールは、製品のサポートなしで as-is 提供されるオープンソース ツールです。

テーブル定義を AVRO 形式に変換する

avrotize k2a コマンドを使用して Kusto データベースに接続し、データベース内の各テーブルのレコード型を持つ Avro スキーマを作成できます。

コマンドの使用方法の例を次に示します。

  • 各テーブルのレコードを含む最上位の共用体を持つ Avro スキーマを作成します。

    avrotize k2a --kusto-uri <Uri> --kusto-database <DatabaseName> --avsc <AvroFilename.avsc>
    
  • CloudEvent ラッパーとイベントごとのスキーマを使用して XRegistry カタログ ファイルを作成します。

    次の例では、各テーブルのスキーマを含む xRegistry カタログ ファイルを作成します。 入力テーブルに、IDソースなどの列によって識別される CloudEvent が含まれている場合、ツールはイベントの種類ごとに個別のスキーマを作成します。

    avrotize k2a --kusto-uri <URI> --kusto-database <DatabaseName> --avsc <AvroFilename.xreg.json> --emit-cloudevents-xregistry --avro-namespace <AvroNamespace>
    

AVRO スキーマを Kusto テーブル宣言に変換する

avrotize a2k コマンドを使用して、Avro スキーマと JSON マッピングから KQL テーブル宣言を作成できます。 また、Avro レコード型の "doc" 注釈から抽出されたテーブル宣言に docstring を含めることもできます。

Avro スキーマが 1 つのレコード型の場合、出力スクリプトにはレコードの .create table コマンドが含まれます。 レコード フィールドは、テーブル内の列に変換されます。 Avro スキーマが型共用体 (最上位の配列) の場合、出力スクリプトは共用体のレコード型ごとに個別の .create table コマンドを出力します。

avrotize a2k  .\<AvroFilename.avsc> --out <KustoFilename.kql>

Avrotize ツールでは、JSON スキーマ、XML スキーマ、ASN.1 スキーマ、Protobuf 2 および Protobuf 3 スキーマを Avro スキーマに変換できます。 最初にソース スキーマを Avro スキーマに変換して正規化してから、Kusto スキーマに変換できます。

たとえば、"address.json" を Avro スキーマに変換するには、次のコマンドで最初に入力 JSON スキーマ ドキュメント "address.json" を変換して正規化します。

avrotize j2a address.json --out address.avsc

次に、Avro スキーマ ファイルを Kusto スキーマに変換します。

avrotize a2k address.avsc --out address.kql

コマンドを連結して、Avro を介して JSON スキーマから Kusto スキーマに変換することもできます。

avrotize j2a address.json | avrotize a2k --out address.kql