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

Platform For AI:KV2Table

最終更新日:Jul 22, 2024

KV to Tableコンポーネントを使用して、キー値形式のテーブルを共通形式のテーブルに変換できます。 キーは表の列名に変換され、値は行に対応する列の値に変換されます。

背景情報

キーと値のテーブル形式の定義: キーは列名インデックスを表し、値はBIGINT、DOUBLE、またはSTRING型のデータをサポートします。 カスタム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

入力テーブルの名前。

N/A

kvColName

キーと値の形式でデータを格納する列の名前。

N/A

outputTableName

出力テーブルの名前。

N/A

outputKeyMapTableName

出力インデックステーブルの名前。

N/A

inputKeyMapTableName

不可

入力インデックステーブルの名前。

N/A

appendColName

不可

追加された列の名前。

N/A

inputTablePartitions

不可

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

  • Partition_name=value

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

説明

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

すべてのパーティション

kvDelimiter

不可

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

コロン (:)

itemDelimiter

不可

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

コンマ (,)

top1200

不可

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

  • true

  • false

true

ライフサイクル

不可

出力テーブルのライフサイクル。

N/A

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