使用 DLT 中的多文件编辑器开发和调试 ETL 管道

重要

此功能在 Beta 版中。

本文介绍如何使用 DLT 中的多文件编辑器开发和调试 ETL(提取、转换和加载)管道。 多文件编辑器在管道资产浏览器中将管道显示为一组文件。 您可以在一个地方编辑文件,并控制管道的配置以及要包含的文件。

有关在 DLT 中使用单个笔记本的默认开发体验,请参阅 在 DLT 中使用笔记本开发和调试 ETL 管道

多文件编辑器概述

ETL 管道多文件编辑器具有以下功能:

  1. 管道资产浏览器:创建、删除、重命名和组织管道资产。

  2. 包含选项卡的多文件代码编辑器:跨与管道关联的多个代码文件工作。

  3. 特定于管道的工具栏:启用 管道配置 并具有 管道级运行作

  4. 交互式定向无环图(DAG):获取表的概览,打开数据预览底部栏,并执行其他与表相关的操作。

  5. 数据预览:检查流式处理表和具体化视图的数据。

  6. 表级执行见解:获取管道中所有表或单个表的执行见解。 见解源自最新的管道运行,

  7. 错误托盘:此功能汇总了管道中所有文件中的错误,你可以导航到特定文件中发生错误的位置。 可对代码级错误指示形成补充。

  8. 选择性执行:代码编辑器具有分步开发的功能,例如,可以使用“运行文件”操作仅刷新当前文件中的表或单个表。

  9. 默认管道文件夹结构:新管道包括预定义的文件夹结构和示例代码,可用于管道的起点。

  10. 简化的管道创建:提供默认创建表的名称、目录和架构,并使用默认设置创建管道。 稍后可以从管道编辑器工具栏调整“设置”。

DLT 多文件编辑器

启用多文件编辑器

备注

必须先为工作区启用 Pipelines 多文件开发人员体验 。 有关详细信息,请参阅 “管理 Azure Databricks 预览版 ”。

如果层位于合规性安全配置文件中,请联系 Azure Databricks 联系人以尝试该功能。

可以通过多种方式启用 ETL 管道多文件编辑器:

  • 创建新的 ETL 管道时,使用“ETL 管道编辑器”开关在 DLT 中启用多文件编辑器。

    开启 DLT 多文件编辑器

    首次启用多文件编辑器时,将为管道使用高级设置页。 下次创建新管道时,将使用简化的管道创建窗口。

  • 对于现有管道,请打开管道中使用的笔记本,并在标头中启用“ETL 管道编辑器”开关。 还可以转到管道监视页,然后单击 “设置” 以启用多文件编辑器。

启用 ETL 管道编辑器 切换后,默认情况下,所有 ETL 管道都将使用多文件编辑器。 可以从编辑器打开和关闭 ETL 管道多文件编辑器。

或者,可以从用户设置启用多文件编辑器:

  1. 单击工作区右上角的用户 徽章,然后单击 设置开发人员

  2. 为笔记本和文件启用选项卡

  3. 启用 ETL 管道多文件编辑器

创建新的 ETL 管道

若要使用多文件编辑器创建新的 ETL 管道,请执行以下步骤:

  1. 在边栏顶部,单击“新建”和“ETL 管道”

    创建新的 ETL 管道

  2. “名称”中,键入管道的唯一名称。

  3. 选择现有的 默认目录和现有的或新的 默认架构

    默认 目录 和默认 架构 是从中读取或写入数据集的位置。 有关详细信息,请参阅 Azure Databricks 中的数据库对象

  4. 选择 PythonSQL 作为 示例代码的语言

    可以在 ETL 管道中同时包含 SQL 和 Python 源代码文件。 创建新管道并选择 示例代码的语言时,该语言仅适用于默认情况下包含在管道中的示例代码。

  5. 单击 “创建”

    创建新的 ETL 管道

ETL 管道是使用以下默认设置创建的:

可以从管道工具栏调整这些设置,或选择“ 创建高级管道 ”以提供首选设置。 有关详细信息 ,请参阅“配置 DLT 管道 ”。

或者,可以从工作区浏览器创建 ETL 管道:

  1. 在左侧面板中单击 “工作区 ”。

  2. 单击右上角的“ 创建 ”,然后单击 “ETL 管道”。

您还可以从作业和管道页面创建 ETL 管道:

  1. 单击左侧面板中的职位

  2. 单击“作业和管道”选项卡。

  3. 单击右上角的“ 创建 ”,然后单击 “ETL 管道”。

打开现有的 ETL 管道

若要在多文件编辑器中打开现有的 ETL 管道,请执行以下步骤:

  1. 在侧面板中单击 “工作区 ”。

  2. 导航到包含管道源代码文件的文件夹。

  3. 单击源代码文件以在编辑器中打开管道。

打开现有的 ETL 管道

还可以通过以下方式打开现有的 ETL 管道:

  • 从编辑器旁边显示的工作区浏览器侧栏打开配置为管道源代码的源代码文件。
  • 在左侧边栏的“最近”页面上,打开管道或配置为管道源代码的文件。
  • 在管道监视页中,单击“ 编辑管道”。
  • 在左侧边栏的“作业运行”页面上,单击“作业和管道”选项卡,然后单击 Kebabm 菜单和“编辑管道”
  • 创建新作业并添加管道任务时,在“New Tab IconNew Tab Icon管道”下选择管道时,可以在“中单击打开。

管道资产浏览器

多文件管道编辑器为工作区浏览器侧边栏提供了一种特殊模式(称为“管道资产浏览器”),且默认会将面板焦点锁定在管道上。 它有两个选项卡:

  • 管道:可在其中找到与管道关联的所有文件。 可以创建、删除、重命名并将其组织到文件夹中。
  • 所有文件:此处提供了所有其他工作区资产。

管道资产浏览器

管道中可以包含以下类型的文件:

  • 源代码文件:这些文件是管道源代码定义的一部分,可在 “设置”中看到。 Databricks 建议始终将源代码文件存储在 管道根文件夹中;否则,它们将显示在浏览器底部 的外部文件 部分中,并具有不太丰富的功能集。
  • 非源代码文件:这些文件存储在管道根文件夹中,但不是管道源代码定义的一部分。

重要

必须使用管道资产浏览器在 “管道 ”选项卡下管理管道的文件和文件夹。 这将正确更新管道设置。 从工作区浏览器或“ 所有文件 ”选项卡移动或重命名文件和文件夹将中断管道配置,然后必须在 “设置”中手动解决此问题。

根文件夹

管道资产浏览器定位在管道根文件夹中。 创建新管道时,管道根文件夹在用户主文件夹中创建,并命名为与管道名称相同。

可以在管道资产浏览器中更改根文件夹。 如果要为管道使用 Git 文件夹,这非常有用。

  1. 单击根文件夹的 Kebab 菜单

  2. 单击“ 配置新根文件夹”。

  3. “管道根文件夹 ”下,单击 “文件夹”图标 并选择另一个文件夹作为管道根文件夹。

  4. 单击“ 保存”。

更改管道根文件夹

在根文件夹的 Kebab 菜单中 ,还可以单击“ 重命名根文件夹 ”以重命名文件夹名称。 在这里,还可以单击“ 移动根文件夹 ”,将根文件夹(例如)移动到 Git 文件夹中。

还可以在设置中更改管道根文件夹:

  1. 点击设置

  2. “代码资产 ”下,单击“ 配置路径”。

  3. 单击 “文件夹”图标 可更改 管道根文件夹下的文件夹。

  4. 单击“ 保存”。

备注

如果更改管道根文件夹,管道资产浏览器显示的文件列表将受到影响,因为上一根文件夹中的文件现在将显示为外部文件。

没有根文件夹的现有管道

默认开发体验中使用 DLT 的单个笔记本创建的现有管道将没有配置根文件夹。 按照以下步骤为现有管道配置根文件夹:

  1. 在管道资产浏览器中,单击“ 配置”。

  2. 单击 “文件夹”图标 以选择 管道根文件夹下的根文件夹

  3. 单击“ 保存”。

无管道根文件夹

默认文件夹结构

创建新管道时,会创建默认文件夹结构。 这是用于组织管道源和非源代码文件的建议结构,如下所示。

在此文件夹结构中创建少量示例代码文件。

文件夹名称 这些类型的文件的建议位置
<pipeline_root_folder> 包含管道的所有文件夹和文件的根文件夹。
explorations 用于探索数据分析的非源代码文件,例如笔记本、查询和代码文件。
transformations 包含表定义的源代码文件,如 Python 或 SQL 代码文件。
utilities 包含可从其他代码文件导入的 Python 模块的非源代码文件。 如果选择 SQL 作为示例代码的语言,则不会创建此文件夹。

可以重命名文件夹名称或更改结构以适应工作流。 若要添加新的源代码文件夹,请执行以下步骤:

  1. 在管道资产浏览器中单击“ 添加 ”。

  2. 单击“ 创建管道源代码”文件夹

  3. 输入文件夹名称,然后单击“ 创建”。

源代码文件

源代码文件是管道源代码定义的一部分。 运行管道时,将评估这些文件。 源代码定义的文件和文件夹部分有一个特殊图标,上面叠加了一个迷你管道图标。

若要添加新的源代码文件,请执行以下步骤:

  1. 在管道资产浏览器中单击“ 添加 ”。

  2. 单击“ 转换 ”或 “数据源”。

  3. 输入文件 的名称 ,然后选择 PythonSQL 作为 语言

  4. 单击 “创建”

还可以在管道资产浏览器中任意文件夹的Kebab 菜单上单击,以添加源代码文件。

transformations创建新管道时,默认情况下会创建源代码的文件夹。 添加数据源文件时,如果文件夹不存在,则会创建一个 data_sources 文件夹。

文件夹名称 DESCRIPTION
transformations 此文件夹是管道源代码的建议位置,例如包含管道表定义的 Python 或 SQL 代码文件。 创建新管道时,默认情况下会创建此文件夹。
data_sources 此文件夹是与读取源数据集相关的代码的建议位置,例如从云文件创建视图或加载数据。 它可以与 Spark 配置参数Databricks 资产捆绑包(DAB) 结合使用,以根据各种条件更改管道读取的位置。 例如,DAB 可以通过使用文件夹路径约定 sources/dev/sources/prod/ 来分别读取位于开发环境和生产环境中的不同源数据。
默认情况下不会创建此文件夹。 如果该文件夹不存在,则在管道资产浏览器中单击“ 添加 ”和 “数据源 ”以创建数据源文件时,将创建该文件夹。

非源代码文件

非源代码文件存储在管道根文件夹中,但不是管道源代码定义的一部分。 当您运行管道时,这些文件不会被检查。 非源代码文件不能是 外部文件

可以将此项用于与你想要与源代码一起存储的管道工作相关的文件。 例如:

  • 用于在管道生命周期外的非 DLT 计算上执行的临时探索的笔记本。
  • 除非在源代码文件中明确导入这些模块,否则不会使用你的源代码来评估这些 Python 模块。

若要添加新的非源代码文件,请执行以下步骤:

  1. 在管道资产浏览器中单击“ 添加 ”。

  2. 单击“ 浏览 ”或 “实用工具”。

  3. 输入文件 的名称

  4. 单击 “创建”

还可以单击管道根文件夹的 Kebab 菜单 或非源代码文件,将非源代码文件添加到该文件夹。

创建新管道时,默认情况下会创建以下非源代码文件的文件夹:

文件夹名称 DESCRIPTION
explorations 此文件夹是笔记本、查询、仪表板和其他文件的推荐位置,然后在非 DLT 计算上运行这些文件,就像在管道执行生命周期之外正常进行一样。
重要说明:这些模块不得作为管道的源代码添加。 管道可能会出错,因为这些文件可能涵盖任意非 DLT 代码。
utilities 此文件夹是建议放置 Python 模块的地点,只要其父文件夹层级上处于根文件夹之下,就可以通过直接导入(例如 from <filename> import)从其他文件中导入这些模块。

还可以导入根文件夹外部的 Python 模块,但在这种情况下,必须将文件夹路径追加到 sys.path Python 代码中:

import sys, os
sys.path.append(os.path.abspath('<alternate_path_for_utilities>/utilities'))
from utils import \*

外部文件

管道浏览器的外部 文件 部分显示根文件夹外的源代码文件。

要将外部文件移动到根文件夹(如 transformations 文件夹),请执行以下步骤:

  1. 单击资产浏览器中文件的 垂直三点菜单,然后单击“移动”

  2. 选择要将文件移动到的文件夹,然后单击“ 移动”。

与多个管道关联的文件

如果文件与多个管道关联,则文件标题中会显示一个徽章。 它具有关联管道的数量,并允许切换到其他管道。

“所有文件”部分

除了 “管道 ”部分,还有一个 “所有文件 ”部分,可在其中打开工作区中的任何文件。 在这里,你可以:

  • 在选项卡中打开根文件夹外部的文件,而无需离开多文件编辑器。
  • 导航到另一个管道的源代码文件,并打开它们以将编辑器焦点放在第二个管道上。
  • 将文件移动到管道的根文件夹。
  • 在管道源代码定义中包含根文件夹外部的文件。

运行管道代码

有三个选项可用于运行管道代码:

  1. 运行管道中的所有源代码文件:单击运行 管道运行包含完整表刷新的管道 ,以运行所有定义为管道源代码的文件中的所有表定义。

    运行管道

    还可以单击 “干运行 ”来验证管道,而无需更新任何数据。

  2. 在单个文件中运行代码:单击“运行文件”或“运行文件并刷新整个表”以运行当前文件中的所有表定义。

    运行文件

  3. 为单个表运行代码:单击源代码文件中表定义的 “运行表DLT 运行表”图标 ,然后单击“ 刷新表 ”或“ 完全刷新表”。

    运行表

定向无周期图 (DAG)

运行或验证管道中的所有源代码文件后,会看到有向无环图(DAG)。 该图显示表依赖项关系图。 每个节点在管道生命周期中具有不同的状态,例如已验证、正在运行或错误。

定向无周期图 (DAG)

可以通过单击右侧面板中的图形图标来打开和关闭图形。 还可以将方向更改为垂直或水平。

单击节点将显示 数据预览 和表定义。 编辑文件时,图形中突出显示了该文件中定义的表。

数据预览

数据预览部分显示所选表的示例数据。

单击有向无环图(DAG)中的节点时,你将看到表数据的预览。

如果未选择表,请转到“ ”部分,然后单击“ 查看数据预览DLT 视图数据预览”图标。 如果选择了表,请单击“ 所有表 ”以返回到所有表。

执行见解

可以在编辑器底部的面板中查看有关最新管道更新的表执行见解。

面板 DESCRIPTION
表格 列出所有表及其状态和指标。 如果选择一个表,则会看到该表的指标和性能,以及数据预览的选项卡。
性能 查询此管道中所有流的历史记录和配置文件。 可以在执行期间和之后访问执行指标和详细的查询计划。 有关详细信息,请参阅 DLT 管道的访问查询历史记录
问题 简化的错误与警告视图。 可以从此任务栏导航到事件日志,单击某个条目以查看更多详细信息,然后导航到发生错误的代码中的位置。 如果错误位于当前显示文件之外的其他文件,这将重定向你到错误所在的文件。
单击“ 查看详细信息 ”以查看相应的事件日志条目以获取完整详细信息。 单击“ 查看日志” 以查看完整的事件日志。
对于与代码的特定部分关联的错误,将显示代码贴附的错误指示器。 若要获取更多详细信息,请单击 错误 图标或将鼠标悬停在红线上。 将显示一个包含详细信息的弹出窗口。 然后可以单击快速修复,以显示一组操作来排查错误。
事件日志 上次管道运行期间触发的所有事件。 单击“查看日志”或任何带有代码的错误,使用“在日志中打开”导航到此面板。

管道设置

若要访问管道设置面板,请单击工具栏中的 “设置 ”,或在管道资产浏览器中的微型卡中单击“ 齿轮”图标

管道设置

限制和已知问题

请参阅 DLT 中 ETL 管道多行编辑器的以下限制和已知问题:

  1. 如果先从 explorations 文件夹中打开一个文件或笔记本,工作区浏览器侧边栏将不会聚焦于管道,因为这些文件或笔记本不属于管道源代码定义的一部分。

    1. 若要在工作区浏览器中输入管道焦点模式,请打开与管道关联的文件。
  2. 常规视图不支持数据预览。

  3. 无法在编辑器页上定义通知。 使用“高级设置”部分下的“旧设置”页链接。

  4. 只能从管道监视页执行多表刷新。 使用管道浏览器中的迷你卡导航到该页面。

  5. 由于代码中的换行,DLT 运行表图标可能会出现在不正确的位置。

  6. 不支持在文件(新编辑器的默认资产类型)中执行 %pip install。 使用管道的源代码定义,可以从笔记本运行 %pip install 。 使用 “设置” 添加笔记本。

常见问题

  1. 为什么选择使用文件而不是笔记本来处理源代码?

    笔记本的基于单元格的执行与 DLT 不兼容。 因此,我们必须关闭功能或更改其行为,从而导致混淆。

    在 ETL 管道多文件编辑器中,文件编辑器用作 DLT 一流编辑器的基础。 功能专为 DLT 设计,例如 运行表DLT 运行表图标,而不是将不同的行为强加于熟悉的功能。

  2. 是否仍可将笔记本用作源代码?

    是的,可以。 但是,某些功能(如 运行表DLT 运行表图标运行文件)将不存在。

    如有使用笔记本的现有管道,它仍然可以在新编辑器中运行。 但是,Databricks 建议切换到新管道的文件。

  3. 如何将现有代码添加到新创建的管道?

    可以将现有源代码文件添加到新管道。 若要添加包含现有文件的文件夹,请执行以下步骤:

    1. 点击设置
    2. 源代码 下,单击“ 配置路径”。
    3. 单击 “添加路径 ”,然后选择现有文件的文件夹。
    4. 单击“ 保存”。

    还可以添加单个文件:

    1. 在管道资产浏览器中单击所有文件
    2. 导航到文件,单击 垂直三点菜单,然后单击“包含在管道中”

    请考虑将这些文件移动到管道根文件夹。 如果离开管道根文件夹外部,它们将显示在 “外部文件 ”部分。

  4. 是否可以在 Git 中管理管道源代码?

    可以在管道资产浏览器中将根文件夹移动到 Git 文件夹:

    1. 单击根文件夹的 Kebab 菜单
    2. 单击“ 移动根文件夹”。
    3. 选择根文件夹的新位置,然后单击“ 移动”。

    有关详细信息,请参阅 “根文件夹 ”部分。

    移动后,将看到根文件夹名称旁边的熟悉的 Git 图标。

    重要

    若要移动管道根文件夹,请使用管道资产浏览器和上述步骤。 如果以其他方式移动,将导致管道配置中断,您必须在设置中手动配置正确的文件夹路径。

  5. 是否可以在同一根文件夹中有多个管道?

    可以,但 Databricks 建议每个根文件夹只有一个管道。

  6. 我什么时候应该运行试运行?

    单击“试运行”以检查代码而不更新表。

  7. 何时应使用临时视图,何时应在代码中使用具体化视图?

    如果不想具体化数据,请使用临时视图。 例如,在数据准备就绪(可通过目录中注册的流式处理表或物化视图进行物化)前,此为数据预处理步骤序列中的一步。