我有一个基于 java 的定制云数据流作业,它更新目标项目中的 bigquery 表,我在一个月前的 2023 年 8 月 12 日停止了该作业。
但是我查看了云日志记录,我可以看到 8 月 12 日之后调用了 AppendRows 操作。
{
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"status": {
"message": "OK"
},
"authenticationInfo": {},
"requestMetadata": {
"requestAttributes": {},
"destinationAttributes": {}
},
"serviceName": "bigquery.googleapis.com",
"methodName": "google.cloud.bigquery.storage.v1.BigQueryWrite.AppendRows",
"authorizationInfo": [
{
"resource": "projects/test-development/datasets/test_dataset/tables/test_table",
"permission": "bigquery.tables.updateData",
"granted": true,
"resourceAttributes": {}
}
],
"resourceName": "projects/test-development/datasets/test_dataset/tables/test_table",
"metadata": {
"tableDataChange": {
"streamName": "projects/test-development/datasets/test_dataset/tables/test_table/streams/Cic2NTA3YTM0My0wMDAwLTIzMjgtOGEyZS0wODllMDgyZmRhNzA6czY",
"insertedRowsCount": "13",
"reason": "WRITE_API"
},
"@type": "type.googleapis.com/google.cloud.audit.BigQueryAuditMetadata"
}
},
"insertId": "ofg54hdtzg0",
"resource": {
"type": "bigquery_table",
"labels": {
"table_id": "test_table",
"dataset_id": "test_dataset",
"project_id": "test-development"
}
},
"timestamp": "2023-08-26T20:40:17.174691Z",
"severity": "INFO",
"logName": "projects/test-development/logs/cloudaudit.googleapis.com%2Fdata_access",
"operation": {
"id": "7923749237482-projects/test-development/datasets/test_dataset/tables/test_table/streams/Cic2NTA3YTM0My0wMDAwLTIzMjgtOGEyZS0wODllMDgyZmRhNzA6czY",
"producer": "bigquery.googleapis.com",
"last": true
},
"receiveTimestamp": "2023-08-26T20:40:17.847787645Z"
}
但是,如果我去检查 BigQuery 控制台上的表格
Details
选项卡,它会将 Last modified
日期显示为 12th August 2023
。
我想知道为什么 BigQuery 表的上次修改日期不一致,或者是否有我遗漏的内容?
您注意到 BigQuery 表中的上次修改日期与 Cloud Logging 中记录的 AppendRows 操作之间的不一致,可以通过检查 BigQuery 如何管理数据流和元数据更新来澄清。
您在 BigQuery 表详细信息页面上看到的“上次修改日期”通常表示对表的架构或元数据进行更改的时间。它通常不会更新以反映流式插入或向表中添加新行。该日期主要与表结构或属性的修改有关。另一方面,记录在
Cloud Logging中的
AppendRows
操作对应于表中的流式插入或数据更新。当通过流数据源(例如 Cloud Dataflow)将新行引入表时,会发生这些操作。
在您的情况下,即使您停止 Dataflow 作业,您也应该在 Cloud Logging 中看到 AppendRows 操作,因为这些操作反映了表内数据的更改。表详细信息选项卡中的“上次修改”日期反映了表的元数据或架构的更改,而不是其数据。
总而言之,您所看到的不一致是由于 BigQuery 控制台中的“上次修改”日期(与元数据调整相关)和 Cloud Logging 中记录的 AppendRows 操作(与数据调整相关)的含义不同造成的。