< Back
< Back

置換ルール – FlyData Autoload

FlyData Autoload – 置換ルールの用途

FlyDataのReplacement Ruleを使えば、指定したテキストを自動的に置換することができます。

例えば、Amazon Redshiftにデータを移行する前に、データの内容を隠してしまいたいカラムがあったとします。その場合、Replacement Ruleを設定することで、ロード前の段階でデータを変更しておくことが可能となります。

設定の仕方

Replacement RuleはJSONフォーマットを利用して、下記のように設定します。

[
  { "table" : "users",
    "column" : "user_id",
    "replace_rules" : [
      {"^-$" : null},
      {"#$" : ""}
    ]
  },
  { "table" : "orders",
    "column" : "name",
    "replace_rules" : [
      {"^(.*)$":"\\1!"}}
    ]
  },
]

Replacement RuleはJSONオブジェクトの配列として記載します。各JSONオブジェクトにはtablecolumnreplace_ruleのキーが必要となり、JSONを通して設定することで自動的にデータを置換することが出来ます。

まず置換したい文字列のあるテーブル名、カラム名をそれぞれ、tablecolumnの値として設定し、最後にreplace_rulesに、置換ルールをJSONオブジェクトの配列として設定します。JSONオブジェクトのうち、キーには変換前の文字列を正規表現で、値には変換後の文字列をテキストとして、設定してください。(※正規表現にはRubyでサポートされている正規表現をサポートしています。)

例えば上で指定されたReplacement Ruleの場合、上から2番目の置換ルール({"#$" : ""})に基づき、末尾に#が付いているuser_idは全て#が取り除かれた状態でAmazon Redshiftに保存されます。

Replacement Ruleでは、上から3番目の置換ルールのように、置換変数を利用することもできます。この場合、(.*)でマッチするテキストが\1の置換変数に保存されるので、JSONの値を”\\1!”とすることで、ordersテーブルのnameカラムの各値の末尾に!をつけた状態で保存することができます。(※ダブルクォート内でバックスラッシュが一つだけの場合、8進数エスケープになってしまうので、バックスラッシュは二つつけて頂く必要があります。)