它与 Delta Lake 上的 FACT table 按业务日期和摄取日期进行分区是否相关?

Is it relevant to partition by Business Date and Ingest Date for a FACT table on Delta Lake?

我正在处理一个数据工程案例,我有一个 table Table_Movieingest date 分区。现在,我不时收到一些旧数据。而我需要根据business date.

进行操作

例如: 今天,我收到了对应日期 12/05/2020 的新数据:

  1. 我需要在Table_Movie中删除business date12/05/2020
  2. 对应的数据
  3. 旧数据删除后,我需要插入12/05/2020.
  4. 对应的新数据

ingest date business date 分区会提高性能吗? :

==> eg. Table_Movie/ingestdate=20220812/business_date=20200512/

注意:由于其他原因,我们需要保持与 ingest date 的分区。

如果您有任何建议或指导,请告诉我

如果您只是偶尔收到旧数据,那么按业务日期分区可能会得到非常小的文件,这会影响性能。 Databricks 上的 Delta 使用多种优化技术来避免读取不必要的数据。其中一项技术是 Data Skipping - 在写入数据时,Delta 将记录索引列的最小值和最大值,因此当在索引列上使用条件读取时,驱动程序将根据该索引检查值,并跳过不符合条件的文件有数据。默认情况下,前 N 列(默认为 32,可配置)启用数据跳过,因此您需要确保业务日期列位于列列表的开头。