arrow_back

使用 Cloud Dataprep 创建数据转换流水线

登录 加入
欢迎加入我们的社区,一起测试和分享您的知识!
done
学习 700 多个动手实验和课程并获得相关技能徽章

使用 Cloud Dataprep 创建数据转换流水线

实验 1 小时 15 分钟 universal_currency_alt 5 个积分 show_chart 中级
info 此实验可能会提供 AI 工具来支持您学习。
欢迎加入我们的社区,一起测试和分享您的知识!
done
学习 700 多个动手实验和课程并获得相关技能徽章

本实验由 Google 与我们的合作伙伴 Alteryx 共同开发。如果您在账号个人资料中选择接收产品动态、通知和优惠信息,那么您的个人信息可能会分享给实验赞助商 Alteryx。

GSP430

Google Cloud 自定进度实验

概览

Dataprep by Trifacta 是一项智能数据服务,可以让您直观地探索、清理和准备结构化数据和非结构化数据,以进行分析。在本实验中,您将探索如何利用 Dataprep 界面 (UI) 构建将结果输出到 BigQuery 的数据转换流水线。

本实验将使用一个电子商务数据集,其中包含 Google Merchandise Store 的上百万条 Google Analytics 会话记录,这些记录已加载到 BigQuery 中。在本实验中,您将探索可用字段和行,并准备供分析使用的数据。

您将执行的操作

在本实验中,您将学习如何执行以下任务:

  • 将 BigQuery 数据集连接到 Dataprep
  • 使用 Dataprep 探索数据集质量
  • 使用 Dataprep 创建数据转换流水线
  • 运行转换作业并将输出发送至 BigQuery

设置和要求

注意:要运行此实验,您需要使用 Google Chrome。Dataprep 目前不支持其他浏览器。

在尝试本实验之前,建议您先完成在 Google Cloud 上使用 Cloud Dataprep 实验。

点击“开始实验”按钮前的注意事项

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。

此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。我们会为您提供新的临时凭据,让您可以在实验规定的时间内用来登录和访问 Google Cloud。

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
  • 完成实验的时间 - 请注意,实验开始后无法暂停。
注意:如果您已有自己的个人 Google Cloud 账号或项目,请不要在此实验中使用,以避免您的账号产生额外的费用。

如何开始实验并登录 Google Cloud 控制台

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧是实验详细信息面板,其中包含以下各项:

    • 打开 Google Cloud 控制台按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。

    该实验会启动资源并打开另一个标签页,显示登录页面。

    提示:请将这些标签页安排在不同的窗口中,并将它们并排显示。

    注意:如果您看见选择账号对话框,请点击使用其他账号
  3. 如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。

    {{{user_0.username | "<用户名>"}}}

    您也可以在实验详细信息面板中找到用户名

  4. 点击下一步

  5. 复制下面的密码,然后将其粘贴到欢迎对话框中。

    {{{user_0.password | "<密码>"}}}

    您也可以在实验详细信息面板中找到密码

  6. 点击下一步

    重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本次实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
  7. 继续在后续页面中点击以完成相应操作:

    • 接受条款及条件。
    • 由于该账号为临时账号,请勿添加账号恢复选项或双重验证。
    • 请勿注册免费试用。

片刻之后,系统会在此标签页中打开 Google Cloud 控制台。

注意:如需查看列有 Google Cloud 产品和服务的菜单,请点击左上角的导航菜单导航菜单图标

任务 1. 在 Google Cloud 控制台中打开 Dataprep

  1. 打开 Cloud Shell 并运行以下命令:
gcloud beta services identity create --service=dataprep.googleapis.com

您应该会看到指出已创建服务身份的消息。

  1. 在 Cloud 控制台中,找到导航菜单,选择分析下的 Dataprep

  2. 要进入 Dataprep,请确认您已同意 Google Dataprep 服务条款,然后点击接受

  3. 点击相应复选框,当系统提示您将与 Alteryx 分享账号信息时,点击同意并继续

  4. 点击允许以授予 Alteryx 对您项目的访问权限。

  5. 选择您的 Qwiklabs 凭据进行登录,然后点击允许

  6. 选中相应复选框,然后点击接受以同意 Alteryx 服务条款。

  7. 当系统提示您将使用存储桶的默认位置时,点击继续

任务 2. 创建 BigQuery 数据集

本实验主要用到的是 Cloud Dataprep,不过您需要将 BigQuery 作为将数据集注入流水线的端点,以及流水线完成后的输出目标。

数据传输流水线

  1. 在 Cloud 控制台中,选择导航菜单 > BigQuery

  2. 您会看到欢迎在 Cloud 控制台中使用 BigQuery 消息框,其中会显示快速入门指南的链接以及界面更新。

  3. 点击完成

  4. 探索器窗格中,选择您的项目名称:

“探索器”窗格

  1. 在左侧窗格的探索器部分,点击您项目 ID 右侧的查看操作图标 (“查看操作”图标),然后点击创建数据集
  • 对于数据集 ID,输入 ecommerce
  • 将其他值保留为默认值。
  1. 点击创建数据集。现在,左侧窗格中您的项目下会显示您的数据集。

  2. 复制以下 SQL 查询并粘贴到查询编辑器中:

#standardSQL CREATE OR REPLACE TABLE ecommerce.all_sessions_raw_dataprep OPTIONS( description="Raw data from analyst team to ingest into Cloud Dataprep" ) AS SELECT * FROM `data-to-insights.ecommerce.all_sessions_raw` WHERE date = '20170801'; # limiting to one day of data 56k rows for this lab
  1. 点击运行。此查询会将公共原始电子商务数据集的一个子集(一天的会话数据,约有 56,000 条记录)复制到名为 all_sessions_raw_dataprep 的一个新表中,该表已添加到您的电子商务数据集中,以便您在 Cloud Dataprep 中探索和清理。

  2. 确认该新表存在于您的 ecommerce 数据集中。

任务 3. 将 BigQuery 数据连接到 Cloud Dataprep

在此任务中,您需要将 Cloud Dataprep 连接到您的 BigQuery 数据源。在 Cloud Dataprep 页面上:

  1. 点击右上角的 Create a flow(创建流)。

  2. Untitled Flow(未命名的流)重命名,并指定以下详细信息:

  • 对于 Flow Name(流名称),输入 Ecommerce Analytics Pipeline
  • 对于 Flow Description(流说明),输入 Revenue reporting table
  1. 点击 Ok(确定)。

  2. 如果弹出提示 What's a flow?(什么是流?),选择Don't show me any helpers(不再显示任何帮助信息)。

  3. 点击“Dataset”(数据集)框中的 Add(添加)图标。

突出显示的“添加”图标

  1. Add Datasets to Flow(将数据集添加到流)对话框中,选择 Import Datasets(导入数据集)。

  2. 在左侧窗格中,点击 BigQuery

  3. 您的 ecommerce 数据集加载完毕后,点击该数据集。

突出显示的 ecommerce 数据集

  1. 点击 all_sessions_raw_dataprep 表左侧的 Create dataset(创建数据集)图标(“+”号)。

  2. 点击右下角的 Import & Add to Flow(导入并添加到流)。

数据源会自动更新。现在,您就可以开始执行下一个任务了。

任务 4. 使用界面探索电子商务数据字段

在此任务中,您将在 Cloud Dataprep 中加载并探索一个数据集样本。

  • 点击 Recipe(配方)图标,然后选择 Edit Recipe(修改配方)。

突出显示的“Recipe”(配方)图标和“Edit Recipe”(修改配方)按钮

Cloud Dataprep 会将数据集样本加载到 Transformer 视图中。此过程可能需要几秒钟的时间。现在,您就可以开始探索数据了!

请回答以下问题:

  • 数据集中有多少列?

数据集

答案:32 列。

  • 样本包含多少行?

数据集

答案:约 12,000 行。

  • channelGrouping 列中最常见的值是什么?
提示:将鼠标光标悬停在 channelGrouping 列标题下的直方图上即可找到答案。

channelGrouping 列

答案:Referral。引荐网站通常是指包含指向您内容的链接的任何其他网站。比如,评论了我们电子商务网站上的某件商品并关联到该商品的另一个网站就是一个引荐网站。相对于来自搜索引擎的访问者,这被视为另一种流量获取渠道。

注意:如要查找特定列,请点击右上角的 Find column(查找列)图标 (“Find column”(查找列)图标),并在 Find column(查找列)文本字段中输入要查找的列名称,然后点击该列名称。这会使网格自动滚动,在屏幕上显示您要查找的列。
  • 发起会话最多的是哪三个国家/地区?

“Country”(国家/地区)数据集

答案:美国、印度、英国

  • totalTransactionRevenue 下的灰色条代表什么?

totalTransactionRevenue 条

答案totalTransactionRevenue 字段缺少值。这意味着此样本中的很多会话都没有产生收入。稍后,我们将滤除这些值,让最终的表仅包含客户交易和相关收入。

  • 该数据样本的最大 timeOnSite(以秒为单位)、最大 pageviews 和最大 sessionQualityDim 分别是多少?(提示:点击 timeOnSite 列右侧的 下拉菜单箭头 打开该菜单,然后点击 Column Details(列详细信息)菜单)

“网站停留时间”和“最大网页浏览量”数据集

timeOnSite 的“Overview”(概览)标签页

要关闭详细信息窗口,请点击右上角的关闭列详细信息 (X) 按钮。然后重复上述过程,以查看 pageviewssessionQualityDim 列的详细信息。

“关闭”按钮

答案

  • 最长网站停留时间:5,561 秒(或 92 分钟)
  • 最大网页浏览量:155 页
  • 最大会话质量维度:97
注意:您回答的最大值可能会略有不同,具体取决于 Cloud Dataprep 使用的数据样本。 关于计算平均值的注意事项:在执行聚合(如计算一列数据的平均值)时需格外小心。首先需要确保的是,对于诸如 timeOnSite 这样的字段,在每个会话中只会统计一次。在后面的实验中,我们将探索访问者数据和会话数据的唯一性。
  • 查看 sessionQualityDim 的直方图,其中的数据值是均匀分布的吗?

sessionQualityDim 直方图

答案:不是。它们偏向较低的值(低质量会话),这是正常的。

  • 数据集的日期范围是什么?提示:查看 date(日期)字段

答案:2017 年 8 月 1 日(一天的数据)

  • 您可能会在 productSKU 列下看到一个红色条。如果看到了这个红色条,那么它可能代表什么?

productSKU 列

答案:红色条表示存在不匹配的值。在对数据进行采样时,Cloud Dataprep 会尝试自动识别每个列的类型。如果您没有看到 productSKU 列的红色条,则表明 Cloud Dataprep 正确识别了该列的类型(即“字符串”类型)。如果您看到了这个红色条,则表明 Cloud Dataprep 在采样过程中发现了足够多的数字值,从而错误地判断该类型应该是整数值。Cloud Dataprep 还检测到了一些非整数值,因此将这些值标记为不匹配。事实上,productSKU 并不一定是整数值(例如,正确的值可能是“GGOEGOCD078399”)。所以在这种情况下,Cloud Dataprep 错误地识别了列类型。列类型应为“字符串”,而非“整数值”。稍后,您将在本实验中修复此错误。

  • 查看 v2ProductName 列,最热门的商品是什么?

v2ProductName 列

答案:Nest 产品

  • 查看 v2ProductCategory 列,最热门的商品类别有哪些?

v2ProductCategory 列

答案

最热门的商品类别是:

  • Nest

  • Bags

  • (not set)(表示部分会话没有关联的类别)

  • 判断正误。最常见的 productVariantCOLOR

答案:错误。正确答案是 (not set),因为大部分商品都没有变体(80% 以上)

  • type(类型)列中的两个值分别是什么?

答案PAGEEVENT

用户在浏览您的网站时可能会进行多种不同类型的互动。其中包括在查看某个页面 (PAGE) 或完成点击某件商品等特殊事件 (EVENT) 时记录会话数据以及其他互动类型。多种命中类型可能会在完全相同的时间触发,因此您通常需要对类型进行过滤以免重复统计。我们将在稍后的分析实验中进一步探索此话题。

  • 最大 productQuantity 是多少?

答案:100(您的答案可能会有所不同)

productQuantity 表示添加到购物车的某个商品的数量。“100”表示添加的单个商品的件数为 100。

  • 交易的主要 currencyCode 是什么?

答案USD(美元)

  • itemQuantityitemRevenue 存在有效值吗?

答案:不存在。它们都是 NULL 值(缺失值)。

注意:经过探索后,您可能会在某些数据集中发现重复列或已弃用的列。为避免给使用我们报告的用户造成混淆,在本实验的后面部分,我们将改用“productQuantity”和“productRevenue”字段,并删除“itemQuantity”和“itemRevenue”字段。
  • transactionId 值中的有效值所占百分比是多少?这对我们的 ecommerce 数据集意味着什么?

transactionId 的”Overview“(概览)页

  • 答案:约有 4.6% 的交易 ID 具有有效值,这代表了网站的平均转化率(4.6% 的访问者进行了交易)。
  • eCommerceAction_type 值有多少个?最常见的值是什么?
提示:统计直方图列的不同数字。

eCommerceAction_type 值

答案:我们的样本中有 7 个值。最常见的值是零 0,表示类型未知。这是合理的,因为我们网站上发生的大多数网络会话都未执行任何电子商务操作,只是进行了浏览。

  • 根据架构eCommerceAction_type = 6 代表什么?
提示:搜索 eCommerceAction 类型并查看相关映射说明

答案:“6”映射到“已完成购买”。在本实验的后面部分,我们会在数据流水线中注入此映射。

commerceAction.action_type 字符串

任务 5. 清理数据

在此任务中,您将通过删除未使用的列、消除重复项、创建计算字段和滤除不需要的行来清理数据。

转换 productSKU 列的数据类型

  1. 为确保 productSKU 列的类型为字符串数据类型,请点击 productSKU 列右侧的 下拉菜单箭头 打开该菜单,然后点击 Change type > String(更改类型 > 字符串)。

productSKU > Change type(更改类型)> String(字符串)

  1. 点击 Recipe(配方)图标,验证数据转换流水线中的第一步已创建完成:

“Recipe”(配方)图标

注意:如果配方显示为锁定状态,请选择该配方,点击修改图标,然后取消选中用于锁定列类型的选项。

删除未使用的列

前面提到过,我们将删除 itemQuantityitemRevenue 列,因为它们只包含 NULL 值,对于此实验没有用处。

  1. 打开 itemQuantity 列的菜单,然后点击 Delete(删除)。

突出显示的 itemQuantity 列和“Delete”(删除)菜单选项

  1. 重复上述过程删除 itemRevenue 列。

移除重复的行

您的团队通知您,源数据集中可能包含重复的会话值。我们将通过新的去重步骤来移除这些值。

  1. 点击工具栏中的 Filter rows(过滤行)图标,然后点击 Remove duplicate rows(移除重复的行)。

突出显示的“Filter rows”(过滤行)下拉菜单和“Remove duplicate rows”(移除重复的行)选项

  1. 点击右侧面板中的 Add(添加)。

  2. 检查您目前为止创建的配方,其内容应如下所示:

包含四个步骤的配方

滤除没有产生收入的会话

您的团队要求您创建一个表,在其中包含从该网站至少购买了一件商品的所有用户会话。您需要滤除收入为 NULL 值的用户会话。

  1. totalTransactionRevenue 列下,点击灰色的缺失值条。现在,totalTransactionRevenue 列缺失了值的所有行都以红色突出显示。
  2. Suggestions(建议)面板中的 Delete rows(删除行)中,点击 Add(添加)。

“Suggestions”(建议)面板

此步骤将过滤您的数据集,以仅包含产生收入的交易(即 totalTransactionRevenue 不为 NULL)。

过滤网页浏览量会话

该数据集包含了不同类型的会话,例如 PAGE(表示网页浏览量)或 EVENT(表示触发的事件,如“查看了商品类别”或“添加到购物车”)。为避免重复统计会话中的网页浏览量,请添加一个过滤器,以仅包含与网页浏览量相关的命中。

  1. 在直方图中的 type(类型)列下,点击 PAGE 条。现在,类型为 PAGE 的所有行都以绿色突出显示。

  2. Suggestions(建议)面板中的 Keep rows(保留行)中,点击 Add(添加)。

任务 6. 丰富数据

架构文档中搜索 visitId 并阅读相关说明,以确定该 ID 是在所有用户会话中具有唯一性,还是仅对相应用户具有唯一性。

  • visitId:此会话的标识符。它是通常存储为 utmb Cookie 的值的一部分,仅对相应用户具有唯一性。要获得完全唯一的 ID,应将 fullVisitorId 与 visitId 结合使用。

可以看到,visitId 在用户中不是唯一的。我们需要创建一个唯一标识符。

创建一个记录唯一会话 ID 的新列

您已经注意到了,该数据集没有记录唯一身份访问者会话的单个列。通过串联 fullVisitorIdvisitId 字段,为每个会话创建唯一 ID。

  1. 点击工具栏中的 Merge columns(合并列)图标。

“Merge columns”(合并列)图标

  1. 对于 Columns(列),选择 fullVisitorIdvisitId

  2. 对于 Separator(分隔符),输入一个连字符:-

  3. 对于 New column name(新列名),输入 unique_session_id

“Merge columns”(合并列)面板

  1. 点击 Add(添加)。

unique_session_id 现在由 fullVisitorIdvisitId 组合而成。在后面的实验中,我们将探索此数据集中的每一行是处于唯一会话级别(一行对应一个用户会话),还是更精细的级别。

为电子商务操作类型创建 Case 语句

正如您之前看到的,eCommerceAction_type 列中的值是整数,这些整数映射到该会话中执行的实际电子商务操作。例如,3 =“添加到购物车”或 5 =“结账”。这种映射对最终用户而言不太直观,因此我们来创建一个计算字段提取这些值的名称。

  1. 点击工具栏中的 Conditions(条件),然后点击 Case on single column(针对单个列的 Case 语句)。

突出显示的“Conditions”(条件)下拉菜单和“Case on single column”(针对单个列的 Case 语句)选项

  1. 对于 Column to evaluate(要评估的列),指定 eCommerceAction_type

  2. Case (1) 旁边点击 Add(添加)8 次,总共添加 9 个 Case 语句。

“Conditions”(条件)部分

  1. 对于每个 Case 语句,指定以下映射值(包含单引号字符):

Comparison(比较)

New value(新值)

0

'Unknown'

1

'Click through of product lists'

2

'Product detail views'

3

'Add product(s) to cart'

4

'Remove product(s) from cart'

5

'Check out'

6

'Completed purchase'

7

'Refund of purchase'

8

'Checkout options'

“Condition”(条件)面板,显示被评估列的预览画面,其中 eCommerceAction_type 列已评估

  1. New column name(新列名)部分,输入 eCommerceAction_label。将其他字段保留默认值。

  2. 点击 Add(添加)。

调整 totalTransactionRevenue 列中的值

架构文档中所述,totalTransactionRevenue 列包含的是传递给 Analytics 的值乘以 10^6 之后得出的值(例如,2.40 将表示为 2400000)。现在,您需要将该列的内容除以 10^6,以获得原始值。

  1. 点击 totalTransactionRevenue 列右侧的 下拉菜单箭头 打开该菜单,然后选择 Calculate(计算)> Custom formula(自定义公式)。

突出显示的“Custom formula”(自定义公式)

  1. 对于 Formula(公式),输入 DIVIDE(totalTransactionRevenue,1000000),对于 New column name(新列名),输入 totalTransactionRevenue1。留意看此转换的预览:

预览

  1. 点击 Add(添加)。
注意:您可能会在 totalTransactionRevenue1 列下看到一个红色条。点击 totalTransactionRevenue1 列右侧的 93c14cbf1f70a561.png 打开该菜单,然后点击 Change type > Decimal(更改类型 > 小数)。
  1. 检查配方中的完整步骤列表:

完整配方

  1. 现在点击 Run(运行)。

任务 7. 运行 Cloud Dataprep 作业以将数据输出到 BigQuery

  1. Run Job(运行作业)页面,对于 Running Environment(运行环境),选择 Dataflow + BigQuery

  2. Publishing Actions(发布操作)下,点击 Create-CSV(创建 CSV)右侧的 Edit(修改)。

  3. 在随即显示的页面中,选择左侧菜单中的 BigQuery

  4. 选择您的 ecommerce 数据集。

  5. 点击右侧面板中的 Create a New Table(创建新表)。

  6. 将该表命名为 revenue_reporting

  7. 选择 Drop the Table every run(每次运行时删除表)。

  8. 点击 Update(更新)。

  9. 点击 RUN(运行)。

Cloud Dataprep 作业完成后,刷新 BigQuery 页面,确认输出表 revenue_reporting 存在。

注意: 如果该作业失败,请尝试等待一段时间,然后点击浏览器上的返回按钮,并使用相同设置重新运行该作业。

点击检查我的进度以验证是否完成了以下目标: 验证 Cloud Dataprep 作业是否已将数据输出到 BigQuery

恭喜!

您成功探索了电子商务数据集,并使用 Cloud Dataprep 创建了一个数据转换流水线。

后续步骤/了解详情

Google Cloud 培训和认证

…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。

上次更新手册的时间:2024 年 2 月 11 日

上次测试实验的时间:2023 年 9 月 20 日

版权所有 2024 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您