このトピックでは、Machine Learning Designer (旧称Machine Learning Studio) が提供する行、列、値をKVペアに変換するコンポーネントについて説明します。
このコンポーネントは、tritupleテーブル (row,col,value) をkey-valueテーブル (row,[col_id:value]) に変換します。
tritupleテーブルのデータ型 (行、col、値) は "XXD" または "XXL" です。 「X」は任意のデータ型を表し、「D」はDOUBLEデータ型を表し、「L」はBIGINTデータ型を表します。 変換後に生成されるkey-valueテーブルでは、行と値のデータ型は元の入力データと同じです。 生成されたcolのインデックステーブルはcol_id列にマップされます。 col_id列のデータ型はBIGINTです。
以下の表は、変換例を提供する。
次の表は3つのテーブルです。
id
ワード
カウント
01
a
10
01
b
20
01
c
有効期限の 30
次の表は、生成されたキー値テーブルです。
id
key_value
01
1:10;2:20;3:30
説明キーと値の間、およびkey_value列の2つのキーと値のペアの間で区切り文字をカスタマイズできます。
次の表は、生成されたインデックステーブルです。
キー
キー_id
a
1
b
2
c
3
Machine Learning Platform for AI (PAI) コンソールまたはPAIコマンドを使用して、コンポーネントを設定できます。
コンポーネントの設定
次のいずれかの方法を使用して、行、列、値をKVペアに変換するコンポーネントを設定できます。
方法1: パイプラインページでコンポーネントを設定する
Machine Learning Platform for AI (PAI) のMachine Learning Designerのパイプラインページで、行、列、および値をKVペアに設定できます。 Machine Learning Designerは、以前はMachine Learning Studioとして知られていました。 下表に、各パラメーターを説明します。
タブ | パラメーター | 説明 |
フィールド設定 | KV変換中に予約された列 | tritupleテーブルがkey-valueテーブルに変換された後も変更されない列の名前。 |
出力キー | キーと値のテーブル内のキー。 | |
出力値 | キーと値のテーブルの値。 | |
入力インデックステーブルのキー列 | インデックステーブルのキー列の名前。 | |
入力インデックステーブルのキーのインデックスID列 | インデックステーブルのインデックス列の名前。 | |
KVデリミタ | key-valueテーブル内のkeyとvalueを区切るために使用される区切り文字。 デフォルトの区切り文字はコロン (:) です。 | |
KVペア区切り文字 | キーと値のペアを区切るために使用される区切り文字。 デフォルト値はコンマ (,) です。 | |
チューニング | インスタンスの総数 | インスタンスの総数。 値は正の整数でなければなりません。 デフォルトでは、システムは入力データの量に基づいて値を計算します。 |
メモリサイズ (MB) | 総メモリ。 値は正の整数でなければなりません。 デフォルトでは、システムは入力データの量に基づいて値を計算します。 |
方法2: PAIコマンドを使用する
PAIコマンドを使用してコンポーネントパラメータを設定します。 SQLスクリプトコンポーネントを使用してPAIコマンドを呼び出すことができます。 詳細については、「SQLスクリプト」をご参照ください。
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 | 可 | tritupleテーブルがkey-valueテーブルに変換された後も変更されない列の名前。 | デフォルト値なし |
keyColName | 可 | キーと値のテーブルのキーを一覧表示する列の名前。 | デフォルト値なし |
valueColName | 可 | key-valueテーブルの値を一覧表示する列の名前。 | デフォルト値なし |
outputTableName | 可 | 生成されたキーと値のテーブルの名前。 | デフォルト値なし |
indexOutputTableName | 可 | 生成されたインデックステーブルの名前。 | デフォルト値なし |
indexInputTableName | 不可 | 既存のインデックステーブルの名前。 テーブルにデータが含まれている必要があります。 | デフォルト値なし |
indexInputKeyColName | 不可 | インデックステーブルのキー列の名前。 このパラメーターは、indexInputTableNameパラメーターを設定する場合に必要です。 | デフォルト値なし |
indexInputKeyIdColName | 不可 | インデックステーブルのインデックス列の名前。 このパラメーターは、indexInputTableNameパラメーターを設定する場合に必要です。 | デフォルト値なし |
inputTablePartitions | 不可 | 入力テーブルのパーティション名。 パーティション名は1つだけ入力できます。 | デフォルト値なし |
kvDelimiter | 不可 | key-valueテーブル内のkeyとvalueを区切るために使用される区切り文字。 | コロン (:) |
pairDelimiter | 不可 | キーと値のペアを区切るために使用される区切り文字。 | コンマ (,) |
ライフサイクル | 不可 | 出力テーブルのライフサイクル。 | デフォルト値なし |
coreNum | 不可 | インスタンスの総数。 値は正の整数でなければなりません。 | 入力データ量に基づいて自動的に計算 |
memSizePerCore | 不可 | 総メモリ。 値は正の整数でなければなりません。 | 入力データ量に基づいて自動的に計算 |
例
入力
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;
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;
Output
キー値テーブルtriple2kv_test_input_out
+------------+------------+ | id | key_value | +------------+------------+ | 02 | 1:100;4:200;5:300 | | 01 | 1:10;2:20;3:30 | +------------+------------+
インデックステーブル
+------------+------------+ | key | key_id | +------------+------------+ | a | 1 | | b | 2 | | c | 3 | | d | 4 | | e | 5 | +------------+------------+