dataframe의 스키마를 이용해서 DDL문 만들기

종종 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)

결과!

출력결과가 길어서 뒷부분은 캡쳐 시 잘랐습니다. 🙂