首页 > 解决方案 > 在选择 SQL 时插入 BigQuery 动态查询

问题描述

文件.ini:-


块引用

TAB1: table1
TAB2: table2
KEYS:
    col1: 'SKey'
NONKEYS:
    col2: 'SCode'
    col3: 'SName'
    col4: 'SState

文件数据.csv:-


Blockquote SKey,SCode,SName,SState,EDate,CFlag 123,ABC,Acme Supply Co,CA,01/01/00,N 124,ABC,Acme Supply Co,IL,22/12/04,N 125,ABC, Acme Supply Co,CA,01/01/00,N 126,ABC,Acme Supply Co,IL,22/12/04,N 127,ABC,Acme Supply Co,CA,01/01/00,N 128,ABC ,Acme Supply Co,IL,22/12/04,N 129,ABC,Acme Supply Co,CA,01/01/00,N 130,ABC,Acme Supply Co,IL,22/12/04,N 131, ABC,Acme Supply Co,CA,01/01/00,N 132,ABC,Acme Supply Co,IL,22/12/04,N

BQ 表:-


Blockquote SKey SCode SName SEmail SPhone SState EDate Confirm 123,ABC,Acme Supply Co,CA,01/01/00,N 问题:

要执行的两步作业。读取 file_data.csv 文件并插入到 table2。file.ini 文件将提供 file_data.csv 中有多少列,哪些是 KEY 或 NONKEY。形成查询,以便比较 table1 和 table2 中的 SKey 列并插入到 table1 中,其中 table1 中的 SKey 列 = table2 中的 SKey 列,并且 table2 中的其余列数据与 table1 中的不同。

唯一的主要问题是在选择查询中使用的列数可以根据 ini 文件、KEYS 和 NONKEYS 列表项而有所不同。查询必须是动态的,并且可以容纳 file.ini 中存在的许多 KEYS 和 NONKEYS。每次新的 file.ini 和 file_data.csv 都有不同的列并且存在相应的 KEYS 和 NONKEYS ..

我正在尝试的逻辑是:- 对于 table2 中的每一行,比较 table1 和 2 中的每个 col 以及 SKey 匹配的位置(相同)和其他数据不同(col3/4/5 等),即不同,然后将这些列插入表 2 到表 1 。但是在构建所有动态查询时遇到了麻烦。

标签: google-bigquery

解决方案


推荐阅读