すべてのプロダクト
Search
ドキュメントセンター

Platform For AI:KV からテーブルへ

最終更新日:Sep 10, 2026

KV からテーブルへコンポーネントは、スパースなキーと値 (KV) 形式のデータを通常の表形式の列に変換します。各キーを列名として、各値を対応するセルの値として使用します。これにより、KV 形式でエンコードされた特徴データを、下流モデルのトレーニングや分析にすぐに使用できるようになります。

仕組み

各行にカンマ区切りの key:value ペアを含む KV 列があるとします。

入力 — サンプルごとに行が 1 つ、KV 列が 1 つ:

kv
1:1,2:2,3:-3.3
1:10,2:20,3:-33.3

出力 — キーごとに数値列が 1 つ:

kv_1 kv_2 kv_3
1.0 2.0 -3.3
10.0 20.0 -33.3

このコンポーネントは、列名とキーインデックス間のマッピングを記録する `key_map` テーブルも書き込みます。

col_name col_index col_type
kv_1 1 double
kv_2 2 double
kv_3 3 double

変換された列は、出力では追加列の前に表示されます。

基本概念

KV フォーマット

KV 列の各値は、key:value,key:value,... というフォーマットに従う必要があります。ここで、

  • キーは列名のインデックス (整数) です。

  • 値は BIGINT 型または DOUBLE 型である必要があります。数値データ型の列のみ変換できます。

  • 行に重複キーが含まれている場合、コンポーネントはそれらの値を合計します。

key_map テーブル

`key_map` テーブルは、列名とキーインデックスのマッピングおよびデータ型情報を記録します。そのスキーマは、3 つの STRING 列を使用します。

列 説明
col_name 出力列名
col_index キーインデックス
col_datatype データの型。指定しない場合、デフォルトは DOUBLE です

カスタムの `key_map` テーブルをインポートして、変換するキーや出力列が使用するデータの型をコントロールできます。`key_map` テーブルがインポートされると、`key_map` テーブルと入力 KV 列の両方に存在するキーのみが変換され、出力列のデータの型は `key_map` テーブルと一致します。

コンポーネントは、`key_map` テーブルがインポートされたかどうかに関係なく、常に `key_map` テーブルをエクスポートします。

出力列の命名

出力列名は {kv_column_name}_{key} というパターンに従います。たとえば、kv という名前の KV 列とキー 1 は kv_1 を生成します。

列名では、次の文字はサポートされていません: %&()*+-./;<>=?

128 文字を超える名前は 128 文字に切り捨てられます。

追加列名が変換された列名と一致する場合、コンポーネントはエラーをレポートします。

制限事項

  • 最大出力列数: 1,200。top1200 が true に設定されている場合、出力がこの制限を超えると、コンポーネントは最初の 1,200 列のみをエクスポートします。false に設定されている場合、コンポーネントは代わりにエラーをレポートします。

  • 最大入力行数: 100,000,000

コンポーネントの設定

方法 1: Machine Learning Designer

Machine Learning Designer のパイプラインキャンバスで KV からテーブルへコンポーネントを設定します。

タブ パラメーター 説明
フィールド設定 KV 列 キーと値のペア形式のデータを含む列の名前
追加列 変更せずにパススルーする列の名前
KV 区切り文字 キーと値の間の区切り文字。デフォルト: :
KV ペア区切り文字 キーと値のペアの間の区切り文字。デフォルト: ,
パラメーター設定 最初の 1,200 列を予約 有効にすると、出力が制限を超えた場合に最初の 1,200 列のみをエクスポートします。無効にすると、コンポーネントは代わりにエラーをレポートします
チューニング コンピューティングコア コア数。入力データ量に基づいて自動的に割り当てられます
コアあたりのメモリサイズ コアあたりのメモリ (MB) 。入力データ量に基づいて自動的に割り当てられます

方法 2: PAI コマンド

PAI コマンドを使用して、SQL スクリプトコンポーネントからコンポーネントを実行します。詳細については、「SQL スクリプト」をご参照ください。

PAI -name KVToTable
    -project algo_public
    -DinputTableName=test
    -DoutputTableName=test_out
    -DoutputKeyMapTableName=test_keymap_out
    -DkvColName=kv;
パラメーター 必須 デフォルト値 説明
inputTableName はい — 入力テーブルの名前
kvColName はい — KV 列の名前
outputTableName はい — 出力テーブルの名前
outputKeyMapTableName はい — 出力 `key_map` テーブルの名前
inputKeyMapTableName いいえ — キーと列のマッピングをコントロールするための入力 `key_map` テーブルの名前
appendColName いいえ — 変更せずにパススルーする列の名前
inputTablePartitions いいえ すべてのパーティション 入力テーブルから読み取るパーティション。フォーマット: Partition_name=value。複数レベルのパーティションの場合: name1=value1/name2=value2。複数のパーティションはカンマで区切ります
kvDelimiter いいえ : キーと値の間の区切り文字
itemDelimiter いいえ , キーと値のペアの間の区切り文字
top1200 いいえ true 出力が制限を超えた場合に最初の 1,200 列のみをエクスポートするかどうか。代わりにエラーをレポートするには false に設定します
lifecycle いいえ — 出力テーブルのライフサイクル
coreNum いいえ システムが決定 コア数。正の整数である必要があります
memSizePerCore いいえ システムが決定 コアあたりのメモリ (MB) 。有効値の範囲: (100, 65536)

例

  1. 入力テーブルを作成します。

    DROP TABLE IF EXISTS test;
    CREATE TABLE test AS
    SELECT * FROM
        (
            SELECT '1:1,2:2,3:-3.3' AS kv UNION ALL
            SELECT '1:10,2:20,3:-33.3' AS kv
        ) tmp;
  2. KV からテーブルへコンポーネントを実行します。

    PAI -name KVToTable
        -project algo_public
        -DinputTableName=test
        -DoutputTableName=test_out
        -DoutputKeyMapTableName=test_keymap_out
        -DkvColName=kv;
  3. 出力テーブル (test_out) を確認します。

    kv_1 kv_2 kv_3
    1.0 2.0 -3.3
    10.0 20.0 -33.3
  4. `key_map` テーブル (test_keymap_out) を確認します。

    col_name col_index col_type
    kv_1 1 double
    kv_2 2 double
    kv_3 3 double

よくある質問

`key_map` テーブルを提供した場合、どの列が変換されますか?

`key_map` テーブルと入力 KV 列の両方にキーが表示される列のみが変換されます。

`key_map` テーブルを提供した場合、出力列はどのデータの型を使用しますか?

出力列は、`key_map` テーブルの col_datatype 列で指定されたデータの型を使用します。col_datatype が指定されていない場合、出力はデフォルトで DOUBLE になります。

列名の競合が発生するのはなぜですか?

追加列が変換されたキー列と名前を共有している場合、コンポーネントはエラーをレポートします。コンポーネントを実行する前に、競合する列のいずれかの名前を変更してください。

どの列タイプが変換できますか?

数値データ型の列のみ変換できます。

列名が 128 文字を超えるとどうなりますか?

最初の 128 文字のみが保持されます。

行に重複キーが含まれている場合はどうなりますか?

コンポーネントは重複キーの値を合計します。