我正在使用徽章架构创建 DLT 管道。在 Silver 中,我使用 CDC/SCD1 按日期获取最新的 id,工作正常,但我对 @dlt.view 包装器有疑问。
我当前的管道如下所示:
青铜
dlt.create_table(xxx)
def bronze_table():
return(spark.readStream.transform(transformation_function))
银色 这里根据 CDC 文档,我需要创建一个视图,因为流表不支持 CDC:https://docs.databricks.com/en/delta-live-tables/cdc.html
@dlt.view
df view():
return dlt.readStream("bronze_table)
dlt.create_streaming_table("target")
dlt.apply_changes(
xyz
)
我的问题是,我正在创建的视图是静态视图还是物化视图?在 DLT Pipeline UI 中,它说这只是一个视图。然而,我希望这是一个物化视图,因为我希望延迟尽可能快,并尽可能利用 Delta Live Tables 来优化延迟。
如果我只创建静态视图 - 我需要应用什么语法来创建物化视图?我尝试了 dlt.table ,但这只是创建了一个流表。非常感谢
在 Python 中,Delta Live Tables 根据定义的查询确定是否将数据集更新为物化视图或流表。
@table装饰器用于定义物化视图和流表。
要在 Python 中定义物化视图,请将 @table 应用于对数据源执行静态读取的查询。
要定义流式表,请将 @table 应用于针对数据源执行流式读取的查询。
在这里阅读更多内容
https://docs.databricks.com/en/delta-live-tables/python-ref.html#import-the-dlt-python-module