首頁 > 軟體

MySQL MaxCompute與AnalyticDB實現資料處理與轉換過程詳解

2022-12-27 14:02:08

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 實時表,即資料單條入庫,適用於紀錄檔等資訊單條入庫。

到此這篇關於MySQL MaxCompute與AnalyticDB實現資料處理與轉換過程詳解的文章就介紹到這了,更多相關MySQL MaxCompute與AnalyticDB內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com