我需要将SQL查询的Explicit列解析为Python中的列表。 一切正常,直到遇到特定情况为止。
鉴于特定的SQL查询,我面临以下明确的列:
column_a, column_b, column_c, row_number() over (partition by column_a, column_b, column_c order by column_a asc) as agg_column
这作为字符串返回给Python,在这里我需要以下格式的Python列表:
parsed_list = ['column_a','column_b','column_c','row_number() over (partition by column_a, column_b, column_c order by column_a asc) as agg_column']
但是,这引发了明显的问题,像这样在Window函数中分隔列:
table_columns = 'column_a, column_b, column_c, row_number() over (partition by column_a, column_b, column_c order by column_a asc) as agg_column'
print(table_columns.split(','))
Out[1]:
['column_a',
' column_b',
' column_c',
' row_number() over (partition by column_a',
' column_b',
' column_c order by column_a asc) as agg_column']
我对regex有点陌生,但是我可以用模式识别字符串中的SQL Window函数:
\w+\((\w+)?\)\sover\s\(.+\)\sas\s\w+$
但是,有可能:
my_column.split(',')
正常拆分列表 ['column_a','column_b','column_c','row_number() over (partition by column_a, column_b, column_c order by column_a asc) as agg_column']