① 2.3 阿里雲ODPS常用SQL操作
SQL語句查詢時,可使用的關鍵字:
命令格式如下:
如果需要整個項目都允許全表掃描,可以通過開關自行打開或關閉(true/false),命令如下:
查詢的對象是另外一個Select操作,如:
UNION ALL:將兩個或多察纖答個Select操作返回的數據集聯合成一個數據集,如果結果有重復行時,會返回所有符合條件的行,不進行重復行的去重敗慧處理。
UNION [DISTINCT]:其中DISTINCT可忽略。將兩個或多個Select操作返回的數據集聯合成一個數據集,如果結果有重復行時,將進行重復行的去重處理。
UNION ALL示例如下:
UNION示例如下:
--執行的效果相當於
left join:左連接,會從左表(shop)中返回所有的記錄,即使在右表(sale_detail)中沒有匹配的行。
right outer join:右連接,返回右表中的所有記錄,即使在左表中沒豎散有記錄與它匹配。
示例如下:
full outer join:全連接,返回左右表中的所有記錄。
示例如下:
inner join:在表中存在至少一個匹配時,inner join返回行。關鍵字inner可省略。
命令格式如下:
② ODPS開發筆記
在insert overwrite到一張乎告分區表時,可以在語句中指定分區到值。也可以用另一種更加靈活到方式,在分區中指定一個分區列名但不給出值。相應的,在SELECT子句中的對應列來提供分區的值。
ODPS SQL支持在一個語句中插入不同的結果表或者分區。
注意:where子句,如果在in/not in 條件後加子查詢,子查詢只能返回一列值,且返回值的數量不能超過1000條記錄。
使用情景:一基備個大表和一個或多個小表做join。
基本原理:將用戶指定的小表全部載入到搏頃毀執行join操作的程序內存中,從而加快join的執行數據。
將兩個或者多個SELECT操作返回的數據集聯合成一個數據集
把數據按照一定條件分成多組稱為開窗,每個組稱為一個窗口,partirion by部分用來指定開窗的列。
分區列的值相同的行被視為在同一個窗口內order by用來指定數據在一個窗口內如何排序。
windowing_clause部分可以用rows指定開窗方式,有兩種方式:
③ ODPS JOIN
阿里雲中Max Compute(原ODPS)計算引擎學習備忘錄。
子查詢等價: https://help.aliyun.com/document_detail/73781.html?spm=a2c4g.11186623.6.695.bfdd28dc5TaSoL#title-kho-mt6-6rm
以下in語句只在ODPS2中生明襪此效。但是可以清楚地看到semi join與anti join的含義。
類似交集 union
LEFT SEMI Join的處理邏輯是對於左表的每一條記錄,都去和右表進行匹配,如果匹配成功,則輸出左表。這里需要注意的激迅是由於只輸出左表,所以JOIN後的Where條件中不能寫右側的過濾條件。LEFT SEMI JOIN常用來實現exists的語義。
類似補集 except / minus
LEFT ANTI Join的處理邏輯是對於左表的每一條記錄,都去和右表進行匹配,如果右表所有的記錄都沒有匹配成功,則輸出左表。同樣由於只輸出左表,所以JOIN後的Where條件中不能寫右側的過濾條件。LEFT SEMI JOIN常常用來實現not exists的語義。
詳細語法說明好高: https://help.aliyun.com/document_detail/73783.html?spm=a2c4g.11186623.2.11.66bd7eb5iuC82y#title-6wq-wbn-brl
MaxCompute的JOIN操作分為左連接、右連接、全連接、內連接。以下四種命令中的 outer / inner 都可以省略。
https://help.aliyun.com/document_detail/89993.html
④ odps 中的分區表怎麼存儲的
基本磁碟:間久應用廣泛種磁碟類型;兼容性兼容微軟所操作系差扮唯統;態缺亂磁碟:虛培windows 2000/2003/xp支持比基本磁碟具較強擴展性靠性
⑤ 2.2 阿里雲ODPS常用命令總結
命令格式如下:
其中,各纖州欄位代表含義如下:
• Owner(表的屬主)。
• Project:表所屬的項目空間。
• CreateTime:創建時間。
• LastDDLTime:昌含最後一次DDL操作時間。
• LastModifiedTime:表中的數據最後一次被改動的時間。
• InternalTable:表示被描述的對象是表,總是顯示YES。
• Size:表數據所佔存毀迅蔽儲容量壓縮後的大小,壓縮比一般為5倍,單位Byte。
• Native Columns:非分區列的信息,包括列名、類型和備注。
• Partition Columns:分區列信息,包括分區名、類型和備注。
• Extended Info:外部表StorageHandler 、Location等信息。
⑥ odps相關筆記
selectsubstr("abc",1,2);--截取字元串selectsubstr('20200303',1,6)month;
selectsubstr(REPLACE('2014-08-31','-',''),1,6);--201408selectTO_CHAR('岩衫拍2019-02-24 22:30:29','yyyymm');--201902selectconcat(split_part('08/30/2020','/',3),split_part('08/30/2020','/',1),split_part('08/30/2020','/',2));--20200830
selectdatediff(TO_DATE('202007','yyyymm'),TO_DATE('塌橋202008','yyyymm'),'mm');-- -1
selectif(b.original_order_idisnull,'直接付費','有過試用')asinfo;--滿足條件則粗羨參數2,不滿足則參數3
tunnel download -c GBK -h=True lintt_dingyue_rukou_20200619 lintt_yingye_20200618_success_5.csv;--直接導出表,無條數限制。
⑦ ODPS(MaxCompute)基礎教程
1. 什麼是ODPS
簡單講就是數據倉庫,可以存儲海量數據,可針對海量數據進行分析、計算。
本命其實叫 MaxCompute ,本文介紹統稱為ODPS
官方文檔鏈接: https://help.aliyun.com/document_detail/27800.html?spm=a2c4g.11186623.6.542.17ae65d4wAeKXV
DataWorks 開發套件
是數據工場,對ODPS數據進行加工處理,主要提供了: 數據集成 、 數據開發 、 數據管理 、 數據治理 、 數據分享 等功能。
官方文檔鏈接: https://help.aliyun.com/document_detail/73015.html?spm=a2c4g.11186623.2.13.5ef65b9cBmTZdQ#concept-wqv-qbp-r2b
2. 登錄篇(阿里雲子賬號)
子賬號登錄地址: https://signin.aliyun.com/login.htm
產品列表:數加 · DataWorks
賬號賦權:如需要進行數據開發,需要根據業務需求,賦對應緩枯握的工作空間的對應許可權。
進入DataWorks> 擾慶工作空間列表頁面,單擊對應項目中的進入工作區,即可進入數據開發頁面。(如下圖)
2.使用篇
目前數據倉敗塵庫的整體概況
目前承載的業務
業務操作日誌備份分析
其他日誌:系統運行日誌
BI 數據分析相關(市場部BI)
開發前環境准備
開通DataWorks 許可權的子賬號
創建項目(1)
官方的文檔: https://help.aliyun.com/document_detail/27815.html?spm=a2c4g.11186623.6.568.60d01df0XvZAoh
目前我們的工作空間
新建調度資源(2)
一般進行簡單的數據分析只需要默認的調度資源就滿足業務需求(目前的模式就是按量付費)
需要進行特殊的數據集成、數據操作時會用到自定義資源
PyOdps 資源組:執行py腳本的資源組
mongoDB 資源組:進行MongDb --> ODPS 時會用到資源進行數據同步。
新增數據源(3)
路徑:選擇項目 -> 選擇數據集成 -> 同步資源管理 -> 數據源
按照官方文檔新增即可
數據源列表
批量數據上雲(4)
路徑:選擇項目 -> 選擇數據集成 -> 同步資源管理 -> 數據源 -> 整庫數據遷移
數據開發前准備工作完成,可以進入開發階段。
3 開發篇
數據開發
基本概念:
業務流程:解決一個業務的抽象模型,可以是一個問題的處理流程。
解決方案:多個業務流程組合成一個解決方案,在同一個解決方案裡面可以復用相同的業務流程。
其他的概念: https://help.aliyun.com/document_detail/73017.html?spm=a2c4g.11186623.6.543.3b757c78aHPhAD
數據開發流程:
數據開發流程:
選取兩個現有的業務進行數據開發演示
財務部門需求
數據埋點分析
流程圖如下
4 運維
運維中心:
⑧ ODPS SQL獲取max_pt
select max_pt('tableName')對於分區的表,此函數返回該分區表的一級分區的最大值,按字母排序,且該分區下有對應的數據文件。說明: tableName:String 類型,指定表名(必須帶上 project 名,例如:prj.src),用戶必須擁有該表的讀許可權。返回值:最大的一級分區的值。例:tab 是分區表,該表對應的分區如下,且都有數據文件。pt=' pt=' select * from tab where pt=max_pt('project.tab');該語句 max_pt 值為「20080808」,阿里雲 ODPS 資料庫 SQL 語句讀出 pt=' 分區下的數據。備註:如果只是用 alter table 的方式新加了一個分區,但是此分區中並無任何數據文件,則此分區不會做為返回值。
max_pt 是個非常好用的函數,可以獲取分區表的最新分區,正因為好用,促成使用人員養成了在任意場景下都使用 max_pt 來替代 '${bizdate}' 的習慣。什麼場景下會使用?1. 當天數據無法及時產出,想使用最近一個分區的數據。2.使用最新分區的數據,回刷歷史某一天的數據。
使用 max_pt 可能引發的風險:1. 部分任務會產出未來日期的分區,比如某業務訂單表 ccbOrder 有 20080808 分區,把未完結訂單都放在20080808 分區里,此時用 max_pt 可能會取不到想要的數據。2. 同一個結果表,分多段 insert 數據至同一結果表,當多段任務並未完成時,使用 max_pt 獲取不到全量數據。3.當 datax 同步任務剛添加好分區,數據未完成同步,使用 max_pt,只獲取了部分數據。4.回刷數據,確保數據源自歷史分區數據狀態,使用 max_pt 達不到這個目的。
⑨ 阿里雲的大數據應用ODPS應該怎麼使用
阿里雲開放數據處理服務(Open Data Processing Service簡稱ODPS)是構建在飛天系螞陵統上的大規模分布式數段物罩據梳理服務。處理量大,一般用握鬧戶用來購買日誌和業務數據進行數據挖掘。