データアナリストくんのblog

データアナリストとして働いている人がちょっと調べる内容をまとめるブログ

AWS Athenaにawswranglerを用いてテーブルを作成

普段の業務でクラウドサービスとしてAWSを利用しています。
データ集計業務や分析ではAthenaというサービスを使ってますが、SQLでは面倒な処理(pivotなど)はPythonでやりたくなります。
PythonからAthena上にテーブルを作る際に便利なpakcage「awswrangler」があるので紹介です!
※AthenaはGlue Datacatalogを参照してますので、テーブル定義などはDatacatalog側にあります。

もしawswranglerがinstallされていない場合はinstallしてください。
(PyPIドキュメント)https://pypi.org/project/awswrangler/

pip install awswrangler
import awswrangler as wr

# df変数にテーブル元になるdataframeを格納しておく。
wr.s3.to_parquet(
    df=df,
    path='s3://bucket/prefix/',
    table='sample_table',
    database='sample_database',
    mode='overwrite', # appendにすればデータを追加。overwriteは上書きなので元あるデータは消えます。
    dataset=True,
    partition_col=['{partition_name}'], # partitionがない場合は削除、複数ある場合はリスト内に追加すればokです。
    max_rows_by_file=int(1e6) # これがない場合は1ファイルにまとめられます。Athenaの性質上複数ファイルに分かれていると読み込みが早くなる場合があるので、データ数が多い場合は分けることをお勧めします(例で100万: 1e6行にしています)。
)