MySQL MaxCompute與AnalyticDB實現資料處理與轉換過程
導讀 | AnalyticDB MySQL(簡稱ads)與 MaxCompute(簡稱odps)進行資料轉換時,個別語法有差別,記錄下來,方便備查,文中透過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧 |
1、行轉列函式
odps 中行轉列函式 wm_concat,將列資訊轉成行顯示,可指定分隔符。
語法格式
wm_concat(separator, string) ,其中separator為分隔符,支援字串去重,即distinct.
select wm_concat('|',sku_id) from t_business_order_odps where create_time >= '2022-09-30 00:00:00';
ads 中行轉列函式 group_concat,即將列資訊轉成行顯示,預設逗號分隔。如在mysql中查詢表的所有列名。
select group_concat(COLUMN_NAME) from information_schema.COLUMNS where TABLE_NAME = 't_business_order';
2、判空函式
odps 中判空函式 coalesce ,如若無運費,則顯示為0。
select coalesce(freight_amount,0) from t_business_order_odps where create_time >= '2022-09-30 00:00:00';
odps 中判斷函式 decode ,如若無運費,則顯示為0。
語法格式
decode(expression, search, result[, search, result]…[, default])
表示:三元運運算元,即實現IF-THEN-ELSE分支選擇的功能
select decode(order_amount,freight_amount,0) from t_business_order_odps where create_time >= '2022-09-30 00:00:00';
ads 中判空函式 ifnull,如若無運費,則顯示為0。
select ifnull(freight_amount,0) from t_business_order where create_time >= '2022-09-30 00:00:00';
3、時間函式
odps 中 時間欄位型別為 datetime,獲取當前時間函式為 getdate()。
select coalesce(freight_amount,0),getdate() as etl_time from t_business_order_odps where create_time >= '2022-09-30 00:00:00';
ads 中時間欄位型別為 timestamp,獲取當前時間函式為 now()。
select ifnull(freight_amount,0),now() as etl_time from t_business_order where create_time >= '2022-09-30 00:00:00';
4、建表語句
odps 中 字串欄位型別為 string,時間欄位型別為 datetime。
CREATE TABLE t_business_order_odps ( prov_name string COMMENT '省名稱', city_name string COMMENT '地市名', cty_name string COMMENT '區縣名稱', order_no string COMMENT '訂單號', order_amount bigint COMMENT '運費', freight bigint COMMENT '運費', insert_month bigint COMMENT '插入月份', created_time datetime COMMENT '建立時間' ) COMMENT '業務訂單主表;
ads 中字串欄位型別為 varchar,時間欄位型別為 timestamp。
CREATE TABLE t_business_orde ( prov_name varchar COMMENT '省名稱', city_name varchar COMMENT '地市名', cty_name varchar COMMENT '區縣名稱', order_no varchar COMMENT '訂單號', order_amount bigint COMMENT '運費', freight bigint COMMENT '運費', insert_month bigint COMMENT '插入月份', created_time timestamp COMMENT '建立時間' ) PARTITION BY HASH KEY (order_no) PARTITION NUM 128 TABLEGROUP ads_sc_rpt OPTIONS (UPDATETYPE='batch') COMMENT '業務訂單主表';
知識梳理
OPTIONS 型別有兩種
1)batch 批次表,即資料批次入庫,適用於從odps同步到ads;
2)realtime 實時表,即資料單條入庫,適用於日誌等資訊單條入庫。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2933663/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用AnalyticDB MySQL建立資料庫及表過程MySql資料庫
- 【Java】基本資料、包裝類間轉換與處理Java
- [Java] 基本資料、包裝類間轉換與處理Java
- Pytorch資料讀取與預處理實現與探索PyTorch
- 資料匯入與預處理實驗二---json格式檔案轉換JSON
- python 與 Mysql 資料型別轉換PythonMySQL 資料型別
- 資料預處理-資料整合與資料變換
- Python 編碼轉換與中文處理Python
- ChannelHandler之間處理資料格式轉換與Netty自帶的ChannelhandlerNetty
- Java SimpleDateFormat處理日期與字串的轉換JavaORM字串
- ES系列(五):獲取單條資料get處理過程實現
- Nginx部署HTTPS服務過程與異常處理實踐NginxHTTP
- 玩轉大資料系列之二:資料分析與處理大資料
- MySQL資料庫INNODB表損壞修復處理過程分享MySql資料庫
- 大資料處理過程是怎樣大資料
- LangChain轉換鏈:讓資料處理更精準LangChain
- 案例:通過shell指令碼實現mysql資料備份與清理指令碼MySql
- “雲端計算與大資料處理技術”3天課程紀實!大資料
- jenkins:實現Jenkinsfile與Json的轉換JenkinsJSON
- Python文字資料分析與處理Python
- 流處理器與其他部件協同工作的過程
- 換膚功能實現過程
- 大資料的處理是怎樣的過程大資料
- 教程:如何通過DLA實現資料檔案格式轉換
- MYSQL學習與實驗(八)——儲存過程實驗MySql儲存過程
- 如何高效實現 MySQL 與 elasticsearch 的資料同步MySqlElasticsearch
- Python利用pandas處理資料與分析Python
- MySQL儲存過程的異常處理方法MySql儲存過程
- 實時流處理與分散式儲存過程中對檔案的操作分散式儲存過程
- 經典資料庫備份與還原處理(轉鄒建)資料庫
- mySql 儲存過程與函式MySql儲存過程函式
- mysql,sqlserver資料庫單表資料過大的處理方式MySqlServer資料庫
- 幾大ERP軟體實施方法與過程 (轉)
- LINUX系統 利用AWK命令處理文字資料過程Linux
- [轉] Scala Try 與錯誤處理
- 利用淘寶/天貓API實現商品資料的實時獲取、處理與分析API
- 生信分析預處理:plink兩種格式識別與轉換
- 我的《海量資料處理與大資料技術實戰》出版啦!大資料