问题标签 [google-cloud-dataprep]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
235 浏览

google-cloud-platform - DataFlow gcloud CLI - “模板元数据太大”

我已经在 DataPrep 中磨练了我的转换,现在正尝试使用 gcloud CLI 直接运行 DataFlow 作业。

我已经导出了我的模板和模板元数据文件,并尝试使用gcloud dataflow jobs run输入和输出位置作为参数来运行它们。

我收到错误:

我没有在命令行中指定它,所以我知道它是从元数据文件中获取的——它直接来自 DataPrep,未经我编辑。

我有 17 个输入位置 - 一个包含源数据,其他所有位置都是查找。每个都有一个正则表达式,加上一个额外的。

如果它在 DataPrep 提示时正在运行,但不会通过 CLI 运行,我是否遗漏了什么?

0 投票
1 回答
553 浏览

google-bigquery - Google DataPrep 非常慢

在 Google Dataflow 中,我的工作基本上是这样的:

数据集:100 行,1 列。
配方:0 步骤
输出:新表。

但是运行需要6-8分钟。可能是什么问题?

0 投票
1 回答
3343 浏览

google-cloud-platform - 使用 gcloud cli 执行具有多个输入/输出的 Dataflow 作业

我在 Dataprep 中设计了一个数据转换,现在正尝试使用 Dataflow 中的模板来运行它。我的流程有几个输入和输出 - 数据流模板将它们作为 json 对象提供,每个输入和位置都有键/值对。它们看起来像这样(为便于阅读添加了换行符):

我有 17 个输入(主要是查找)和 2 个输出(一个 csv,一个 bigquery)。我将这些传递给gcloudCLI,如下所示:

但我收到一个错误:

从错误消息来看,它看起来正在合并输入和输出,因此由于我有两个输出,因此每两个输入都与两个输出配对:

我试过引用输入/输出对象(单和双,加上删除对象中的引号)[],用波浪线将它们包裹起来,但没有任何乐趣。有没有人设法执行具有多个输入的数据流作业?

0 投票
2 回答
58 浏览

google-cloud-dataprep - 将云数据准备迁移到其他帐户

我不得不将我的个人帐户迁移到不同的电子邮件提供商,新帐户是整个 GC 项目的组织管理员。

我在我的帐户中看不到任何 dataprep 流,但我仍然可以访问旧帐户中的所有流,是否有一种快速的方法来授予对其他帐户的访问权限或一次迁移所有作业?

0 投票
1 回答
1846 浏览

google-cloud-platform - 按最新日期过滤 BigQuery 行的最有效方法

我目前正在开发一个 ETL 管道,该管道使用 BigQuery 存储暂存数据,然后使用 Dataprep 转换数据并将其存储在新的 BigQuery 表中以用于生产。

我们一直在寻找最经济有效的方法来对一小部分数据应用这些转换时遇到问题,通常只有从暂存数据表中当前最大日期开始的最后 X 天。例如,我们需要计算暂存数据中的最大可用日期,然后检索从该日期开始的过去 3 天内的所有行。不幸的是,我们不能依赖临时数据中的“最大日期”始终是最新的(这些数据是从质量和可靠性不同的第三方 API 引入的)。

起初,我尝试通过获取最大日期直接在 Dataprep 中应用这些转换,使用 DATEDIFF 创建一个比较列,然后丢弃比该“最大日期”早 3 天以上的行。事实证明,这在成本方面非常耗时且效率低下。

接下来我们尝试过滤 BigQuery 视图中的数据,然后将其用作 Dataprep 流的初始数据集(数据将在 Dataprep 应用任何转换之前进行预过滤)。我们首先尝试在 BigQuery 中动态执行此操作,如下所示:

但是在预览查询的 GB/估计成本时,它似乎非常低效且昂贵。

我们尝试的下一件事是对日期进行硬编码,由于某种原因,这更便宜/更快:

所以我们目前的计划是为每个表维护一个视图,并在每次暂存数据成功完成时通过 Python SDK 更新视图 SQL 中的硬编码日期(https://cloud.google.com/bigquery/docs/managing - 意见)。

感觉就像我们可能会错过一个更简单/更有效的解决方案来解决这个问题。所以我想问:

  • 在 Dataprep 或 BigQuery 中按日期执行此初始过滤是否更具成本效益?
  • 过滤所选产品中数据的最具成本效益的方法是什么?
0 投票
1 回答
276 浏览

google-cloud-platform - 谷歌云数据准备 - 如何创建列的哈希

任何人都可以指向 Cloud Dataprep 中的开箱即用或自定义实现来创建另一列的哈希,例如 bigquery 具有 FARM_FINGERPRINT。

0 投票
1 回答
335 浏览

google-cloud-dataprep - google dataprep(trifacta 的 clouddataprep)提示:如果作业太大,将无法运行

在我的云数据准备冒险中,我遇到了另一个非常烦人的错误。

当创建需要通过参考数据集连接的复杂流结构时会出现问题。如果在执行多个联合或与这些集合的连接时超过了某个限制,数据流将无法启动作业。

我与支持部门有很多联系,他们正在解决这个问题:

“我们的系统工程师团队能够确定导致工作失败的根本原因。他们提到工作太大。这意味着配方(从所有数据集组合)太大,Dataflow 拒绝它。我们的工程团队仍在研究解决此问题的方法。

一种解决方法是将作业拆分为两个较小的作业。首先运行用于数据丰富的流,然后将输出用作另一个流中的输入。虽然这并不理想,但这暂时是一个可行的解决方案。”

0 投票
1 回答
146 浏览

google-cloud-platform - GCP 数据前向和后向填充

我有下表,我试图在 GCP 数据准备中争吵:

我正在尝试以某种方式对其进行转换,如果 Event 为 1,则 Event 中的前 3 个条目设置为 1,Event 中的下 2 个条目设置为 2。

因此,基本上数据集在转换后将如下所示

我曾尝试使用窗口和条件来实现这一点,但没有成功。关于如何实现这种转变的任何想法?如果可以帮助实现此结果,我愿意拆分列或创建新的派生列。谢谢!

0 投票
1 回答
739 浏览

google-cloud-platform - 使用 Dataprep 仅写入日期分区表中的日期分区

我正在使用 BigQuery 视图从 BigQuery 表中获取昨天的数据,然后尝试使用 Dataprep 写入日期分区表。

我的第一个问题是 Dataprep 不会正确选择DATE类型列,而是将它们转换为TIMESTAMP工作(感谢 Elliot)。

但是,在使用 Dataprep 并设置输出 BigQuery 表时,您只有 3 个选项:AppendTruncate现有Drop表。如果表是日期分区的并且您使用Truncate它将删除所有现有数据,而不仅仅是该分区中的数据。

我应该使用另一种方法吗?我的替代方法是使用 Dataprep 覆盖表,然后使用 Cloud Composer 运行一些 SQL 将这些数据推送到日期分区表中。理想情况下,我只想用 Dataprep 来做这件事,但现在这似乎不可能。

BigQuery 表架构:

在此处输入图像描述

分区详情:

在此处输入图像描述

我正在摄取的数据很简单。在一个流程中:

在另一个流程中:

它在这两种情况下都会覆盖数据。

0 投票
1 回答
413 浏览

python-2.7 - Apache Beam Python 语法

所以,我刚刚开始使用 Apache Beam。我计划在 GCP 中运行 DataFlow 作业,我最初使用 DataPrep 运行它们,但我很快就超出了它的功能。警告,我已经用 Python 2/3 编程 2 年了,所以我想我已经从新手变成了业余爱好者,只是为了你的意识。所以这是我的问题,我在 IDE 中成功编写了一些 AB 代码(2.6 版)。但我无法得到任何实际工作。也就是说,即使在将 csv 文件读入 PCollection 之后,我也看不到它起作用了。也就是说,它只是说“PCollection Object at 0xf3a6 ...”

所以我在狂热的谷歌搜索时看到了另一个人的帖子,他们说你应该使用“with”语句,以便 Python 自动打开和关闭管道?所以,一旦我这样做了,我至少能够将我刚刚读入的输出写入文件以查看发生了什么。所以,首先,我发现我之前编写的 SAME 代码在我将其放入 with 语句之前没有做任何事情真的很奇怪......这是怎么回事?我是否需要在 with 语句中为管道做所有事情?而其他的定义只是普通的 Python 东西?这是代码: