KV to Tableコンポーネントを使用して、キー値形式のテーブルを共通形式のテーブルに変換できます。 キーは表の列名に変換され、値は行に対応する列の値に変換されます。
背景情報
key-valueテーブル形式の定義: keyは列名インデックスを表し、valueはBIGINT型またはDOUBLE型のデータをサポートします。 カスタムkey_mapテーブルをこのコンポーネントにインポートできます。 key_mapテーブルには、列名とキーのマッピングが含まれます。 key_mapテーブルをインポートするかどうかに関係なく、このコンポーネントはkey_mapテーブルをエクスポートして、1:10、2:20、3:30などの変換後の列名とキーのマッピングを記録します。
key_mapテーブル形式の定義: key_mapテーブル形式には、col_name、col_index、およびcol_datatypeパラメーターに対応する列名とインデックス、およびデータ型情報のマッピングが含まれます。 3つのパラメーターの値は、STRINGデータ型である必要があります。 col_datatypeパラメーターを指定しない場合、このパラメーターのデフォルト値はdoubleです。
col_name | col_index | col_datatype |
col1 | 1 | bigint |
col2 | 2 | double |
コンポーネントパラメータ
次のいずれかの方法を使用して、KV to Tableコンポーネントを設定できます。
方法1: パイプラインページでコンポーネントを設定する
Machine Learning Designerのパイプラインページでコンポーネントを設定します。
タブ | パラメーター | 説明 |
フィールド設定 | KVコラム | キーと値の形式でデータを格納する列の名前。 |
追加された列 | 追加された列の名前。 | |
KVデリミタ | キーと値の間に使用される区切り文字。 デフォルトでは、コロン (:) が使用されます。 | |
KVペア区切り文字 | キーと値のペア間で使用される区切り文字。 デフォルトでは、コンマ (,) が使用されます。 | |
パラメーター設定 | 最初の1,200列を予約する | 変換後のkey_mapテーブルの列数が1,200を超えた場合に、最初の1,200列のみを予約するかどうかを指定します。 |
チューニング | コンピューティングコア | コアの数。 システムは、入力データの量に基づいて、トレーニングに使用されるコアを自動的に割り当てます。 |
コアあたりのメモリサイズ | 各コアのメモリサイズ。 システムは、入力データの量に基づいてメモリを自動的に割り当てます。 単位:MB。 |
方法2: PAIコマンドを使用する
PAIコマンドを使用してコンポーネントを設定します。 SQLスクリプトコンポーネントを使用してPAIコマンドを実行できます。 詳細については、「SQLスクリプト」をご参照ください。
PAI -name KVToTable
-project algo_public
-DinputTableName=test
-DoutputTableName=test_out
-DoutputKeyMapTableName=test_keymap_out
-DkvColName=kv;
パラメーター | 必須 | 説明 | デフォルト値 |
inputTableName | 必須 | 入力テーブルの名前。 | 非該当 |
kvColName | 必須 | キーと値の形式でデータを格納する列の名前。 | 非該当 |
outputTableName | 必須 | 出力テーブルの名前。 | 非該当 |
outputKeyMapTableName | 必須 | 出力インデックステーブルの名前。 | 非該当 |
inputKeyMapTableName | 選択可能 | 入力インデックステーブルの名前。 | 非該当 |
appendColName | 選択可能 | 追加された列の名前。 | 非該当 |
inputTablePartitions | 選択可能 | トレーニング用に入力テーブルから選択されたパーティション。 このパラメーターを次のいずれかの形式で指定します。
説明 複数のパーティションを指定する場合は、コンマ (,) で区切ります。 | すべてのパーティション |
kvDelimiter | 選択可能 | キーと値の間に使用される区切り文字。 | コロン (:) |
itemDelimiter | 選択可能 | キーと値のペア間で使用される区切り文字。 | コンマ (,) |
top1200 | 選択可能 | 最初の1,200列のみを予約するかどうかを指定します。 有効な値:
| true |
ライフサイクル | 選択可能 | 出力テーブルのライフサイクル。 | 非該当 |
coreNum | 選択可能 | コンピューティングで使用されるコアの数。 値は正の整数である必要があります。 | システムによって決定される |
memSizePerCore | 選択可能 | 各コアのメモリサイズ。 単位:MB。 有効値: (100,64 × 1024) | システムによって決定される |
例
入力データの生成
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;
PAIコマンドの実行
PAI -name KVToTable -project algo_public -DinputTableName=test -DoutputTableName=test_out -DoutputKeyMapTableName=test_keymap_out -DkvColName=kv;
アウトプットの説明
出力テーブル
+------------+------------+------------+ | kv_1 | kv_2 | kv_3 | +------------+------------+------------+ | 1.0 | 2.0 | -3.3 | | 10.0 | 20.0 | -33.3 | +------------+------------+------------+
出力マッピングテーブル
+------------+------------+------------+ | col_name | col_index | col_type | +------------+------------+------------+ | kv_1 | 1 | double | | kv_2 | 2 | double | | kv_3 | 3 | double | +------------+------------+------------+
アルゴリズムスケール
変換された列には、追加された列と、KVからTableコンポーネントを使用して変換された列が含まれます。 KV to Tableコンポーネントを使用して変換された列は、追加された列の前にエクスポートされます。 変換された列の数がkey_mapテーブルの最大列数を超え、top1200パラメーターがtrueに設定されている場合、最大列数がエクスポートされます。 それ以外の場合は、エラーが返されます。 最大1,200個の列をエクスポートできます。
データレコードの数は100万を超えることはできません。
よくある質問
Q: 入力にkey_mapテーブルが含まれている場合、どの列が変換されますか?
A: 変換された列は、key_mapテーブルとkey-valueテーブルの両方にキーが存在する列です。
Q: 入力にkey_mapテーブルが含まれている場合、変換後のキー列のデータ型は何ですか?
A: 変換されたキー列のデータ型は、key_mapテーブルのデータ型と同じです。 key_mapテーブルのデータ型が指定されていない場合、変換されたキー列のデータ型はDOUBLEです。
Q: key_mapテーブルをインポートする場合、変換されたキー列の命名規則は何ですか?
A: 命名規則は [キー: 値の形式の列の名前] + "+ [キー] です。
次の文字はサポートされていません。
%&()* +-./<>=?
Q: 列名が競合するのはなぜですか?
A: 追加された列を指定し、追加された列の名前が変換されたキー列の名前と同じである場合、エラーが報告されます。
Q: どのタイプの列を変換できますか?
A: 数値データ型の列のみを変換できます。
Q: 列名の長さが128文字を超えるとどうなりますか?
A: 列名の最初の128文字のみが予約されています。
Q: 行に重複キーが含まれている場合はどうすればよいですか?
A: これらのキーに対応する値の合計を計算します。