国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

使用基于Snowflake的Snowpark DataFrames進行數據處理

譯文
數據庫 SQL Server
Snowpark是Snowflake一個新的開發庫,它提供了一個API讓用戶可以使用Scala(后續也會有Java和Python)等編程語言來代替SQL進行數據處理。

簡介

Snowpark是Snowflake一個新的開發庫,它提供了一個API讓用戶可以使用編程語言像Scala(后續也會有Java和Python)來代替SQL進行數據處理。

Snowpark的核心概念是DataFrame(數據框),它表示一組數據,就比如說一些數據庫表的行,我們可以用最喜歡的工具通過面向對象或者函數式編程的方式處理。Snowpark DataFrames的概念類似于Apache Spark或者Python中Pandas包的DataFrames的含義,是一種表格型的數據結構。

開發者也可以創建自定義函數推送到Snowflake服務器,來更方便地處理數據。Snowpark的代碼執行采用了惰性計算的方式,這減少了從Snowpark倉庫到客戶端之間的數據流轉。

當前版本的Snowpark可以運行在Scala 2.12和JDK 8、9、10或11上。它現在處于公開預覽階段,可用于所有賬戶。

架構特點

從架構的角度來看,Snowpark客戶端類似于Apache Spark Driver程序。它執行用戶在客戶端編寫的代碼并轉為SQL語句推送給Snowpark數據倉庫,等Snowpark計算服務端處理完數據后,接收以DataFrame格式組成的返回結果。

廣義的說,Snowpark數據倉庫的操作可以分為兩類:轉換和執行。由于轉換是延遲執行的,因此它們不會觸發DataFrames數據的計算處理過程。像select(查詢),filter(過濾),sort(排序),groupBy(分組)等等都屬于轉換范疇的操作。而執行是正好相反的,它們會觸發對DataFrames數據的計算。Snowpark將針對DataFrame數據的SQL語句發送到服務端進行計算,然后將結果返回給客戶端內存。show,collect,take等都屬于執行操作。

Snowpark執行

在我們可以執行任何Snowpark轉換和執行之前,我們需要先連接到Snowpark數據倉庫并建立會話。

Scala
object Main {
def main(args: Array[String]): Unit = {
// Replace the <placeholders> below.
val configs = Map (
"URL" -> "https://<SNOWFLAKE-INSTANCE>.snowflakecomputing.com:443",
"USER" -> "<USERNAME>",
"PASSWORD" -> "<PASSWORD>",
"ROLE" -> "SYSADMIN",
"WAREHOUSE" -> "SALESFORCE_ACCOUNT",
"DB" -> "SALESFORCE_DB",
"SCHEMA" -> "SALESFORCE"
)
val session = Session.builder.configs(configs).create
session.sql("show tables").show()
}
}


從Snowpark管理頁面上看,我們有一個SALESFORCE_DB數據庫和一個有3個表的SALESFORCE:SALESFORCE_ACCOUNT表表示來自Salesforce實例的賬戶,SALESFORCE_ORDER表存儲由這些賬戶發起的訂單,SALESFORCE_ACCOUNT_ORDER是一個關聯表,存儲關聯的查詢結果(我們在這篇文章的后面會再論述這點)。

要檢索Salesforce_Account表的前10行,我們可以簡單地執行以下DataFrame方法:

Scala

 // Create a DataFrame from the data in the "salesforce_account" table.
val dfAccount = session.table("salesforce_account")
// To print out the first 10 rows, call:
     dfAccount.show()


Snowpark會把代碼轉換成SQL語句并交給Snowflake執行:

Scala

[main] INFO com.snowflake.snowpark.internal.ServerConnection - Execute query [queryID: XXXX]  SELECT  *  FROM ( SELECT  *  FROM (salesforce_account)) LIMIT 10

在我們的VSCode IDE中的輸出看起來像這樣:

我們也可以過濾某些行并執行DataFrame的轉換(例如,選擇指定的列):

Scala

    val dfFilter = session.table("salesforce_account").filter(col("type") === "Customer - Direct")
dfFilter.show()
val dfSelect = session.table("salesforce_account").select(col("accountname"), col("phone"))
     dfSelect.show()

Snowpark將生成相應的SQL查詢,并將它們交給Snowflake計算服務器執行:

[main] INFO com.snowflake.snowpark.internal.ServerConnection - Execute query [queryID: XXXX]  SELECT  *  FROM ( SELECT  *  FROM ( SELECT  *  FROM (salesforce_account)) WHERE ("TYPE" = 'Customer - Direct')) LIMIT 10

 [main] INFO com.snowflake.snowpark.internal.ServerConnection - Execute query [queryID: XXXX]  SELECT  *  FROM ( SELECT "ACCOUNTNAME", "PHONE" FROM ( SELECT  *  FROM (salesforce_account))) LIMIT 10

下面是在VSCode中的輸出:

Snowpark DataFrame API也允許DataFrames數據間的拼接關聯。在這個例子中,我們有SALESFORCE_ORDER表,記錄了由Salesforce賬戶產生的賬單數據,我們可以將這些數據拉到DataFrame中,并將它們與賬戶記錄連接起來:

Scala

    val dfOrder = session.table("salesforce_order")
dfOrder.show()
val dfJoin = dfAccount.join(dfOrder, col("sfdcid") === col("accountid")).select(col("accountname"), col("phone"),col("productname"), col("amount"))
dfJoin.show()

Snowflake把DataFrame方法轉換為SQL語句,然后推送給Snowflake數據倉庫進行計算。在VSCode中輸出如下:

如果我們想持久化保存計算結果,可以使用saveAsTable這個方法:

Scala

 dfJoin.write.mode(SaveMode.Overwrite).saveAsTable("salesforce_account_order")

生成的SQL語句看起來就像這樣:

Scala

[main] INFO com.snowflake.snowpark.internal.ServerConnection - Execute query [queryID: XXXX]  CREATE  OR  REPLACE  TABLE salesforce_account_order AS  SELECT  *  FROM ( SELECT "ACCOUNTNAME", "PHONE", "PRODUCTNAME", "AMOUNT" FROM ( SELECT  *  FROM (( SELECT "ACCOUNTNAME" AS "ACCOUNTNAME", "PHONE" AS "PHONE", "TYPE" AS "TYPE", "SFDCID" AS "SFDCID" FROM ( SELECT  *  FROM (salesforce_account))) AS SNOWPARK_TEMP_TABLE_UKKLR6UCHN6POXL INNER JOIN ( SELECT "ACCOUNTID" AS "ACCOUNTID", "PRODUCTNAME" AS "PRODUCTNAME", "AMOUNT" AS "AMOUNT" FROM ( SELECT  *  FROM (salesforce_order))) AS SNOWPARK_TEMP_TABLE_36DEOZXTQJUYKLD ON ("SFDCID" = "ACCOUNTID"))))

隨后,Snowpark會創建一個新表或者替換掉已存在的舊表,來存儲生成的數據:

結語

Snowpark為數據處理提供了豐富的操作和工具。它允許用戶創建非常復雜的高級數據處理管道操作。將用戶自定義的代碼推到Snowflake數據倉庫服務端,并通過減少不必要的數據傳輸,在數據端執行,這是Snowpark的一個非常強大的特性。

譯者介紹

盧鑫旺,51CTO社區編輯,半路出家的九零后程序員。做過前端頁面,寫過業務接口,搞過爬蟲,研究過JS,有幸接觸Golang,參與微服務架構轉型。目前主寫Java,負責公司可定制化低代碼平臺的數據引擎層設計開發工作。

原文標題:Snowflake Data Processing With Snowpark DataFrames,作者:Istvan Szegedi


責任編輯:華軒 來源: 51CTO
相關推薦

2023-09-27 15:34:48

數據編程

2022-01-21 13:53:29

云計算邊緣計算數據

2021-07-08 09:51:18

MaxCompute SQL數據處理

2021-07-17 22:41:53

Python數據技術

2023-05-05 19:29:41

2017-10-31 11:55:46

sklearn數據挖掘自動化

2017-02-16 08:41:09

數據Vlookup匹配

2023-10-11 14:37:21

工具開發

2024-10-30 10:00:00

Python函數

2009-03-16 10:29:45

數據挖掘過濾器Access

2022-11-02 14:45:24

Python數據分析工具

2009-09-08 16:50:12

使用LINQ進行數據轉

2019-09-30 10:12:21

機器學習數據映射

2022-03-28 14:08:02

Python數據清洗數據集

2023-12-12 11:06:37

PythonPandas數據

2023-08-15 16:20:42

Pandas數據分析

2022-05-24 09:52:37

Spark SQL大數據處理Hive

2024-05-08 14:05:03

時間序列數據

2021-12-27 09:50:03

JavaScript開發數據分組
點贊
收藏

51CTO技術棧公眾號

成人福利免费网站| 99久久这里有精品| 国产精品一区二区三区在线播放| 久久久久久久久99精品大| 国产精品 欧美在线| 欧美视频综合| 日韩中文av在线| 欧美精品九九| av免费网站观看| 日韩欧美电影一二三| 久久精品论坛| 国产精品国三级国产av| 日韩欧美在线视频免费观看| 一区二区三区自拍视频| 一本色道久久99精品综合| 欧美日韩免费在线| 91精品尤物| 青青青在线观看视频| 91精品综合久久久久久| 国产伦精品一区二区三区视频| 九九爱精品视频| 精品99999| 亚洲日本激情| 一二三四社区在线视频6| 欧美激情第三页| 精品一区二区三区欧美| av在线免费播放网站| 日本高清视频一区| 91视频一区二区| 草草在线视频| 精品麻豆av| 欧美午夜激情小视频| 国产精品午夜一区二区三区| 狠狠躁狠狠躁视频专区| 久久视频在线看| 福利91精品一区二区三区| 在线观看av免费| 国内一区二区三区在线视频| 精品国产精品自拍| av一区二区高清| 免费看的毛片| 热草久综合在线| 国产精品视频一二三| 麻豆精品在线| 午夜免费福利小电影| 日韩精品极品视频| 日韩国产欧美三级| 69xxx在线| 日韩电影免费观看在| 欧美一区午夜精品| 模特精品在线| 成人看av片| 久久免费看av| 日韩一区二区三区免费看| 在线高清一区| 人成在线免费视频| 国产欧美最新羞羞视频在线观看| 亚洲色图.com| 亚洲人成精品久久久 | 亚洲裸色大胆大尺寸艺术写真| 亚洲精品一二三四五区| 精品国产一区二区三区在线观看 | 欧美老女人在线视频| 99久久久免费精品国产一区二区 | 欧美成人乱码一区二区三区| 久久都是精品| 96av在线| 最新av网址在线观看| 在线视频免费一区二区| 成人av在线播放网址| 日本一区二区三区电影免费观看| 狠狠操精品视频| 午夜精品一区二区三区视频免费看| 亚洲欧美在线观看| 日韩国产一区| av在线三区| 异国色恋浪漫潭| 久久成人国产精品| 成人免费一区二区三区在线观看| 精品影片在线观看的网站| 一二三在线视频社区| 国产欧美日韩伦理| 精品国产麻豆免费人成网站| 国产精品18久久久久久vr| 欧美日韩国产一区二区在线观看| 高清孕妇孕交╳╳交| 91成人免费看| 精品国产免费一区二区三区香蕉| 精品一区二区久久久| 国产精品久久久久久久久久久久久久久| 玩弄japan白嫩少妇hd| 国产精品扒开腿做爽爽爽的视频| 色偷偷88欧美精品久久久| 美女日韩在线中文字幕| 亚洲成人人体| 欧美日韩一区二区在线免费观看 | 亚洲精品日韩一| 日韩在线一区二区三区| 伦理一区二区| 日韩精品美女| 中日韩高清电影网| 最新在线地址| 免费av播放| 亚洲女娇小黑人粗硬| 国产一级二级在线| 国产一区二区精品免费| 精品亚洲一区二区三区在线播放| 成人的网站免费观看| 欧美综合视频| 黄页网站在线| 中文字幕国内自拍| 俄罗斯精品一区二区三区| 国产一区二区三区久久精品 | 黄色a级在线观看| 91超碰caoporn97人人| 欧美人牲a欧美精品| 91一区二区三区在线观看| 国产国产精品| 欧美日韩免费看片| 中文字幕一区免费| 熟女视频一区二区三区| 日本精品免费观看| 欧美岛国在线观看| 日韩久久一区二区| 日韩经典中文字幕一区| 高潮久久久久久久久久久久久久| 欧美成人视屏| 天天综合网天天做天天受| 麻豆91蜜桃| 奇米成人av国产一区二区三区| 日韩欧美在线网站| 亚洲美女视频在线观看| 久久狠狠亚洲综合| 999视频精品| 国产精品一区二区精品视频观看| 亚洲精品承认| 成人性生交大片免费观看嘿嘿视频 | 国产精品极品国产中出| 日韩精品丝袜美腿| 亚洲网址在线| 精品在线一区二区三区| 欧美日韩在线不卡视频| 乱色588欧美| av磁力番号网| 黄页网址大全在线观看| 美女日韩欧美| 国产一区二区你懂的| 一区二区三区在线观看动漫| 国产网站欧美日韩免费精品在线观看| 国产日本欧美一区二区三区| 99草草国产熟女视频在线| a国产在线视频| 日韩在线播放一区二区| 欧美调教femdomvk| 国产盗摄女厕一区二区三区 | 黄污视频在线观看| 免费日韩av| 欧美一区二区三区爱爱| 裸模一区二区三区免费| 日韩三级电影视频| 天堂久久一区二区三区| 欧美精品一区二区三区蜜桃视频| 奇米影视首页 狠狠色丁香婷婷久久综合 | 欧美放荡的少妇| 日本一区美女| 国产高潮在线| 久久久亚洲午夜电影| 久久久国产精彩视频美女艺术照福利| 精品中文字幕av| 日韩精品一区二区久久| 夜夜爽夜夜爽精品视频| 91在线网站视频| 操你啦视频在线| 国产美女精品人人做人人爽| 亚洲欧美中文日韩在线v日本| 霍思燕三级露全乳照| 国产欧美一区| 欧美一区午夜视频在线观看| 日韩精品一区二区在线视频| 日本欧美三级| 日韩欧美亚洲国产另类| 国产91在线免费| 黄色片免费在线观看视频| 国产香蕉精品| 欧美久久久久久久久| 国产欧美日韩网站| 激情久久一区| 国产校园另类小说区| 亚洲视频一二三| 国产精品一区二区不卡视频| 一区二区三区国产精华| 成人动漫视频在线观看完整版| 999成人网| 精品一区二区三区视频日产| 媚黑女一区二区| 欧美日韩无遮挡| 国产麻豆欧美日韩一区| 国产麻花豆剧传媒精品mv在线| 国产精品萝li| 日本高清中文字幕二区在线|