如何在 GCS 中的增量表之上创建 BQ 外部表并仅显示最新快照

问题描述

我正在尝试在使用谷歌存储作为存储层的增量表之上创建一个外部 BQ 外部表。在增量表上,我们执行包含删除的 DML。

我可以在所有增量文件所在的 gs 存储桶顶部创建一个 BQ 外部表。但是,它甚至会拉取删除记录,因为 BQ 外部表无法读取 delta 的事务日志,其中说明要考虑哪些镶木地板文件以及要删除哪些镶木地板。

除了以编程方式将数据从 delta 复制到 BQ 之外,有没有一种方法可以将 BQ 中 delta 表(gs 位置)的最新快照公开为外部表?

解决方法

我也在开发这种管道,我们将我们的 delta 湖文件转储到 GCS 中并在 Bigquery 上呈现。从您的 GCS delta 文件生成清单文件将根据您的 delta 文件上当前设置的版本为您提供最新的快照。然后,您需要创建一个自定义脚本来解析该清单文件以获取文件列表,然后运行提及这些文件的 bq 加载。

val deltaTable = DeltaTable.forPath(<path-to-delta-table>)
deltaTable.generate("symlink_format_manifest")