注意:以下翻译的准确性尚未经过验证。这是使用 AIP ↗ 从原始英文文本进行的机器翻译。
变换是指将一个或多个输入进行处理并返回单一输出的逻辑片段。输入和输出可以是Foundry数据集或模型。
Code Workbook目前支持三种类型的变换:
在Code Workbook中有几种方法可以添加新的变换。
使用图表左上角的新建变换按钮,选择要添加的变换类型。例如,选择Python代码以添加新的Python代码节点,或选择模板以打开模板浏览器。
或者,将鼠标悬停在图表上的现有变换上,然后点击出现的蓝色**+**按钮以打开选择下拉菜单。新创建的变换将成为所选变换的子节点。
Code Workbook中的变换可以保存为数据集。阅读更多关于数据持久化的信息。
未保存为数据集的变换通过特定于工作簿的别名进行识别,允许您在代码中引用变换。对于输入数据集和保存为数据集的变换,Code Workbook会显示每个数据集的两个不同名称:基础Foundry数据集的名称和特定于工作簿的别名。
别名有以下几个好处:
titanic_historical
,另一个别名为titanic_daily_feed
。要编辑数据集名称或其别名,请点击逻辑面板中的名称,输入新名称,并在完成编辑后使用Enter键。如果您更改数据集名称或别名,系统会提示您是否希望自动更新另一个名称。
点击任何变换以打开逻辑面板。要添加输入,点击顶输入栏中的**+**按钮,然后点击所需的输入。
要添加多个输入,请使用**+**旁边的按钮。
代码变换显示为一个代码编辑器,预先填充了您在当前工作簿中使用的语言的基本结构。有关在每种语言中编写代码的具体细节,请参阅语言文档。
全局代码窗格允许您定义在工作簿中的每个代码变换之前执行的代码。全局代码窗格可用于定义将在工作簿中的变换中可用的变量和函数。
对于模板变换,逻辑面板显示一个表单以编辑模板参数。
通过点击图表中的手动输入按钮添加一个手动输入节点。
在手动输入选项卡中输入数据。目前支持的列类型有双精度、整数、布尔和字符串。仅支持500行。
复制和粘贴可以轻松地从其他地方导入数据。
在底部面板中选择运行以执行所选的变换。要运行所有下游变换,选择箭头图标并选择运行所有下游。
运行变换需要对工作簿的编辑权限,以及对工作簿中使用的任何数据集使用的所有权限标记的访问权限。
还有一些快捷键可以快速运行代码。输入?
以查看快捷键列表。
有两种方法可以一次运行多个变换:
当变换正在运行时,任何打印的输出都会流式传输到日志选项卡。这允许您在变换过程中打印输出并在变换仍在运行时查看结果,这对调试或计时逻辑非常有用。
一旦保存到数据集,代码中应用的任何数据排序可能不会被持久化。换句话说,如果您运行一个对数据进行排序的变换,当您将其视为数据集时,数据可能不会按该顺序排序,尽管变换中的其他操作已经应用。
在图表或全屏编辑器中工作时,使用节点底部的选项卡导航变换的输入和输出。
使用输入选项卡查看变换的输入,添加其他输入或更改输入类型。
与其他基于Spark的应用程序一样,Code Workbook在读取数据集时默认不维持行顺序。如果您的分析需要特定的行顺序,请在代码中对数据进行排序。
每种节点语言可用的输入类型如下:
节点语言 | 可用的输入类型 |
---|---|
Python | Spark dataframe, Pandas dataframe, Python transform input, Object |
SQL | Spark dataframe |
R | Spark dataframe, R transform input, R data.frame, Object |
当添加新的变换时,其输入变换将根据新变换的语言和每个输入变换类型默认设置为输入类型,如下所示:
输入变换类型 | 下游变换语言 | 默认输入类型 | 附加细节 |
---|---|---|---|
无架构导入 | Python | Python transform input | |
R | R transform input | ||
SQL | Spark dataframe | 虽然您可以创建一个没有架构的输入变换的SQL节点,但SQL节点仅支持Spark dataframe输入,并且在分析没有架构的输入时不会有效。 | |
有架构导入 | Python | Spark dataframe | |
R | R data.frame | ||
SQL | Spark dataframe | ||
自定义文件格式导入,包括模型 | Python | Object | 有关更多信息,请参阅模型训练教程。Code Workbook中的Object输入类型是自定义文件格式,与Ontology对象无关。 |
R | Object | 有关更多信息,请参阅模型训练教程。Code Workbook中的Object输入类型是自定义文件格式,与Ontology对象无关。 | |
SQL | Spark dataframe | 虽然您可以创建一个自定义文件格式输入变换的SQL节点,但SQL节点仅支持Spark dataframe输入,并且在分析自定义文件格式输入时不会有效。 | |
派生节点 | N/A | 输入节点的输出类型 | 如果输入节点的输出类型与派生节点的语言不兼容,派生节点将使用上面定义的默认值。例如,如果节点A返回Pandas dataframe,而派生节点B是R节点,则节点B将默认读取节点A为R data.frame。 |
当您在Code Workbook中运行变换时,将计算50行的预览以查看结果的形状。此预览显示在预览选项卡中,数据集写入Foundry完成之前。在数据集持久化到Foundry之后,预览选项卡将更新为完整结果。
根据变换中使用的语言,您可以使用绘图库返回会传播到Code Workbook用户界面的可视化。有关如何在每种语言中执行此操作的详细信息,请参阅语言文档。
生成的可视化内容将默认显示在图表中,也可以在底部的可视化选项卡中查看。
使用上下文菜单,您可以在表格模式和图表模式之间切换视图。
在可视化选项卡中,您可以将图表下载为图像或将其添加到报告中。这些操作也可以在上下文菜单中进行。
查看运行变换时的打印语句(标准输出)、警告和出错(标准出错)。如果存在标准出错,日志选项卡将自动选中,并会出现一个小的提示,通知您有警告/出错输出。
更新数据集的描述。请注意,更新描述会在所有分支中更新 - 该描述也将在打开数据集视图中可用。
您可以使用markdown来样式化您的描述,并通过在右键(操作)菜单中启用显示描述在图表中查看它们。要在一个工作簿中的所有节点上显示描述,请点击标题中的工具齿轮图标并选择显示所有描述。
返回模型的变换将自动写入Foundry作为模型,从而允许使用Foundry ML界面。有关如何在每种语言中使用模型的详细信息,请参阅语言文档。
一些变换是非确定性的——尽管输入数据和变换逻辑相同,它们返回的结果却不同。一些可能导致非确定性变换的函数包括调用当前时间戳、行号、单调递增的ID以及在对包含重复值的列排序后的变换。
在Code Workbook中,运行一个变换将启动两个任务:一个任务计算50行预览,另一个任务对整个数据集进行变换并将结果写入Foundry。如果存在非确定性变换,您在50行预览中看到的结果可能与Foundry数据集中的结果不一致。
在变换中运行非确定性代码时,数据框不一定会物化。例如,假设您有一个非确定性变换Transform A,它是Transforms B和C的父变换。如果您分别从Code Workbook中运行每个变换,则每个数据集将顺序写入Foundry,从而在变换B和C中保持一致的结果。然而,如果您选择“运行所有下游”在A上,由于在运行B和C时A不一定物化,您可能会看到冲突的结果。从数据沿袭中运行构建也可以防止这种情况,因为每个数据集将被物化并顺序计算,就像转换为Pandas dataframe一样。
一些导致非确定性变换的函数示例包括current_date()
、current_timestamp()
和row_count()
,尽管其他函数也可能导致非确定性。有关Spark计算变换可能导致意外行为的更多信息,请参阅Apache Spark文档 ↗。