如何在BigQuery中获取Parquet文件的‘Last modified’信息
获取BigQuery外部Parquet文件的最后修改时间
BigQuery外部表自带的元数据没法跟踪底层Parquet文件的最后修改时间,给你几个可行的解决办法:
方法一:用gsutil命令行批量导出文件信息
用Google Cloud的gsutil工具直接列出存储桶里Parquet文件的详细数据,其中包含修改时间:
gsutil ls -l gs://你的存储桶路径/*.parquet
输出内容会有文件大小、修改时间和完整路径,把这些结果存成CSV后加载到BigQuery的一个辅助表,之后就能和外部表的_FILE_NAME字段关联,查询每个文件的修改时间。
方法二:用BigQuery外部函数直接调用GCS API
通过外部函数对接GCS的接口,在BigQuery里直接获取文件元数据:
- 先创建一个HTTP触发的Cloud Function,功能是接收GCS文件路径,返回其最后修改时间
- 在BigQuery中创建外部函数指向这个Cloud Function:
CREATE OR REPLACE FUNCTION `你的项目ID.数据集名.get_gcs_last_modified`(file_path STRING) RETURNS TIMESTAMP REMOTE WITH CONNECTION `你的项目ID.区域名.连接名称` OPTIONS (endpoint = '你的Cloud Function访问URL');
- 查询外部表时直接调用该函数:
SELECT _FILE_NAME, `你的项目ID.数据集名.get_gcs_last_modified`(_FILE_NAME) AS last_modified_time FROM `你的项目ID.数据集名.外部表名称`
方法三:定期同步GCS元数据到BigQuery
用Cloud Scheduler定期触发Cloud Function,遍历存储桶里的Parquet文件,把文件名和最后修改时间同步到BigQuery的专用表,后续查询时直接关联这个表和外部表即可。
内容的提问来源于stack exchange,提问作者Rub moy
相关产品推荐
相关产品推荐

