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

Platform For AI:トライアドから KV への変換

最終更新日:Apr 01, 2026

レコメンデーションモデルやランキングモデルを構築する際、トレーニングデータは多くの場合、トライアドテーブル (行、列、値) として保存されます (例:ユーザー ID、アイテム ID、クリック数)。ビジュアルモデリングの **行、列、値を KV ペアに変換** コンポーネントは、このフォーマットをスパースなキーと値のテーブル (行, [col_id:value]) と、列名を整数 ID にマッピングする対応するインデックステーブルに変換します。これは、ベクターインデックス付き入力を想定するモデルにスパース特徴量データを供給するための標準的な前処理ステップです。

仕組み

このコンポーネントは、行識別子、列名、数値を表す列を持つトライアドテーブルを入力として受け取り、次の処理を実行します。

  1. 各個別列名に一意の整数 ID (col_id) を割り当て、そのマッピングをインデックステーブルに記録します。

  2. 行識別子で行をグループ化し、すべての col_id:value ペアを単一のキーと値の文字列に連結します。

入力データの型の要件

入力トライアドテーブルは、次の 2 つの列の型のパターンのいずれかに従う必要があります。

パターン列の型値列の型
XXD行:任意、列:任意DOUBLE
XXL行:任意、列:任意BIGINT

出力されるキーと値のテーブルでは、行と値の列は元のデータの型を保持します。インデックステーブルの col_id 列は常に BIGINT です。

入力トライアドテーブル:

idwordcount
01a10
01b20
01c30

コンポーネントは 2 つの出力テーブルを生成します。

キーと値のテーブル — 各行の列値は、単一の col_id:value 文字列に折りたたまれます。

idkey_value
011:10;2:20;3:30

インデックステーブル — 元の各列名を、割り当てられた整数 ID にマッピングします。

keykey_id
a1
b2
c3
説明

キーとその値の間のデリミタ、およびキーと値のペア間のデリミタは、どちらもカスタマイズ可能です。

コンポーネントの設定

オプション 1:パイプラインキャンバスでの設定

ビジュアルモデリングのパイプラインキャンバスで、コンポーネントをクリックして設定パネルを開きます。次の表にパラメーターを示します。

[フィールド設定] タブ

パラメーター必須説明デフォルト値
[KV 変換中に保持される列]はい変換後も変更されない列 (行識別子)。
出力キーはいその値がキーと値のテーブルでキーになる列。
[出力値]はいその値がキーと値のテーブルで値になる列。
[入力インデックステーブルのキー列]いいえ既存のインデックステーブルのキー列。インデックステーブルを指定する場合に必須です。
[入力インデックステーブルのキーのインデックス ID 列]いいえ既存のインデックステーブルのインデックス ID 列。インデックステーブルを指定する場合に必須です。
[KV デリミタ]いいえキーとその値の間のデリミタ。: (コロン)
KVペア デリミタいいえキーと値のペア間のデリミタ。, (カンマ)

[チューニング] タブ

パラメーター必須説明デフォルト値
インスタンスの総数いいえコンピューティングインスタンスの数です。正の整数である必要があります。入力データに基づいて自動計算されます
メモリサイズ (MB)いいえ総メモリ容量です。正の整数である必要があります。入力データに基づいて自動計算されます

オプション 2:PAI コマンドの使用

SQL スクリプト」コンポーネントで PAI コマンドを使用してコンポーネントを実行します。

PAI -name triple_to_kv
    -project algo_public
    -DinputTableName=test_data
    -DoutputTableName=test_kv_out
    -DindexOutputTableName=test_index_out
    -DidColName=id
    -DkeyColName=word
    -DvalueColName=count
    -DinputTablePartitions=ds=test1
    -DindexInputTableName=test_index_input
    -DindexInputKeyColName=word
    -DindexInputKeyIdColName=word_id
    -DkvDelimiter=:
    -DpairDelimiter=;
    -Dlifecycle=3

パラメーター

パラメーター必須説明デフォルト値
inputTableNameはい入力トライアドテーブルの名前。
idColNameはい行識別子列。出力では変更されません。
keyColNameはいその値がキーになる列。
valueColNameはいその値が値になる列。
outputTableNameはい出力キーと値のテーブルの名前。
indexOutputTableNameはい出力インデックステーブルの名前。
indexInputTableNameいいえ使用する既存のインデックステーブル。データが含まれている必要があります。
indexInputKeyColNameいいえ既存のインデックステーブルのキー列。indexInputTableName が設定されている場合に必須です。
indexInputKeyIdColNameいいえ既存のインデックステーブルのインデックス ID 列。indexInputTableName が設定されている場合に必須です。
inputTablePartitionsいいえ入力テーブルのパーティション。パーティション名は 1 つだけサポートされます。
kvDelimiterいいえキーとその値の間のデリミタ。: (コロン)
pairDelimiterいいえキーと値のペア間のデリミタ。, (カンマ)
lifecycleいいえ出力テーブルのライフサイクル。
coreNumいいえコンピューティングインスタンスの数。正の整数である必要があります。入力データから自動計算
memSizePerCoreいいえ合計メモリ。正の整数である必要があります。入力データから自動計算

次の例では、2 人のユーザーのインタラクションレコードを含むトライアドテーブルを、キーと値のテーブルとインデックステーブルに変換します。

ステップ 1:入力テーブルの作成 (triple2kv_test_input)

drop table if exists triple2kv_test_input;
create table triple2kv_test_input as
select * from (
  select '01' as id, 'a' as word, 10 as count
  union all select '01' as id, 'b' as word, 20 as count
  union all select '01' as id, 'c' as word, 30 as count
  union all select '02' as id, 'a' as word, 100 as count
  union all select '02' as id, 'd' as word, 200 as count
  union all select '02' as id, 'e' as word, 300 as count
) tmp;

ステップ 2:PAI コマンドの実行

PAI -name triple_to_kv
    -project algo_public
    -DinputTableName=triple2kv_test_input
    -DoutputTableName=triple2kv_test_input_out
    -DindexOutputTableName=triple2kv_test_input_index_out
    -DidColName=id
    -DkeyColName=word
    -DvalueColName=count
    -Dlifecycle=1;

出力

列名 abcde には ID 1~5 が割り当てられます。キーと値のテーブル (triple2kv_test_input_out) は、各ユーザーのインタラクションを単一の文字列に折りたたみます。

+----+-------------------+
| id | key_value         |
+----+-------------------+
| 01 | 1:10;2:20;3:30    |
| 02 | 1:100;4:200;5:300 |
+----+-------------------+

インデックステーブル (triple2kv_test_input_index_out) は、列名と ID のマッピングを記録します。

+-----+--------+
| key | key_id |
+-----+--------+
| a   | 1      |
| b   | 2      |
| c   | 3      |
| d   | 4      |
| e   | 5      |
+-----+--------+