2016-04-29 80 views
2

我有一个BQ表,其中一列是REPEATED类型,我试图使用Google App Engine中的Python客户端库创建一个新的表表格重新计算了一些列,并添加了更多列。Bigquery:将查询结果附加到表时如何保留REPEATED属性

使用下面的配置,副本可以工作,但arguments列(源表中的REPEATED列)变平展成多行。 如何保留列的重复性?我们知道这是可能的,因为Web UI可以做到这一点,但我找不到任何关于如何使用Python客户端库的文档。

query_sql = """ 
SELECT _id,app_name,user,source,function,arguments,startT,deltaT,ip_addr,location,session,agent FROM 
    (select _id, app_name,user,'server' as source, function,arguments,startT,deltaT,ip_addr,'eng.example.com' as location,session,agent from [probe_data.mini_probe_data] 
     where app_name = 'smeng' 
     and user is not null 
     and not function contains 'ajax'), 
    (select _id, app_name,user,'browser' as source,function,arguments,startT,deltaT,ip_addr,'eng.example.com' as location,session,agent from [probe_data.mini_probe_data] 
     where app_name = 'smeng' 
     and user is not null 
     and function contains 'ajax'), 
""" 
jobData = { 
    "projectId": project_id, 
    "configuration": { 
     "query": { 
      "query": query_sql, 
      "destinationTable": { 
       "projectId": project_id, 
       "datasetId": dataset_id, 
       "tableId": tbl_dst, 
      }, 
      "createDisposition": "CREATE_IF_NEEDED", 
      "writeDisposition": "WRITE_APPEND", 
     } 
    } 
} 

为了澄清,writeDisposition必须WRITE_APPEND因为我将结合多个表中的数据,但这是后,当这部分工作。

我已经阅读了关于复制以及通过客户端API转换BigQuery表的大部分文档,例如managing tablesthis SO discussion等。

回答

0

我相信你需要添加flattenResults:False以确保查询结果不被压平。

从文档:

工作[] configuration.query.flattenResults

布尔

[可选] 压平在查询结果中所有嵌套和重复领域。 默认值为true。如果将 设置为false,allowLargeResults必须为true。

+0

就是这样,谢谢。 – singhj

相关问题