添加 SQL 转换
可以在转换任务中包含基于 SQL 的表。SQL 转换允许您将 SQL SELECT 查询输入到管道中,以定义复杂或简单的转换。您可以让 SQL 助手使用生成式人工智能根据文本提示生成查询。如果执行了初始加载或增量加载,则也可以使用宏调整查询以运行。
有关创建转换任务的详细信息,请参阅转换数据。
添加 SQL 转换
要在转换数据任务中添加 SQL 转换,请执行以下操作:
-
在转换中,选择要包含在查询中的数据集,然后单击添加 SQL 转换。
在 名称 中设置转换的名称。有关其他设置的更多信息,请参阅设置。
当您准备好创建 SQL 转换时,单击添加。
显示编辑 SQL 转变。
-
在查询窗格中编写查询以返回基于 SQL 的表。
有关更多信息,请参阅编辑 SQL 查询。
-
单击 运行查询。
这将获取元数据和数据预览。
-
查看 参数中的参数。
有关更多信息,请参阅参数。
-
在 元数据中设置主键。
有关更多信息,请参阅元数据。
-
如果对查询结果满意,单击 保存并关闭。数据集现在被添加到目标列表中,您可以预览它。
编辑 SQL 查询
在查询窗格中键入查询以返回基于 SQL 的表。查询只能读取您选择的源数据集,但您可以使用添加来添加更多源数据集。
-
您可以创建语句以从 对象 加载数据集。单击
,然后单击 在编辑器中生成 select 语句。
-
您可以通过单击
,然后单击 复制,将数据集的名称复制到剪贴板。
-
单击 > 可将数据集或列名移动到编辑器。
-
单击
可在编辑器中查找和替换文本。
如果使用增量加载,则可以使用宏调整查询以在执行初始加载或增量加载时运行。
有关更多信息,请参阅使用宏使查询适应加载类型。
键盘快捷键
-
Ctrl+F 搜索与替换
-
Ctrl+/ 注释/取消注释当前行
-
Ctrl+Enter 运行查询
-
Ctrl+Z 撤消
-
Ctrl+Y 重做
预览结果
您可以使用结果中的数据示例预览结果。
必须为您分配以下角色才能预览数据:
-
连接所在空间中的可以查看数据。
-
项目所在空间中的可以查看。
将显示使用数据样本的结果。可以使用行数设置要包含在示例中的数据行数。
-
点击上次执行的查询以查看上次执行的查询的上次运行时间和持续时间。
筛选结果
您可以按一列或多列筛选结果。
-
点击第一列上的
以进行筛选,然后点击筛选。
选择要使用的运算符和要筛选的值。
您可以通过点击添加筛选器来添加更多列筛选器。
筛选器只会影响现有的样本数据。
对结果进行排序
您可以按特定列对数据样本进行排序。
-
点击要排序的列上的
,然后选择 升序排序 或 降序排序。
排序只会影响现有的样本数据。如果您使用筛选器只包括 2024 年的订单并反转排序顺序,则样本数据仍将只包含 2024 年的订单。
管理显示的列
您可以选择要在结果中显示的列。保存转换时不会保存此选择。
-
通过单击列上的
,然后单击隐藏列来隐藏列。
-
通过单击任意列上的
,然后单击显示的列来管理所有列的显示。
参数
单击参数以更改 SELECT 查询中的参数。参数应映射到源对象或目标对象。
当您执行以下操作时,参数会自动映射:
-
在 Objects 中使用 在编辑器中生成 select 语句。
-
单击 > 将数据集或列名移动到编辑器中。
-
参数名称与 Objects 中表的表名称匹配。
您可以映射至
-
历史 2 型结构 (_history)
-
当前结构
-
目标对象
只有在增量宏中定义参数时,才能映射目标对象。
元数据
您可以在元数据中编辑元数据设置。
-
在键列中设置主键。
-
如果列在 Nullable 列中是可为 Null 的,则进行设置。
-
选择一列,单击编辑按钮,设置列名、键、可为 null 的项和数据类型。
运行查询
您可以在开发过程中随时通过点击运行查询来运行查询。首次运行查询时,将检索元数据。当查询运行时,您可以前往元数据并设置主键,这是完成转换所必需的。
使用宏使查询适应加载类型
如果使用增量加载,则可以使用宏调整查询以在执行初始加载或增量加载时运行。
选择宏并将查询添加到相应的子句中。
-
Q_RUN_INCREMENTAL 添加了一个子句,您可以在其中放置仅在执行增量加载时运行的查询。
-
Q_RUN_INITIAL_LOAD 添加了一个子句,您可以在其中放置仅在执行初始加载时运行的查询。
不需要为每个宏指定完整的查询。您可以根据您的用例调整或添加代码。.
用例:使用日期范围的增量筛选器:
在这个用例中,需要使用自定义 SQL 转换一组订单数据。由于这是一个大型数据集,您希望包括增量筛选,以确保增量负载只考虑过去 12 小时的订单。
这是基本查询:
这是在增量运行期间应用的筛选器,您只考虑过去 12 小时内添加的订单:
这是一个完整的查询,使用筛选器宏,表名用 ${TABLE} 符号替换:
这将产生一个初始加载查询:
以及增量加载查询:
用例:使用目标中的数据进行增量筛选:
在这个用例中,需要使用自定义 SQL 转换一组订单数据。由于订单是一个大型数据集,因此需要包括增量筛选,以确保增量加载只考虑比目标表中的数据更新的订单详细信息记录。您还需要标记一行是由初始加载还是增量加载处理的。
这是基本查询:
这是要在增量运行期间应用的筛选器。“ORDERS_DERIVED” 是目标数据集的名称。
这是一个完整的查询,使用筛选器宏,表名用 ${TABLE} 符号替换。如果负载是初始的,则 LOADED_BY 设置为 INIT,如果负载是增量的,则为 INCR:
这将产生一个初始加载查询:
以及增量加载查询:
设置
点击以编辑 SQL 转换的设置。
在名称中输入目标数据集的名称。
也可以在描述中添加较长的说明。
在具体化中,选择转换后的输出是否应具体化。您可以选择从数据任务设置中继承设置。
-
如果开启,将创建表格并处理相关的 ELT 处理。
-
选择关闭将创建即时执行转换的视图。
在历史数据存储(类型 2)中,选择是否要保留历史数据。您可以选择从数据任务设置中继承设置。此设置要求开启物化功能。
增量加载允许您通过应用筛选器或其他条件来调整增量数据加载的查询,以减少使用宏处理的数据集。只有当数据具体化为表时,增量加载才可用。
-
如果增量加载开启
任务的第一次执行将执行初始加载,将查询的所有结果插入到目标表中。后续执行将利用您为增量处理定义的筛选器或特定条件执行增量加载。在增量加载期间,任务将只把数据作为更新或插入处理,不管理删除。
-
如果增量加载关闭
任务的第一次执行将执行初始加载,将查询的所有结果插入到目标表中。后续执行将通过与目标表进行比较来处理查询的所有结果,并处理新的、更改的或删除的记录。
最佳实践
-
添加 SQL 转换时,不会自动定义主键。在数据集选项卡中向数据集添加键。
-
不要在转换后的输出中手动创建列标题。
-
避免将 SELECT 与 * 一起使用,因为每次运行查询时这都可能返回不同的列。如果模式发生了更改,请相应地更改查询,然后再次执行描述表。然后可以编辑列和调整表。