它与 Delta Lake 上的 FACT table 按业务日期和摄取日期进行分区是否相关?
Is it relevant to partition by Business Date and Ingest Date for a FACT table on Delta Lake?
我正在处理一个数据工程案例,我有一个 table Table_Movie
被 ingest date
分区。现在,我不时收到一些旧数据。而我需要根据business date
.
进行操作
例如:
今天,我收到了对应日期 12/05/2020 的新数据:
- 我需要在
Table_Movie
中删除business date
12/05/2020 对应的数据
- 旧数据删除后,我需要插入12/05/2020.
对应的新数据
按 ingest date
和 business date
分区会提高性能吗? :
==> eg. Table_Movie/ingestdate=20220812/business_date=20200512/
注意:由于其他原因,我们需要保持与 ingest date
的分区。
如果您有任何建议或指导,请告诉我
如果您只是偶尔收到旧数据,那么按业务日期分区可能会得到非常小的文件,这会影响性能。 Databricks 上的 Delta 使用多种优化技术来避免读取不必要的数据。其中一项技术是 Data Skipping - 在写入数据时,Delta 将记录索引列的最小值和最大值,因此当在索引列上使用条件读取时,驱动程序将根据该索引检查值,并跳过不符合条件的文件有数据。默认情况下,前 N 列(默认为 32,可配置)启用数据跳过,因此您需要确保业务日期列位于列列表的开头。
我正在处理一个数据工程案例,我有一个 table Table_Movie
被 ingest date
分区。现在,我不时收到一些旧数据。而我需要根据business date
.
例如: 今天,我收到了对应日期 12/05/2020 的新数据:
- 我需要在
Table_Movie
中删除business date
12/05/2020 对应的数据
- 旧数据删除后,我需要插入12/05/2020. 对应的新数据
按 ingest date
和 business date
分区会提高性能吗? :
==> eg. Table_Movie/ingestdate=20220812/business_date=20200512/
注意:由于其他原因,我们需要保持与 ingest date
的分区。
如果您有任何建议或指导,请告诉我
如果您只是偶尔收到旧数据,那么按业务日期分区可能会得到非常小的文件,这会影响性能。 Databricks 上的 Delta 使用多种优化技术来避免读取不必要的数据。其中一项技术是 Data Skipping - 在写入数据时,Delta 将记录索引列的最小值和最大值,因此当在索引列上使用条件读取时,驱动程序将根据该索引检查值,并跳过不符合条件的文件有数据。默认情况下,前 N 列(默认为 32,可配置)启用数据跳过,因此您需要确保业务日期列位于列列表的开头。