Skip to content

S3に保存されているCURマニフェストファイルからAthenaテーブル作成用のDDLを出力する。

Notifications You must be signed in to change notification settings

TAKEDA-Takashi/athena-create-table-cur

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

athena-create-table-cur

S3に保存されているCURマニフェストファイルからAthenaテーブル作成用のDDLを出力します。

  • printモード
    • 標準出力にDDLを出力します
  • athenaモード
    • AthenaにDDLを実行します

事前準備

$ pip3 install pipenv
$ pipenv install

実行方法

ヘルプについてはpipenv run python main.py -hまたはpipenv run python main.py athena -hなどで確認できます。各モードでマニフェストファイルを指定しますが、トップレベルのマニフェストのパスを指定してください。自動的に最新のassemblyIdを対象としたDDLを生成します。

printモード

標準出力にDDLを出力します。ファイルに保存などをしたい場合はリダイレクトなどで保存してください。

$ pipenv run python main.py -m s3://${your_bucket}/${manifest_path}

or

$ pipenv run python main.py -m s3://${your_bucket}/${manifest_path} print

athenaモード

AthenaにDDLを実行します。Athenaクエリの結果保存用のS3パスを指定する必要があります。

$ pipenv run python main.py -m s3://${your_bucket}/${manifest_path} athena -o s3://${your_bucket}/${output_path}

すでにテーブルが存在する場合は、-fオプションを付けることで再作成します。

$ pipenv run python main.py -m s3://${your_bucket}/${manifest_path} athena -o s3://${your_bucket}/${output_path} -f

下記補足情報にあるように、マニフェストファイルの情報もクエリの対象になります。-vオプションを付けることでマニフェストファイルの情報を除外したビューを作成します。

$ pipenv run python main.py -m s3://${your_bucket}/${manifest_path} athena -o s3://${your_bucket}/${output_path} -v

補足情報

CURが出力されているパスにマニフェストファイルが保存されている場合、マニフェストファイル自体もAthenaクエリの対象となります。これは2019-10-11現在でAthenaの仕様です。

https://docs.aws.amazon.com/ja_jp/athena/latest/ug/tables-location-format.html

そのため、結果セットにマニフェストのデータがゴミとして入ってしまう場合は、明示的に除外するクエリを書くようにしてください。

SELECT * FROM cur_table_name
WHERE "$path" NOT LIKE '%.json'
LIMIT 10;

About

S3に保存されているCURマニフェストファイルからAthenaテーブル作成用のDDLを出力する。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published