Treasure DataのData Connector用renameフィルタープラグインは、カラム名を変更します。このプラグインは以下の2つのオプションを取ります。columnsはサポートされていますが、新規使用には推奨されなくなりました。
| オプション | 説明 |
|---|---|
| rules | ルールベースの名前変更操作の配列。(ルールについては以下を参照。) |
| columns | キーが既存のカラム名であるマップ。値は新しい名前。 |
- 設定
- 名前変更ルール
- 名前変更ルール:character_types
- 例:character_types
- 名前変更ルール:first_character_types
- 例:first_character_types
- 名前変更ルール:lower_to_upper
- 例:lower_to_upper
- 名前変更ルール:regex_replace
- 例:regex_replace
- 名前変更ルール:truncate
- 例:truncate
- 名前変更ルール:upper_to_lower
- 例:upper_to_lower
- 名前変更ルール:unique_number_suffix
- ヒント:unique_number_suffix
- 例:unique_number_suffix
- ユースケース例
- Columns:非推奨
load.ymlのfiltersセクションに、この例のようにtype: renameフィルターを追加します:
in:
...
filters:
- type: rename
rules:
- rule: upper_to_lower
- rule: character_types
pass_types: [ "a-z", "0-9" ]
pass_characters: "_"
replace: "_"
out:
...rulesは以下に示すルールの配列で、すべてのカラムに対して上から順に適用されます。
| rule | 説明 |
|---|---|
| character_types | 文字を種類で制限します。制限された文字を置換します。 |
| first_character_types | 最初の文字を種類で制限します。制限された最初の文字にプレフィックスを付けるか置換します。 |
| lower_to_upper | 小文字のアルファベットを大文字に変換します。 |
| regex_replace | 正規表現で置換します。 |
| truncate | 切り詰めます。 |
| upper_to_lower | 大文字のアルファベットを小文字に変換します。 |
| unique_number_suffix | スキーマ内でカラム名を一意にします。 |
character_typesルールは制限された文字を置換します。
| オプション | 説明 | 必須? |
|---|---|---|
| pass_characteres | 許可する文字。 | デフォルトは"" |
| pass_types | 許可する文字のセット。配列は「a-z」(小文字のアルファベット)、「A-Z」(大文字のアルファベット)、または「0-9」(数字)で構成する必要があります。 | デフォルトは[] |
| replace | 許可されない文字を置換する文字。1文字のみで構成する必要があります。 | デフォルトは"_" |
# この設定は、「_」、小文字のアルファベット、数字以外の文字を「_」に置換します。
filters:
...
- type: rename
rules:
- rule: character_types
pass_characters: "_"
pass_types: [ "a-z", "0-9" ]first_character_typesルールは、先頭の制限された文字にプレフィックスを付けるか置換します。
| オプション | 説明 | 必須? |
|---|---|---|
| pass_characters | 許可する文字。 | デフォルトは"" |
| pass_types | 許可する文字のセット。配列は「a-z」(小文字のアルファベット)、「A-Z」(大文字のアルファベット)、または「0-9」(数字)で構成する必要があります。 | デフォルトは[ ] |
| prefix | 許可されない最初の文字を置換する文字。 | prefixまたはreplaceのいずれかが必須 |
| replace | 許可されない最初の文字にプレフィックスとして付ける文字。 | prefixまたはreplaceのいずれかが必須 |
# この設定は、名前が「_」または小文字のアルファベットで始まらない限り、カラム名に「_」のプレフィックスを付けます。
filters:
...
- type: rename
rules:
- rule: first_character_types
pass_characters: "_"
pass_types: [ "a-z" ]
prefix: "_"lower_to_upperルールは小文字のアルファベットを大文字に変換します。
# この設定はすべての小文字のアルファベットを大文字に変換します。
filters:
...
- type: rename
rules:
- rule: lower_to_upperregex_replaceルールは正規表現に基づいてカラム名を置換します。
| オプション | 説明 | 必須? |
|---|---|---|
| match | この文字列をマッチさせるJava形式の正規表現。 | 必須 |
| replace | 各マッチに対してJava形式で置換する文字列。 | 必須 |
# この設定はすべてのパターンを置換します
filters:
...
- type: rename
rules:
- rule: regex_replace
match: "([0-9]+)_dollars"
replace: "USD$1"truncateルールはカラム名を切り詰めます。
| オプション | 説明 | 必須? |
|---|---|---|
| max_length | カラム名を切り詰める長さ。 | デフォルトは128 |
# この設定は20文字目以降のすべての文字を削除します。
filters:
...
- type: rename
rules:
- rule: truncate
max_length: 20upper_to_lowerルールは大文字のアルファベットを小文字に変換します。
# この設定はすべての大文字のアルファベットを小文字に変換します。
filters:
...
- type: rename
rules:
- rule: upper_to_lowerunique_number_suffixルールは、番号をサフィックスとして付けることでスキーマ内のカラム名を一意にします。
| オプション | 説明 | 必須? |
|---|---|---|
| delimiter | サフィックス番号の前に挿入される区切り文字。非数字の1文字のみである必要があります。 | デフォルトは"_" |
| digits | サフィックス番号のゼロ埋め桁数を指定する整数。サフィックス番号はこの桁数でゼロ埋めされます。 | オプション |
| max_length | カラム名を切り詰める長さ。カラム名はサフィックス番号の前に切り詰められます。 | オプション |
| offset | サフィックス番号の開始整数。最初の重複カラム名には(offset + 1)がサフィックスとして付きます。 | デフォルトは1 |
カラム名を一意にする手順は非常に単純ではありません。多くの実行可能な方法があります。この名前変更ルールは以下のように動作します:
基本方針:
サフィックス番号は元のカラム名ごとにカウントされます。
カラム名は最初のカラムから最後のカラムまで固定されます。
最初(左端)のカラムから最後(右端)のカラムまで適用される実際の手順:
切り詰められた名前が左側のカラムと重複しない場合、カラム名をそのまま(切り詰めて)固定します。
それ以外の場合はカラム名にサフィックスを付けます。
a. 元のカラム名に対するサフィックス番号を(切り詰めて)追加しようとします。b. サフィックス付きの名前が左側のカラムや元のカラムと重複しない場合、それを固定します。c. それ以外の場合はサフィックス番号を増やして(a)を再試行します。
# この設定は重複するカラム名に番号をサフィックスとして付けます。(例:["column", "column", "column"]は["column", "column_2", "column_3"]になります。)
filters:
...
- type: rename
rules:
- rule: unique_number_suffix異なるカラム名でデータをインポートするには、.ymlにこのrenameフィルターを追加します。
ソースデータの例
$ td connector:preview load.yml
+---------+---------------+
| 0_ID | 1_Animal-Name |
+---------+---------------+
| 1 | "Lion" |
| 2 | "Gorilla" |
| 3 | "Zebra" |
| 4 | "Giraffe" |
| 6 | "Frog" |
+---------+---------------+以下のrenameフィルターを追加した場合:
in:
...
filters:
- type: rename
rule:
- rule: upper_to_lower
- rule: character_types
pass_types: ["a-z", "0-9"]
pass_characters: "_"
replace: "_"
- rule: first_character_types
pass_types: ["a-z"]
pass_characters: "_"
prefix: "_"この場合、Data Connectorはカラム0_IDを_0_idに、1_Animal-Nameを_1_animal_nameに名前変更します。
$ td connector:preview load.yml
+---------+---------------+
| 0_id | 1_animal_name |
+---------+---------------+
| 1 | "Lion" |
| 2 | "Gorilla" |
| 3 | "Zebra" |
| 4 | "Giraffe" |
| 6 | "Frog" |
+---------+---------------+columnsは指定されたマップに従って各カラム名を変更します。columnsは新規使用には推奨されなくなりました。代わりにrulesを使用してください。
filters:
...
- type: rename
columns:
my_existing_column1: new_column1
my_existing_column2: new_column2columnsとrulesが一緒に指定された場合、columnsはrulesの前に適用されます。(一緒に指定することは推奨されません。)