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

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

最終更新日:Apr 02, 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_1kv_2kv_3
1.02.0-3.3
10.020.0-33.3

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

col_namecol_indexcol_type
kv_11double
kv_22double
kv_33double

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

基本概念

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 列とキー 1kv_1 を生成します。

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

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

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

制限事項

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

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

コンポーネントの設定

方法 1:ビジュアルモデリング

ビジュアルモデリングのパイプラインキャンバスで、「KV からテーブルへ」コンポーネントを設定します。

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

方法 2:PAI コマンド

SQL スクリプトコンポーネントから PAI コマンドを使用してコンポーネントを実行します。詳細については、「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_1kv_2kv_3
    1.02.0-3.3
    10.020.0-33.3
  4. key_map テーブル (test_keymap_out) を確認します。

    col_namecol_indexcol_type
    kv_11double
    kv_22double
    kv_33double

よくある質問

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

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

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

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

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

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

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

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

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

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

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

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