Google bigquery 展平BQ日志表?

Google bigquery 展平BQ日志表?,google-bigquery,Google Bigquery,我正试图找出如何展平bigquery日志表(logs.cloudaudit\u googleapis\u com\u data\u access\u 20160404等),以便基本上可以看到任何给定目标表的所有已完成作业 理想情况下,我只需要像下面这样的东西,向我显示所有与表[dataset_xyz.table_abc]相关的作业条目,然后我就可以知道如何根据作业类型等来理解某些字段的填充 SELECT * FROM [logs.cloudaudit_googleapis_com_d

我正试图找出如何展平bigquery日志表(logs.cloudaudit\u googleapis\u com\u data\u access\u 20160404等),以便基本上可以看到任何给定目标表的所有已完成作业

理想情况下,我只需要像下面这样的东西,向我显示所有与表[dataset_xyz.table_abc]相关的作业条目,然后我就可以知道如何根据作业类型等来理解某些字段的填充

SELECT 
  *
FROM 
  [logs.cloudaudit_googleapis_com_data_access_20160404]
where
  (
  protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.query.destinationTable.datasetId='dataset_xyz'
  and
  protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.query.destinationTable.tableId='table_abc'
  )
  or
  (
  protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.tableCopy.destinationTable.datasetId='dataset_xyz'
  and
  protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.tableCopy.destinationTable.tableId='table_abc'
  )
  or
  (
  protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.load.destinationTable.datasetId='dataset_xyz'
  and
  protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.load.destinationTable.tableId='table_abc'
  )
我试着做了很多嵌套展平,但由于发现日志结构有点复杂,我无法真正理解它

我基本上希望能够查询日志导出,说“显示与编辑表[dataset_xyz.table_abc]有关的所有内容”,因此我猜主要是加载、表复制和查询作业,这些作业附加或重写表[dataset_xyz.table_abc]中的任何数据

我唯一能想到的下一件事就是沿着嵌套的记录将表拆开,然后以某种方式将它们分别连接在一起,但这似乎是一个疯狂的想法。我确信有一种方法可以重复地将其展平,但我就是不知道如何展平如此复杂的结构。即使我可以将protoPayload.serviceData.jobCompletedEvent.*下的所有内容展平,我也可以这样做

select protoPayload.serviceData.jobCompletedEvent.* from flatten(...
或者也许有一个更简单的方法来解决这个问题,而我却错过了

p、 我认为这可能是一个很好的例子,因为我认为这是人们想要做的足够普遍的事情

您是否尝试过以下方法:

选择protoPayload.serviceData.jobCompletedEvent.job.jobName.jobId 来自[audit_logs.cloudaudit_googleapis_com_data_access_20160406] 如果(求和),则省略记录(

(protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.query.destinationTable.tableId='table'和 protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.query.destinationTable.datasetId='ds' ) 或 ( protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.load.destinationTable.datasetId='ds'和 protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.load.destinationTable.tableId='table'

) )=0)