为什么使用V2格式的BigQuery审核日志的列名称为“_v1_”?

时间:2017-03-09 02:01:18

标签: google-bigquery google-cloud-platform stackdriver google-cloud-logging

我使用新的V2格式通过控制台打开了审核日志,并创建了一个接收器,将它们导出回BigQuery进行分析:

enter image description here

导出到BigQuery的表在列名中都有“ v1 ”,即使我选择了V2格式:

enter image description here

然后,当我尝试查询表时,因为列名超过128个字符,所以会引发错误:

enter image description here

为什么使用v1命名架构导出审核日志,如何绕过超过128个字符限制的列名?

2 个答案:

答案 0 :(得分:2)

  

如何解决超过128个字符限制的列名?

我认为问题不在于引用长命名列路径,而是在输出列的名称中 因此,要解决旧版SQL中的问题 - 您应该提供符合名称cnvention的别名 或者只使用标准SQL - 在这种情况下,别名默认为叶子字段的名称(在本例中为totalBilledBytes

   
#legacySQL  
SELECT  
  protopayload_google_cloud_audit_auditlog.
    servicedata_google_cloud_bigquery_logging_v1_auditdata.
    jobCompletedEvent.
    job.
    jobStatistics.
    totalBilledBytes AS totalBilledBytes   
FROM [yourTable]

#standardSQL   
SELECT  
  protopayload_google_cloud_audit_auditlog.
    servicedata_google_cloud_bigquery_logging_v1_auditdata.
    jobCompletedEvent.
    job.
    jobStatistics.
    totalBilledBytes    
FROM `yourTable`

答案 1 :(得分:0)

  

为什么使用v1命名架构导出审核日志?

v2格式的导出是指包含审核日志有效内容的LogEntry

列名中的“v1”是BigQuery AuditData消息的版本(特别是google.cloud.bigquery.logging.v1.AuditData协议缓冲区),它存储在日志条目的proto payload字段中。以REST样式描述的public documentation不公开版本。