便利だなと思ったプラグインの使い方をまとめたメモ第一弾
(gistに書いておくとどこかに行ってしまうのでQiitaに移動)
名前
- プラグイン名: embulk-filter-join_file
- 著者: Civitaspoさん
- プラグインの用途
- ある値を元に他の値を結合したいという時に利用するフィルタプラグイン
- 例えば都道府県コードから、都道府県名をくっつける
導入
embulk gem install embulk-filter-join_file
2015-11-12 12:56:02.486 +0900: Embulk v0.7.9
Successfully installed embulk-filter-join_file-0.0.1
1 gem installed
元データ
ken_codeを参照して、都道府県名を付与します。
ken_code,name
01,hokkaido
13,tokyo
14,kanagawa
17,ishikawa
20,nagano
設定の流れ
- 変換データのjsonファイルを作る
- 設定を記述
- 実行
変換データのjsonファイルを作る
次のようなJSONファイルをつくる、ファイル名をmaster.json
とします。
長いのですべてのデータは、本文書末尾を参照してください。
master.json
[
{
"code": "01",
"name": "北海道"
},
{
"code": "02",
"name": "青森県"
},
{
"code": "03",
"name": "岩手県"
},
...
設定を記述
conf.yml
type: file
path_prefix: /tmp/embulk/test
parser:
charset: UTF-8
newline: CRLF
type: csv
delimiter: ','
quote: '"'
escape: '"'
trim_if_not_quoted: false
skip_header_lines: 1
allow_extra_columns: false
allow_optional_columns: false
columns:
- {name: ken_code, type: string} # キーカラム
- {name: name, type: string}
#
# ここからがfilterの設定
#
filters:
- type: join_file
# 元データにあるカラムの名前、parser内のカラム名と対応づけする
base_column: { name: ken_code, type: string }
# jsonファイル内にあるカラムの名前
counter_column: { name: code, type: string }
# 変換ファイル
file_path: /tmp/master.json
# フォーマット
file_format: json
# マスターファイルの中で出力したいカラムを指定
columns:
# - { name: code, type: string }
- { name: name, type: string }
out: {type: stdout}
実行
embulk preview -G conf.yml
2015-10-15 20:02:49.354 +0900: Embulk v0.7.5
*************************** 1 ***************************
ken_code (string) : 01
name (string) : hokkaido
_joined_by_embulk_name (string) : 北海道
*************************** 2 ***************************
ken_code (string) : 13
name (string) : tokyo
_joined_by_embulk_name (string) : 東京都
*************************** 3 ***************************
ken_code (string) : 14
name (string) : kanagawa
_joined_by_embulk_name (string) : 神奈川県
*************************** 4 ***************************
ken_code (string) : 17
name (string) : ishikawa
_joined_by_embulk_name (string) : 石川県
*************************** 5 ***************************
ken_code (string) : 20
name (string) : nagano
_joined_by_embulk_name (string) : 長野県
都道府県変換JSONファイル
[
{
"code": "01",
"name": "北海道"
},
{
"code": "02",
"name": "青森県"
},
{
"code": "03",
"name": "岩手県"
},
{
"code": "04",
"name": "宮城県"
},
{
"code": "05",
"name": "秋田県"
},
{
"code": "06",
"name": "山形県"
},
{
"code": "07",
"name": "福島県"
},
{
"code": "08",
"name": "茨城県"
},
{
"code": "09",
"name": "栃木県"
},
{
"code": "10",
"name": "群馬県"
},
{
"code": "11",
"name": "埼玉県"
},
{
"code": "12",
"name": "千葉県"
},
{
"code": "13",
"name": "東京都"
},
{
"code": "14",
"name": "神奈川県"
},
{
"code": "15",
"name": "新潟県"
},
{
"code": "16",
"name": "富山県"
},
{
"code": "17",
"name": "石川県"
},
{
"code": "18",
"name": "福井県"
},
{
"code": "19",
"name": "山梨県"
},
{
"code": "20",
"name": "長野県"
},
{
"code": "21",
"name": "岐阜県"
},
{
"code": "22",
"name": "静岡県"
},
{
"code": "23",
"name": "愛知県"
},
{
"code": "24",
"name": "三重県"
},
{
"code": "25",
"name": "滋賀県"
},
{
"code": "26",
"name": "京都府"
},
{
"code": "27",
"name": "大阪府"
},
{
"code": "28",
"name": "兵庫県"
},
{
"code": "29",
"name": "奈良県"
},
{
"code": "30",
"name": "和歌山県"
},
{
"code": "31",
"name": "鳥取県"
},
{
"code": "32",
"name": "島根県"
},
{
"code": "33",
"name": "岡山県"
},
{
"code": "34",
"name": "広島県"
},
{
"code": "35",
"name": "山口県"
},
{
"code": "36",
"name": "徳島県"
},
{
"code": "37",
"name": "香川県"
},
{
"code": "38",
"name": "愛媛県"
},
{
"code": "39",
"name": "高知県"
},
{
"code": "40",
"name": "福岡県"
},
{
"code": "41",
"name": "佐賀県"
},
{
"code": "42",
"name": "長崎県"
},
{
"code": "43",
"name": "熊本県"
},
{
"code": "44",
"name": "大分県"
},
{
"code": "45",
"name": "宮崎県"
},
{
"code": "46",
"name": "鹿児島県"
},
{
"code": "47",
"name": "沖縄県"
}
]