跳到主要内容

DataOps博客

欢迎改变的地方

变压器的雪花

By 张贴在 工程 2021年6月29日

电子游戏厅 DataOps平台提供了一个端到端的企业解决方案,以最大化您的雪花数据云的价值. 该平台可以将数据摄取到雪花(使用批处理、流处理和更改数据捕获) 数据管道). Snowpark的电子游戏厅引擎预览, 电子游戏网址大全很高兴能提供一种新的整合方式 电子游戏厅与雪花 以在雪花中运行复杂的转换.

变压器的雪花

雪花的电子游戏厅引擎被集成到Snowpark中,以实现Snowpark的多语言支持的表现力和灵活性, 以及通常仅限于SQL的数据云操作的简单性.

Snowpark为数据工程师提供了便利, 数据科学家, 以及开发人员使用Scala之类的语言编写代码, Java和Python来利用雪花强大的平台. 而不是从雪花中提取数据来运行复杂的转换, 数据工程师和ETL开发人员可以使用SQL以外的语言编写代码.

在这篇博客, 电子游戏网址大全将回顾如何使用用Java编写的内联或插入udf,然后在即将到来的Snowpark的电子游戏厅引擎的数据管道中利用它们来直接在雪花上执行转换.

除了udf,电子游戏网址大全还将研究如何使用Snowpark的电子游戏厅引擎跨几个表执行雪花中的ETL工作负载.

Snowpark中的用户定义函数

数据工程师和开发人员可以使用他们选择的ide和工具来编写可以绑定和使用的用户定义函数(User Defined function, udf), 雪园把所有这些操作都直接推给了雪花.

一些有利于加载udf的场景和用例包括:

  1. 为评分加载训练模型
  2. 扫描列值的异常和PII
  3. 跨数据团队成员为开发人员部署公共(Java)库

内联UDF

在这个例子中, Snowpark数据管道的电子游戏厅 Engine设计用于从雪花中的表中读取推特数据, 执行一些转换,如删除重复的tweet和使用内联UDF“加密”tweet,并将它们存储在雪花的一个新表中.

内联UDF由一个Java类和一个静态方法组成,该方法接受一个字符串作为参数,并按相反的顺序返回相同的字符串,如下所示.

导入java.跑龙套.Array列表;
导入java.跑龙套.数组;
导入java.跑龙套.列表;

公共类SimpleEncrypt {

  String (String s) {
    返回新StringBuilder(年代).反向().toString ();
  }

}

可以将该UDF放入数据管道中,如下所示. 

电子游戏厅 Engine For Snowpark

和UDF reverse_string 然后可以从SQL调用来执行如下所示的转换.

从$表中选择ID, 用户, reverse_string(推特)作为encrypted_tweet

电子游戏厅 Engine For Snowpark

运行这个数据管道会导致在雪花上自动创建这个表, 如果它还不存在, 以及按照上面描述的SQL查询插入到其中的数据.

查看Transformer的雪花日志还可以看到,在雪花中自动创建或替换并注册了内联UDF.

为Snowpark 电子游戏厅

创建或替换函数reverse_string
返回VARCHAR
java语言
在空输入时调用
处理程序= ' EncryptString.encrypt_string”
target_path = ' @ ~ / CXtSzaVPFLaH.罐子的
as
$$
导入java.跑龙套.Array列表;
导入java.跑龙套.数组;
导入java.跑龙套.列表;

EncryptString {

publicstaticstring (String s) {
返回新StringBuilder(年代).反向().toString ();
}

}
$$;

JAR中的udf

现在让电子游戏网址大全来看另一个示例,在这个示例中,电子游戏网址大全没有内联地编写UDF代码,而是包含一个包含一个或多个(静态)方法的JAR文件,这些方法可以作为数据管道中的函数调用.

变压器的雪花中的这个数据管道设计用于从雪花中的表中读取推特数据, 执行诸如删除重复tweet之类的转换, 得分tweet (1 =正,-1 =负,或0 =中性), “加密”微博, 并根据condition if tweet将tweet记录写入到雪花中的两个不同表中 “分数” != 0 -所有的执行都发生在雪花内部.

Snowpark引擎

管道被配置为使用和调用来自同一个JAR的两个函数,如上所示, 但您只是轻松地从不同的jar加载函数. 还要注意,在本例中, 我使用了一个非常简单的逻辑,根据某些“积极的”和/或“消极的”单词的存在来给推文打分, 感谢 用于汇编和提供这些单词的一个大列表, 但你可以想象加载一个训练过的模型 CoreNLP 而是为了得到高级的语言学注释. 更新至2021年10月26日: 我已经更新了我的Java项目 GitHub 并公开了一种新的静态方法 sentiment_analysis ()  使用CoreNLP.

然后udf score_tweetreverse_string 可以在SQL查询中使用,如下所示.

选择ID, 用户, 推特, score_tweet(微博)得分, reverse_string(推特)作为reverse_tweet从$表

Snowpark引擎电子游戏厅

查看Snowpark日志的电子游戏厅引擎也显示了在雪花中自动创建或替换的表.

Snowpark引擎

GitHub上的Java项目示例

如果您想要签出或扩展我在IntelliJ中为这个演示构建的Java项目, 可以在这里找到 GitHub. 更新至2021年10月26日: 我已经更新了我的Java项目 GitHub 并公开了一种新的静态方法 sentiment_analysis ()  使用CoreNLP.

观看雪花演示的电子游戏厅 Transformer

ETL工作负载

除了使用电子游戏厅引擎为Snowpark注册, 绑定和使用udf, 该引擎还用于实现复杂的端到端ETL工作负载. 例如,数据工程师 可以使用引擎在雪花中跨多个表对数据进行反规范化和聚合.

反规范化和聚合

在下面的示例中,数据管道被设计为跨主-详细表进行连接, 订单订单项 分别,还带有外键约束 产品客户 使用多个 加入 处理器. 因为最终的非正规化记录将包括冗余列,比如 CUSTOMER_ID订单 表和 客户 表,例如,a 场剂 处理器被注入到管道中以删除这些列.

Snowpark

还要注意,数据管道可以有多个目的地,如上所示. 这方面的一个很好的例子是对同一管道中读取的相同数据执行不同的转换. 在这种情况下, 它执行聚合,根据来自三个不同表的信息计算每个客户每个订单的总订单量 订单、ORDER_ITEMS 客户.

请注意:如果目标表在雪花上还不存在, 它们是在管道执行期间自动创建的.

查询雪花中的非规范化事务

下面是在雪花中由数据管道生成的非规范化事务.

雪花Snowpark

雪花中的查询订单聚合

下面是数据管道为雪花中的每个订单生成的每个客户的订单聚合.

Snowpark

Summary

有了这个新的集成, 数据工程师可以超越SQL来表达强大的数据管道逻辑 电子游戏厅 DataOps平台. 除了, 用于雪花的Transformer提供了带有内置版本控制的电子游戏厅 DataOps平台的所有优点, 在云中大规模监控和编排复杂的数据管道.

如果你想看现场演示,请联系 trysnowpark@www.customprinting1.com.

回到顶部

电子游戏网址大全使用cookie来改善您对电子游戏网址大全网站的体验. 单击“允许所有人同意”并继续访问电子游戏网址大全的网站. 隐私政策