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 資料型別
- ES系列(五):獲取單條資料get處理過程實現
- ADO資料與XML資料間的轉換的類(ASP實現) (轉)XML
- Java SimpleDateFormat處理日期與字串的轉換JavaORM字串
- Python 編碼轉換與中文處理Python
- ChannelHandler之間處理資料格式轉換與Netty自帶的ChannelhandlerNetty
- MySQL資料庫INNODB表損壞修復處理過程分享MySql資料庫
- Nginx部署HTTPS服務過程與異常處理實踐NginxHTTP
- 玩轉大資料系列之二:資料分析與處理大資料
- 大資料處理過程是怎樣大資料
- 資料庫變慢的處理過程資料庫
- “雲端計算與大資料處理技術”3天課程紀實!大資料
- 批處理(bat)實現SQLServer資料庫備份與還原BATSQLServer資料庫
- MySQL與oracle的資料型別轉換總結MySqlOracle資料型別
- 【視訊處理】YUV與RGB格式轉換
- 通過JDOM實現XML與String的相互轉換XML
- 資料庫索引設計與優化讀書筆記--《三》SQL處理過程資料庫索引優化筆記SQL
- 通過xml處理sql語句時對小於號與大於號的處理轉換XMLSQL
- Python資料分析與挖掘實戰(資料預處理)Python
- MYSQL匯入中斷處理過程MySql
- 案例:通過shell指令碼實現mysql資料備份與清理指令碼MySql
- 通過Sqoop實現Mysql / Oracle 與HDFS / Hbase互導資料OOPMySqlOracle
- 輕鬆實現session的mysql處理 (轉)SessionMySql
- 換膚功能實現過程
- 利用淘寶/天貓API實現商品資料的實時獲取、處理與分析API
- 流處理器與其他部件協同工作的過程
- LangChain轉換鏈:讓資料處理更精準LangChain
- 大資料的處理是怎樣的過程大資料
- 如何高效實現 MySQL 與 elasticsearch 的資料同步MySqlElasticsearch
- jquery的ajax傳遞資料過程中的資料處理jQuery
- Python文字資料分析與處理Python