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

Platform For AI:KV2Table

最終更新日:Nov 05, 2024

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_namecol_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

選択可能

トレーニング用に入力テーブルから選択されたパーティション。 このパラメーターを次のいずれかの形式で指定します。

  • Partition_name=value

  • name1=value1/name2=value2: マルチレベルパーティション

説明

複数のパーティションを指定する場合は、コンマ (,) で区切ります。

すべてのパーティション

kvDelimiter

選択可能

キーと値の間に使用される区切り文字。

コロン (:)

itemDelimiter

選択可能

キーと値のペア間で使用される区切り文字。

コンマ (,)

top1200

選択可能

最初の1,200列のみを予約するかどうかを指定します。 有効な値:

  • true

  • false

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: これらのキーに対応する値の合計を計算します。