AWS Glueで日付の文字列をUnixtimeに変換する

S3の時系列データをGlueを使ってDynamoDBに入れようとした時、範囲検索できるようにするには数値でRangeKeyとして投入する必要があるため日時の文字列をUnixtimeに変換するようにしました。

DynamicFrameにcreated_atというカラムで入っている日付の文字列(%Y-%m-%d %H:%M:%S形式)をUnixtimeに変換します。

import time

# --- glueContextなどの設定 ---

def datetime_to_unixtime(dynamicRecord):
    date_time = time.strptime(dynamicRecord['created_at'], "%Y-%m-%d %H:%M:%S")
    unix_time = int(time.mktime(date_time))
    dynamicRecord['created_at'] = unix_time
    return dynamicRecord

# S3からデータの読み込み(事前にテーブルの定義はしておく)
datasource_s3 = glueContext.create_dynamic_frame.from_catalog(database = "s3data", table_name = "sample_table", transformation_ctx = "datasource_s3")
ds_s3 = Map.apply(frame=datasource_s3, f=datetime_to_unixtime)

glueContext.write_dynamic_frame_from_options(
    frame=ds_s3,
    connection_type="dynamodb",
    connection_options={
        "dynamodb.output.tableName": "dynamodb_sample_table"
    }
)