DLT - 视图 v 物化视图语法以及如何声明?

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

我正在使用徽章架构创建 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 ,但这只是创建了一个流表。非常感谢

databricks azure-databricks spark-structured-streaming delta-live-tables databricks-unity-catalog
1个回答
0
投票

在 Python 中,Delta Live Tables 根据定义的查询确定是否将数据集更新为物化视图或流表。

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

要在 Python 中定义物化视图,请将 @table 应用于对数据源执行静态读取的查询

要定义流式表,请将 @table 应用于针对数据源执行流式读取的查询。

在这里阅读更多内容

https://docs.databricks.com/en/delta-live-tables/python-ref.html#import-the-dlt-python-module

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