在 Azure 中读取 Databricks 表
Reading Databricks tables in Azure
请澄清我的困惑,因为我一直听说我们需要阅读 Databricks Delta tables 创建的每个 Parquet 文件,以在 SCD2 table 的情况下获取最新数据。这是真的吗?
我们可以简单地使用 SQL 并获取最新的行吗?
我们可以使用一些 date/time 列来获取该行的更改历史记录吗?
谢谢
如果愿意,您可以创建和管理 Delta table 作为 SCD2。实际上,让您感到困惑的一定是 Time Travel 功能。它只允许您将 Delta table 回滚到由 Databricks 自动管理的任何历史状态。
答案:
- 没有。相反,我们需要查看所有作为 JSON 文件存储在 _delta_log 文件夹内的 Delta lake 事务日志以及 Parquet 文件,然后查看哪些 parquet 文件被用作最新数据。有关详细信息,请参阅此 doc。
- 是的。我们可以使用 SQL 来获取最新的行。实际上,任何 SQL 脚本执行都将始终是 return 最新数据。但是,有两种方法可以通过 SQL 获取 table 的历史版本,它们是 1) 指定“截至版本”和 2) 指定“截至时间戳”。阅读 more.
PS这个问题问得好
请澄清我的困惑,因为我一直听说我们需要阅读 Databricks Delta tables 创建的每个 Parquet 文件,以在 SCD2 table 的情况下获取最新数据。这是真的吗?
我们可以简单地使用 SQL 并获取最新的行吗? 我们可以使用一些 date/time 列来获取该行的更改历史记录吗?
谢谢
如果愿意,您可以创建和管理 Delta table 作为 SCD2。实际上,让您感到困惑的一定是 Time Travel 功能。它只允许您将 Delta table 回滚到由 Databricks 自动管理的任何历史状态。
答案:
- 没有。相反,我们需要查看所有作为 JSON 文件存储在 _delta_log 文件夹内的 Delta lake 事务日志以及 Parquet 文件,然后查看哪些 parquet 文件被用作最新数据。有关详细信息,请参阅此 doc。
- 是的。我们可以使用 SQL 来获取最新的行。实际上,任何 SQL 脚本执行都将始终是 return 最新数据。但是,有两种方法可以通过 SQL 获取 table 的历史版本,它们是 1) 指定“截至版本”和 2) 指定“截至时间戳”。阅读 more.
PS这个问题问得好