我使用增量实时表管道创建了一个物化视图表,并且它不附加数据

问题描述 投票:0回答:2

我已经使用增量实时表管道创建了一个物化视图表,由于某种原因它每天都会覆盖数据,我希望它将数据附加到表中而不是进行完全刷新 假设我的表中有 800 万条记录,如果我运行管道,它将删除以前的记录并只放入新记录。我希望它附加到所有现有数据中 我尝试过使用 @dlt.table(mergeMode="append") 它会抛出意外的关键字参数错误

我尝试使用@dlt.table(mergeMode =“append”)它会抛出意外的keyworfd参数错误

databricks etl azure-databricks materialized-views dlt
2个回答
0
投票

您可以使用

@append_flow
装饰器,该装饰器处于公共预览状态,允许您从多个流源写入流表。

您可以使用下面的代码将值附加到物化视图表:

from deltatables import Dlt

@Dlt.table
def my_materialized_view():
    # Your query here (e.g., SELECT * FROM my_source_data)
    pass
@Dlt.append_flow
def my_streaming_pipeline():
    # Your streaming logic here
    pass

  • 使用
    @table
    装饰器定义物化视图和流表。

欲了解更多信息,您可以参考@Kaniz的this


0
投票

根据物化资产文件

  1. 您必须启用“行跟踪”(在 Delta 表、物化视图或流表的基础源上):
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = true);

小心:请阅读有关以这种方式更改表格的警告和问题

您始终可以在启用它的情况下从头开始重建基础表:

CREATE TABLE table_name
TBLPROPERTIES (delta.enableRowTracking = true)
AS SELECT * FROM source_table;
  1. 不能在创建物化资产时使用以下任何关键字或子句:
    • LEFT JOIN
    • EXECTATIONS
    • 非确定性函数(即:
      CURRENT_TIMESTAMP
      或任何在给定输入的情况下不给出完全相同输出的函数)

满足这两个条件后,应启用增量刷新并用作默认刷新。

您可以通过此处的文档检查使用了哪种刷新方法

© www.soinside.com 2019 - 2024. All rights reserved.