与Python教程:声明一个数据管道三角洲生活表

本教程向您展示了如何使用Python语法来声明一个数据管道在三角洲住表。用户熟悉PySpark或熊猫的火花可以使用DataFrames三角洲生活表。用户不熟悉火花DataFrames,砖建议使用SQL三角洲生活表。看到教程:声明一个数据管道使用SQL在三角洲住表

Python语法为三角洲住表扩展标准PySpark进口通过一系列的装饰功能dlt模块。

请注意

  • 你不能混合语言在三角洲生活表源代码文件。您可以使用多个笔记本或文件与不同的语言在一个管道。

  • 在这个例子中,使用代码选择蜂巢metastore当您创建管道的存储选项。因为这个例子从DBFS读取数据,不能运行这个例子与管道配置为使用统一目录存储选项。

你在哪里运行Python三角洲住表查询?

您可以使用笔记本或Python文件编写Python三角洲生活表查询,但三角洲表不是被设计运行交互式地生活在笔记本电池。

三角洲生活表不同于许多Python脚本在一个关键:你不调用的函数执行数据摄入和转换创建三角洲住表数据集。相反,三角洲生活表解释的装饰功能dlt模块在所有文件加载到一个管道和构建一个数据流图。

重要的

你不能依赖于细胞执行命令的笔记本在编写Python三角洲生活表。三角洲生活表评估和运行所有代码中定义的笔记本,但是比一个笔记本一个完全不同的执行模型运行所有命令。

执行一个细胞包含三角洲生活表语法在砖笔记本的结果在一个错误消息。了解配置管道与达美住表,看看教程:管道运行第一个三角洲住表

声明一个三角洲生活与Python表的数据管道

本教程演示如何使用Python语法来声明一个三角洲生活表管道数据集包含维基百科点击流数据:

  • 阅读原始JSON点击流数据到表中。

  • 阅读从原始数据表记录和使用三角洲生活表预期创建一个新表,其中包含清洗数据。

  • 利用洁净的记录数据表三角洲生活表查询,创建派生的数据集。

这段代码演示了一个图案架构的简化示例。看到奖章lakehouse架构是什么?

将Python代码复制粘贴到一个新的Python笔记本。您可以将示例代码添加到笔记本的单细胞或多细胞。回顾笔记创建选项,看看创建一个笔记本

请注意

当您创建一个管道与Python接口,默认情况下,表名是由函数名。例如,下面的Python示例创建了三个表命名clickstream_raw,clickstream_prepared,top_spark_referrers。你可以覆盖表名使用的名字参数。看到创建一个三角洲住表物化视图或流表

导入三角洲生活表模块

所有三角洲住表Python api实现的dlt模块。显式导入dltPython模块的笔记本和文件。

下面的例子显示了这个进口,同时导入语句pyspark.sql.functions

进口dltpyspark.sql.functions进口*

执行任意Python语句

您可以定义Python变量和函数与三角洲生活表代码在笔记本。所有Python逻辑运行δ生活表解决了管道图。

下面的代码声明了一个文本变量用于下一步加载JSON数据文件:

json_path=“/ databricks-datasets / wikipedia-datasets /数据2015 - 001 /点击流/ raw-uncompressed-json / _2_clickstream.json”

创建一个表在对象存储文件

三角洲生活表支持加载所有数据格式支持的砖。看到在砖与外部数据

@dlt.table装饰告诉三角洲生活表创建一个表,其中包含DataFrame的结果返回的一个函数。添加@dlt.table装饰在任何Python函数定义,返回一个火花DataFrame三角洲住表中注册一个新表。下面的例子演示了使用函数名作为表名和表添加一个描述性的评论:

@dlt(评论=“原始维基百科点击流数据集,从/ databricks-datasets摄取。”)defclickstream_raw():返回(火花格式(“json”)负载(json_path))

添加一个表从一个上游管道中的数据集

您可以使用dlt.read ()阅读其他数据集的数据声明的在你当前的三角洲住表管道。宣布新表以这种方式创建一个依赖项,三角洲生活表自动执行更新之前解决。下面的代码的例子还包括监测和执行数据质量与预期相符。看到管理数据质量与达美住表

@dlt(评论=“维基百科点击流数据清洗和准备分析。”)@dlt预计(“valid_current_page_title”,“current_page_title NOT NULL”)@dltexpect_or_fail(“valid_count”,“click_count > 0 ")defclickstream_prepared():返回(dlt(“clickstream_raw”)withColumn(“click_count”,expr(“铸(n为INT)”))withColumnRenamed(“curr_title”,“current_page_title”)withColumnRenamed(“prev_title”,“previous_page_title”)选择(“current_page_title”,“click_count”,“previous_page_title”))

创建一个表与丰富数据视图

因为δ生活表流程更新管道作为一系列的依赖图,您可以声明高纯度仪表板视图权力,BI和分析通过声明表与特定的业务逻辑。

三角洲生活表表物化视图在概念上是等价的。而引发传统意见执行逻辑视图查询,每次三角洲住表表存储查询结果数据文件的最新版本。因为δ生活表管理在一个管道中更新所有数据集,您可以安排管道更新以匹配物化视图和延迟要求知道查询这些表包含数据可用的最新版本。

定义的表下面的代码演示了物化视图的概念相似性源于上游管道中的数据:

@dlt(评论=“一个表包含页面链接到Apache火花页面顶部。”)deftop_spark_referrers():返回(dlt(“clickstream_prepared”)过滤器(expr(“current_page_title = = Apache_Spark”))withColumnRenamed(“previous_page_title”,“referrer”)排序(desc(“click_count”))选择(“referrer”,“click_count”)限制(10))

下一个步骤

欲了解BOB低频彩更多,请看三角洲生活表Python语言参考