gpt4 book ai didi

palantir-foundry - Foundry Magritte append ingestion 如何处理数据源中已删除的行?

转载 作者:行者123 更新时间:2023-12-04 13:31:43 28 4
gpt4 key购买 nike

如果我有一个设置为追加的 Magritte 摄取,它是否会检测源数据中的行是否被删除?它还会删除摄取的数据集中的行吗?

最佳答案

对于关于是否检测到删除的第一个问题,这将取决于您从中提取的数据库实现(我假设这是这个答案的 JDBC)。如果这显示为修改并因此显示一个新行,那么是的,您的删除将显示出来。
乍一看,这将类似于以下内容:

| primary_key | val | update_type | update_ts |
|-------------|-----|-------------|-----------|
| key_1 | 1 | CREATE | 0 |
| key_2 | 2 | CREATE | 0 |
| key_3 | 3 | CREATE | 0 |
随后是一些更新(在后续运行中,增量在 update_ts 上:
| primary_key | val | update_type | update_ts |
|-------------|-----|-------------|-----------|
| key_1 | 1 | UPDATE | 1 |
| key_2 | 2 | UPDATE | 1 |
现在您的数据库必须明确标记任何 DELETE行并增加 update_ts 以将其引入:
| primary_key | val | update_type | update_ts |
|-------------|-----|-------------|-----------|
| key_1 | 1 | DELETE | 2 |
在此之后,您将能够检测已删除的记录并进行相应调整。您的完整实体化表 View 现在将如下所示:
| primary_key | val | update_type | update_ts |
|-------------|-----|-------------|-----------|
| key_1 | 1 | CREATE | 0 |
| key_2 | 2 | CREATE | 0 |
| key_3 | 3 | CREATE | 0 |
| key_1 | 1 | UPDATE | 1 |
| key_2 | 2 | UPDATE | 1 |
| key_1 | 1 | DELETE | 2 |
如果您在 raw 中增量运行摄取,这些行将 不是 自动从您的数据集中删除; 您必须明确地编写逻辑来检测这些已删除的记录并将它们从您的输出中删除 clean步骤 .如果找到这些删除,您必须 SNAPSHOT输出删除它们(除非您正在执行较低级别的文件操作,您可能会删除底层文件)。
值得注意的是,您需要实现 DELETES越晚越好(假设您的中间逻辑允许),因为这将需要快照并会降低您的整体管道性能。
如果您不处理 JDBC,那么@Kellen 的回答将适用。

关于palantir-foundry - Foundry Magritte append ingestion 如何处理数据源中已删除的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64703660/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com