종종 parquet파일을 전달받은 후 athena 혹은 다른 곳에 테이블을 생성해야 하는 경우가 있어 간단하게 create문을 만드는 함수를 만들어 봤습니다.
def make_ddl_from_df(table_name, dataframe) :
cols = ''
for col_name, col_type in dataframe.dtypes :
comma = ',' if len(cols) > 0 else ''
cols += f'\t{comma}`{col_name}`\t{col_type}\n'
ddl = f'''create external table `{table_name}` (
{cols}
)
'''
return ddl
ga_df = spark.read.parquet("s3a://airguy_dev/test/ga_bigquery_table")
ddl_prefix = make_ddl_from_df('airguy_test.ga_bigquery_table', ga_df)
sql = f'''{ddl_prefix}
PARTITIONED BY (`dt` string)
STORED AS parquet
LOCATION 's3://airguy_dev/test/ga_bigquery_table'
'''
print(sql)
결과!