AWS
Athena

Athenaに法人番号データを入れて遊んでみる

用意するもの

shift-jisは文字化けするらしいので、unicodeで落としました。

データの加工

一度、unicodeで落としたCSVをそのままいれると、内部でパースエラーがおきたのか、正しくデータが挿入されませんでした。

なので、seqコマンドを使ってエラーの原因と思われる"を取り除きS3にアップロードしました。

データ加工までの流れ

# zipファイルの回答
$ unzip \*.zip
# 適当なディレクトリにcsvファイルを移動
$ mv *.csv /hogehoge
# seqコマンドでcsvのデータからゴミを取り除く
$ sed -e "s/\"//g" ./*.csv > fugafuga/all.csv
# gz圧縮をする。
$ tar -zcvf data.tar.gz fugafuga/

これでS3にアップロードするデータが出来上がりました。

Athenaに読み込ませてみる

スクリーンショット 2017-12-22 10.35.03.png

さきほどできあがったgzファイルのアップロード先のs3の情報をかく。

スクリーンショット 2017-12-22 10.36.33.png

もちろんCSVなので、CSVを選択。

スクリーンショット 2017-12-22 10.37.01.png

カラムの定義です。
ちょうど自分は以下のスキーマをBulk add columnsで追加しました。
適当すぎる部分があるので、調整してください。

sequencenumber int, 
corporatenumber string, 
process string, 
correct tinyint, 
updatedate date, 
changedate date, 
name string, 
nameimageid int, 
kind string, 
prefecturename string, 
cityname string, 
streetnumber string, 
addressimageid int, 
prefecturecode string, 
citycode string, 
postcode string, 
addressoutside string, 
addressoutsideimageid int, 
closedate date, 
closecause string, 
successorcorporatenumber string, 
changecause string, 
assignmentdate string, 
latest date, 
enname string, 
enprefecturename string, 
encityname string, 
enaddressoutside string

これでほぼほぼできあがりです。

動かしてみる

東京都内にある、株式会社〜の企業を10件とってみましょう。

SELECT
    *
FROM
    corporatenumbers
WHERE 
    prefecturename = '東京都'
     AND name like '株式会社%'
LIMIT 10;

スクリーンショット 2017-12-22 10.42.28.png

簡単に取れましたね