「テーブルから KV への変換」コンポーネントは、通常の表形式データをキーと値のペア(KV)形式の文字列に変換します。選択した各列が、出力において 1 つのキーと値のペアとして表現されます。
BIGINT 型または DOUBLE 型の列のみを変換できます。その他の列は、appendColNames を使用して、元のフォーマットのまま通過させることができます。NULL 値は出力から除外されます。保持する列を明示的に指定できます。指定された列は、元のフォーマットで保持されます。
「テーブルから KV への変換」コンポーネントの構成
構成方法は 2 種類あります。
方法 1:Machine Learning Designer を使用して構成
Machine Learning Platform for AI(PAI)の Machine Learning Designer(旧称:Machine Learning Studio)のパイプラインページで、コンポーネントのパラメーターを構成します。
| タブ | パラメーター | 説明 |
|---|---|---|
| フィールド設定 | 変換対象の列 | 変換対象の列名。列のデータの型は BIGINT 型または DOUBLE 型である必要があります。 |
| 予約済みの列 | 元のフォーマットのまま通過させる列名。 | |
| KV 区切り文字 | キーと値を区切る文字。デフォルト値:コロン(:)。 | |
| KV ペア区切り文字 | キーと値のペアを区切る文字。デフォルト値:カンマ(,)。 | |
| パラメーター設定 | 列名を ID に変換 | 出力において列名を整数 ID に置き換えるかどうか。有効な値: はい、いいえ。 |
| チューニング | コア数 | コア数。システムは入力データのサイズに基づいて、自動的にコア数を割り当てます。 |
| メモリサイズ | コアあたりのメモリ量(MB)。システムは入力データのサイズに基づいて、自動的にメモリ量を割り当てます。 |
方法 2:PAI コマンドを使用して構成
SQL スクリプトコンポーネント経由で PAI コマンドを実行します。詳細については、「SQL スクリプト」をご参照ください。
PAI -name TableToKV
-project algo_public
-DinputTableName=maple_tabletokv_basic_input
-DoutputTableName=maple_tabletokv_basic_output
-DselectedColNames=col0,col1,col2
-DappendColNames=rowid;| パラメーター | 必須 | 説明 | デフォルト |
|---|---|---|---|
inputTableName | はい | 入力テーブルの名前。 | なし |
outputTableName | はい | 出力テーブルの名前。 | なし |
selectedColNames | いいえ | 変換対象の列。BIGINT 型または DOUBLE 型である必要があります。 | すべての列 |
appendColNames | いいえ | 元のフォーマットのまま通過させる列。 | なし |
inputTablePartitions | いいえ | 入力テーブルから読み取るパーティション。フォーマットは Partition_name=value です。マルチレベルパーティションの場合は、name1=value1/name2=value2; を使用します。複数のパーティションを指定する場合は、カンマ(,)で区切ります。 | すべてのパーティション |
kvDelimiter | いいえ | キーと値を区切る文字。 | コロン(:) |
itemDelimiter | いいえ | キーと値のペアを区切る文字。 | カンマ(,) |
convertColToIndexId | いいえ | 列名を整数 ID に置き換えるかどうか。置き換える場合は 1、列名を保持する場合は 0 を指定します。 | 0 |
inputKeyMapTableName | いいえ | 列 ID マッピングに使用する既存のインデックステーブルの名前。convertColToIndexId=1 の場合のみ使用されます。指定しない場合は、システムが新しい ID セットを生成します。 | null |
outputKeyMapTableName | はい(convertColToIndexId=1 の場合) | 列から ID へのマッピングを格納する出力インデックステーブルの名前。 | なし |
lifecycle | いいえ | 出力テーブルのライフサイクル(日数)。正の整数を指定する必要があります。 | なし |
coreNum | いいえ | コア数。有効範囲:1~9999。必ず memSizePerCore と併用してください。 | システムによる自動決定 |
memSizePerCore | いいえ | コアあたりのメモリ量(MB)。有効範囲:1024~65536。必ず coreNum と併用してください。 | システムによる自動決定 |
制限事項
入力
key_mapテーブルが指定されている場合、key_mapテーブルと入力テーブルの両方に存在する列名のみが変換対象となります。key_mapテーブルで指定されたデータの型が、入力テーブル内の対応する列の実際のデータの型と異なる場合、出力key_mapテーブルでは、key_mapテーブルで定義されたデータの型が使用されます。
例
入力テーブル
drop table if exists test;
create table test as
select * from
(
select 0 as rowid, 1 as col0, 1.1 as col1, 2 as col2 union all
select 1 as rowid, 0 as col0, 1.2 as col1, 3 as col2 union all
select 2 as rowid, 1 as col0, 2.3 as col1, 4 as col2 union all
select 3 as rowid, 1 as col0, 0.0 as col1, 5 as col2
) tmp;PAI コマンド
PAI -name TableToKV
-project algo_public
-DinputTableName=test
-DoutputTableName=test_output
-DselectedColNames=col0,col1,col2
-DconvertColToIndexId=1
-DoutputKeyMapTableName=test_key_map
-DappendColNames=rowid;col0、col1、および col2 が KV 形式に変換されます。rowid は元のフォーマットのまま通過します。また、convertColToIndexId=1 であるため、列名は整数 ID に置き換えられます。
出力テーブル:`test_output`
| rowid | kv |
|---|---|
| 0 | 0:1,1:1.1,2:2 |
| 1 | 0:0,1:1.2,2:3 |
| 2 | 0:1,1:2.3,2:4 |
| 3 | 0:1,1:0,2:5 |
出力テーブル:`test_key_map`
| col_name | col_index | col_datatype |
|---|---|---|
| col0 | 0 | bigint |
| col1 | 1 | double |
| col2 | 2 | bigint |