扩展教程

扩展教程建立在基础教程的基础上,使用另外一组阶段来执行一些数据转换并写入Trash开发目标端。我们还将使用数据预览来测试平台配置。

您可以写入实际目标端而不是Trash目标端。Trash目标端允许您在不写入实际目标系统的情况下运行管道。

扩展教程继续执行以下步骤:

  1. 配置一个Field Type Converter以转换字段类型。
  2. 使用表Expression Evaluator处理数据。
  3. 使用数据预览来测试和更新管道配置。
  4. 使用占位的Trash目标端完成管道。
  5. 重置源端并运行扩展管道。

使用Field Type Converter转换类型

由于样本数据是从文件中读取的,因此所有字段均为String。让我们使用一个Field Type Converter来转换一些数据类型。

让我们将datetime字段转换为Datetime,并将monetary字段以及longitude和latitude字段转换为Double。
  1. 将一个Field Type Converter添加到画布。
  2. 要将来自管道的所有数据路由到新阶段,请将Field Masker和Expression Evaluator连接到它,如下所示:
  3. 点击“Conversions”标签。
  4. 将具有日期时间数据的字段转换为Datetime,如下所示:
    Field Type Converter属性 日期时间转换
    Fields to Convert 单击字段。从字段列表中,选择以下字段:

    • /dropoff_datetime
    • /pickup_datetime
    Convert to Type Datetime
    Date Format 数据使用的日期格式。

    选择以下格式:yyyy-MM-DD HH:mm:ss

  5. 要将包含货币信息的字段转换为Double,请单击“Add图标并按如下所示配置属性。

    对未列出的属性使用默认值:

    Field Type Converter属性 双重转换
    Fields to Convert 单击该字段,然后选择以下字段:

    • /fare_amount
    • /dropoff_latitude
    • /dropoff_longitude
    • /mta_tax
    • /pickup_latitude
    • /pickup_longitude
    • /surcharge
    • /tip_amount
    • /tolls_amount
    • /total_amount

    如果字段未显示在列表中,则可以键入字段名称,然后使用Tab或Enter键完成操作。

    Convert to Type Double
管道和Field Type Converter应如下所示:

使用Expression Evaluator处理数据

现在,我们将使用Expression Evaluator来创建拾取和放置位置字段,以合并纬度和经度详细信息。我们还将通过从总票价中减去小费来计算基本旅行收入。

  1. 在画布上添加一个Expression Evaluator,然后将Field Type Converter连接到舞台。
  2. 在“Expressions选项卡上,单击“Add图标,然后输入以下信息以生成上落地点数据:
    输出字段 表达式
    /pickup_location ${record:value(‘/pickup_latitude’)}, ${record:value(‘/pickup_longitude’)}
    /dropoff_location ${record:value(‘/dropoff_latitude’)}, ${record:value(‘/dropoff_longitude’)}
    这些表达式以以下格式返回来自两个字段的数据: <latitude>, <longitude>
  3. 要添加其他表达式,请单击“add”图标,然后输入以下信息以从总票价中减去小费:
    输出字段 表达式
    /trip_revenue ${record:value(‘/total_amount’) – record:value(‘/tip_amount’)}

    此表达式从总票价中减去小费。

  4. 由于我们不需要更改头属性,因此请使用 减号图标()删除默认的头属性表达式。

这是扩展管道中的Expression Evaluator:

预览和编辑管道

扩展教程几乎完成了,让我们使用数据预览来查看不同阶段如何转换数据。我们将进行一些配置更改,并通过编辑预览数据进行一些测试。

要预览管道,请单击“Preview图标:

您可以通过选择阶段并在“Preview”面板中查看输入和输出记录来探索每个阶段如何转换数据。让我们关注以下几个阶段:

Field Masker
让我们看看Field Masker如何屏蔽信用卡号并更改阶段使用的掩码。
要查看Field Masker如何屏蔽信用卡号:

  1. 在画布中选择“Field Masker”,然后展开第一个输入和输出记录。
  2. 向下滚动并注意credit_card字段突出显示。这表示字段中已被阶段更改的数据。
  3. 请注意,如何屏蔽除后四个数字以外的所有数字。我们通过使用正则表达式掩码类型并在正则表达式中显示第二组来做到这一点。
假设我们要屏蔽整个信用卡号。要查看阶段配置并尝试其他选项:

  1. 向上滚动到“Preview”面板的顶部。然后,在左侧,选择“Stage Configuration图标:
  2. 单击“Mask”选项卡。
  3. 更改“Mask Type”为“Variable Length”,以根据数据中有多少位数字来显示多少位掩码
  4. 要查看此更改的结果,请单击“Run with Changes图标:
  5. 在“Preview”面板中,选择“Records选项卡以查看更新的预览记录:
  6. 展开输出记录,然后注意现在如何屏蔽整个信用卡号:

Field Type Converter
Field Type Converter更改一些字段的数据类型。我们将看一下该阶段并尝试更改阶段配置。

  1. 不用在管道中选择Field Type Converter,而是单击Next Stage图标:并选择 Field Type Converter

    您可能会注意到一条红色消息,指示第一条记录的日期不可解析——它表明日期数据的末尾包含无效字符。

    那么,这个损坏的记录会怎样?这取决于阶段的配置方式。我们使用了默认配置,但让我们看看它是什么。

  2. 在面板的左侧,单击“Stage Configuration图标:。注意,“On Record Error”属性设置为“Send to Error

    这意味着将错误记录发送到管道以进行错误处理。我们将管道配置为将所有错误记录写入文件,因此将来自此阶段的错误记录写入文件。

    您可以配置此属性以在遇到错误记录时停止管道或丢弃错误记录。

  3. 要查看丢弃错误时的结果,请将“On Record Error”设置为“Discard,然后单击“Run with Changes图标。
  4. 在“Preview”面板中,单击“Records图标。

    请注意,第一个记录将被丢弃,而不会通知发生的错误。

  5. 我们希望保留错误记录,因此请返回“Stage Configuration”选项卡,然后将“On Record Error”改回“Send to Error
Second Expression Evaluator
第二个Expression Evaluator处理数据。让我们尝试编辑预览数据:

  1. 单击“Next Stage图标或选择Expression Evaluator。
  2. 单击“Records图标,然后展开第一个输入和输出记录。

    注意,由阶段创建的字段dropoff_location,pickup_location和trip_revenue用绿色突出显示。

    尽管这些计算不是必需的,但让我们看看如何编辑预览数据以测试平台配置:

  3. 在第一个输入记录的“Input Data”列中,单击Pickup Latitude数据40.730068,在数据之前添加一个负号。按Enter或在数据外部单击。

    如下所示,编辑后的输入数据变为红色表示更改。

  4. 要测试更改,请单击“Run with Changes图标。

    Data Collector运行带变化的预览。请注意,对于pickup_latitude和pickup_location,相应的输出记录现在具有-40.730068。

    当您要测试预览数据中没有出现的某些情况时,您可以看到此功能可能会派上用场。

  5. 要还原该更改,请单击“Revert Data Changes图标: 

    此图标将更改还原为预览数据。

    注意:“Revert Data Changes”不会将更改还原到阶段或管道配置。像我们在本教程前面所做的那样,手动还原您不想保留的配置更改。

探索完预览数据后,点击关闭预览

写入Trash

为了结束扩展教程,我们将Trash目标端用作临时占位符。

Trash目标端将删除传递给它的所有记录。这使您无需将数据写入生产系统即可测试管道。

如果愿意,可以像本教程前面所述的那样,使用Local FS目标端写入文件,也可以使用另一个目标端写入可用的开发目标系统。

Trash目标端不需要任何配置,因此只需将其添加到画布,然后将Expression Evaluator连接到它即可:

运行扩展管道

现在扩展的管道已完成,让我们重置源端并再次运行管道。

当您希望Data Collector处理所有可用数据,而不是处理最后保存的偏移量中的数据时,请重置源端。并非所有源端都可以重置,但是您可以重置Directory源。

  1. 在用户界面菜单栏中,单击“More”图标:。然后,点击“Reset Origin”
  2. 显示确认对话框时,单击“Yes,然后关闭对话框。
  3. 要启动管道,请单击“Start图标。
Data Collector进入监控模式,然后再次触发数据警报。不久之后,您将在Jython Evaluator和Field Type Converter中看到一些错误记录。

对于每个阶段,您可以查看最新错误记录的错误消息。

要查看所有错误记录,可以查看指定目录中的错误记录文件。错误记录以SDC Record数据格式编写,因此您可以创建错误管道来处理错误记录。在以后的教程中,我们将向您展示如何创建错误管道以处理这些错误记录。

本教程到此结束。希望对您有所帮助!