日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MaxCompute实践分析

發布時間:2024/4/14 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MaxCompute实践分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概述
本文主要是記錄如何通過數加MaxCompute和大數據開發套件兩個產品實現簡單的電影數據分析。

目標
希望了解每天市場上最火爆的電影是哪些,表現如何。通過對影視及票房數據集(dwd_product_movie_basic_info電影基本信息 和 ods_product_movie_box票房基本信息)統計分析出每天每個國家/地區累計票房最高的10個電影并且展現這些電影的導演、主演和累計票房。

數據說明
直接使用了數加平臺公開數據集上的影視及票房數據集。該數據集從2016 年12 月13 日開始,每日早10 點前進行全量更新。

兩個表的具體信息如下:

  • 電影基本信息 dwd_product_movie_basic_info
字段英文名字段類型描述是否是分區列
movie_ nameSTRING電影名稱
dirctorSTRING導演
scriptwriterSTRING編劇
areaSTRING制片地區/國家
actorsSTRING主演
typeSTRING類型
movie_lengthSTRING電影長度
movie_dateSTRING上映日期
movie_languageSTRING語言
imdb_ urlSTRINGimdb號
dsSTRING日期分區列

數據樣例

Select * from public_data.dwd_product_movie_basic_info where ds ='20170119' limit 10;

  • 票房基本信息 ods_product_movie_box
字段英文名字段類型描述是否是分區列
rankSTRING排名
avgpriceSTRING平均票價
avppeopleSTRING場均人次
boxofficeSTRING單日票房(萬)
boxoffice_ upSTRING環比變化 (%)
irankSTRING排名
moviedaySTRING上映天數
movienameSTRING影片名
sumboxofficeSTRING累計票房(萬)
womindexSTRING口碑指數
dsSTRING日期分區列

數據樣例

Select * from public_data.ods_product_movie_box where ds ='20170119' limit 10;


目標分析

  • 需要統計出每個國家/地區累計票房(萬)最高的10個電影并且展現這些電影的導演和主演
  • 包括的字段是 [ 制片地區/國家 、電影名稱、 排名、累計票房(萬)、導演、主演]


現狀分析

  • 電影基本信息表中包含了 [ 制片地區/國家、電影名稱、 導演、主演 ]
    -票房基本信息表中包含了 [ 影片名、累計票房(萬)], 其中的 [ 排名 ] 字段不是票房排名

-兩個表中沒有類似于 [ 影片ID ] 的字段

  • 數據源中的數據每天都進行全量更新


實現路徑

1 創建目標表

2 創建任務,通過 [ 電影名稱 ] 和 [ 影片名 ] 建立兩張表的連接,并按 [ 制片地區/國家 ] 進行分組,對 [ 累計票房(萬)] 進行排名

3 配置調度,該任務每天調度一次


實現步驟

1 創建目標表

大數據開發套件數據開發標簽的工具欄中,點擊新建,在下拉菜單中選擇新建表

輸入建表語句

CREATE TABLE IF NOT EXISTS movie_sumboxoffice_top10 (area STRING,movie_name STRING,movie_rank STRING,sumboxoffice STRING,dirctor STRING,actors STRING ) PARTITIONED BY (ds STRING );

點擊確定提交

2 創建查詢任務進行分析

這次在工具欄中選擇新建任務,選擇節點任務ODPS_SQL類型和周期調度

編輯SQL代碼,先測試一下。

--連接兩張原表 --每天任務運行時都是取當天數據源的最新分區 DROP TABLE IF EXISTS t_movie_sumboxoffice_info;CREATE TABLE IF NOT EXISTS t_movie_sumboxoffice_info AS SELECT a.area, a.movie_name, b.sumboxoffice, a.dirctor, a.actors FROM public_data.dwd_product_movie_basic_info a JOIN (SELECT * FROM public_data.ods_product_movie_box WHERE ds = '${bdp.system.bizdate}')b ON a.movie_name = b.moviename WHERE a.ds = '${bdp.system.bizdate}';

發現產生的表 t_movie_sumboxoffice_info是空的,原因是數據源的兩張表里面并不是每一天都有數據的,做一下數據探查。

SELECT DISTINCT a.ds AS dt FROM public_data.dwd_product_movie_basic_info a JOIN public_data.ods_product_movie_box b ON a.ds = b.dsAND b.ds IS NOT NULL WHERE a.ds IS NOT NULL ORDER BY dt DESC LIMIT 365;
  • 注意order by必須與limit 聯用,且order bykey必須是select語句的輸出列,即列的別dt。
  • 當兩個表進行join的時候,主表的Where限制可以寫在最后,但從表分區限制條件要寫在ON條件或者子查詢,否則會先Join后進行分區裁切,造成不必要的性能下降。

得到的結果如下(截圖中只顯示了一部分)

最大日期是2017年6月30日,最小日期是2017年1月13日,其中還有不連續的現象。

所以現在看來每天有新的分析報告是不行了,那就對歷史數據進行一下分析。
需要調整一下系統參數,設置為其中較早的一天,比如2017年1月19日。

再次運行,得到的結果如下

看來是數據沒有處理干凈,存在屬于同一部電影但主演名字不一樣的情況。
雖然這屬于數據清洗的范疇,但是可以簡單進行一下去重處理。

--用distinct和wm_concat聚合函數進行簡單去重 DROP TABLE IF EXISTS tmp_movie_sumboxoffice_info;CREATE TABLE IF NOT EXISTS tmp_movie_sumboxoffice_info AS SELECT a.area, a.movie_name, a.sumboxoffice, a.dirctor, wm_concat(',', a.actors) as actors FROM (SELECT distinct area, movie_name, sumboxoffice, dirctor, actorsFROM t_movie_sumboxoffice_info ) a group by a.area, a.movie_name, a.sumboxoffice, a.dirctor;

去重后結果如下

現在可以繼續編輯第三段SQL代碼

--產出最終目標表:每個國家/地區總票房最高的10個電影,并展示導演和主演 --每天任務運行產出的日期分區值與源表數據日期一致 INSERT OVERWRITE TABLE movie_sumboxoffice_top10 PARTITION (ds = '${bdp.system.bizdate}') SELECT a.area, a.movie_name, a.movie_rank, a.sumboxoffice, a.dirctor, a.actors FROM (SELECT area, movie_name, ROW_NUMBER() OVER (PARTITION BY area ORDER BY sumboxoffice DESC) AS movie_rank, sumboxoffice, dirctor, actorsFROM tmp_movie_sumboxoffice_info ) a WHERE a.movie_rank < 11;
  • 這里用一個窗口函數Row_number 對 area 開窗, 按照 sumboxoffice 從大到小進行排名

最終得到結果如下

只有這么可憐的幾條數據,選的日子不夠好。
而且為什么排名第二的票房是6291?感覺似乎少了1個0,感興趣的同學可以研究一下為什么,或者留言指出我的錯誤。

3 配置調度

雖然數據不完整,但是還是可以配置一下調度
由于本例中沒有依賴其他任務,所以只需要配置調度周期,而且由于是每天調度一次,直接保留默認配置即可。


總結
整個任務基本上完成,雖然數據不太完整。
從去年接觸MaxCompute到現在,雖然使用的頻率還不夠多,但是能感受到功能越來越完善。比如費用預估就是一個非常贊的功能,用戶體驗大大上升,跑代碼的時候心理壓力小了很多。
公司的OLTP目前是建立在SQL Server 上, 未來可能有遷移數據倉庫到MaxCompute的打算。如果有機會的話,到時候再來跟大家分享,包括一些MaxCompute更高級的功能。

總結

以上是生活随笔為你收集整理的MaxCompute实践分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 警察高h荡肉呻吟男男 | 致命魔术电影高清在线观看 | 黄频在线播放 | 色5566 | 中文字幕日韩在线播放 | 亚洲图片欧美 | 日韩久久一区二区三区 | 精品一区不卡 | 欧美日韩在线视频免费播放 | 韩日免费av | 亚洲精品你懂的 | 教练含着她的乳奶揉搓揉捏动态图 | 日本中文字幕在线看 | 九一九色国产 | 久久综合久久网 | 麻豆视频在线观看免费 | 日韩欧美在线视频播放 | 日韩毛片免费看 | 国产成人三级在线观看视频 | 中文一区二区在线观看 | 日本精品一区二区三区在线观看 | 国产精品露脸视频 | 欧美精品在欧美一区二区少妇 | 中文字幕人妻一区二区三区 | 性日本xxx| 国产成人无码久久久精品天美传媒 | 欧美午夜精品一区二区三区电影 | 免费观看的av | 韩国中文字幕在线观看 | 成人性生交视频免费观看 | 中文字幕在线观看视频网站 | 日韩综合网站 | 一区二区免费av | 一区二区片 | 精品欧美激情精品一区 | 国产av自拍一区 | 男女激情网址 | 91最新入口 | 国产精品视频网址 | 天天操天天操天天操 | 午夜影院一区二区三区 | 国产一区精品在线观看 | 中文字幕日韩精品一区 | 少妇一级淫片免费 | 久久久涩 | 久久精品视频18 | 男女午夜影院 | 亚洲自拍图片 | 国产视频在线看 | 黄色九九 | 懂色av蜜臀av粉嫩av分享吧最新章节 | 国产成人精品免费 | 美女视频国产 | 痴汉电车在线观看 | 国内精品视频一区二区三区 | 女性裸体视频网站 | 农村老妇性真猛 | 黄色污污视频网站 | 好紧好爽再浪一点视频 | 男人舔女人下部高潮全视频 | 亚洲手机在线观看 | 亚洲熟妇色自偷自拍另类 | 牛牛在线| 日韩视频免费观看高清 | www.亚洲一区 | 涩涩视频免费看 | 久久久久久久黄色片 | 亚洲成年人网 | 乳罩脱了喂男人吃奶视频 | 久久综合伊人77777麻豆最新章节 | av免费网站观看 | 第四色在线视频 | 91在线无精精品一区二区 | 2018天天操 | 夜夜操导航 | 原来神马电影免费高清完整版动漫 | 国产三级视频 | 91国内产香蕉 | 精品熟妇一区二区三区 | 欧美成人久久久 | 欧美瑟瑟| 国产无遮挡一区二区三区毛片日本 | 日韩av电影在线播放 | 无人码人妻一区二区三区免费 | 欧美日韩高清不卡 | 色中文字幕在线观看 | 久久免费福利视频 | 男女男精品视频 | 牛牛精品视频 | 日韩国产成人无码av毛片 | 能看的毛片| 日韩少妇内射免费播放 | 日本va欧美va国产激情 | 色爱色| 国产农村妇女精品一二区 | 中国 免费 av | 特黄特色大片免费视频大全 | 久久狠狠高潮亚洲精品 | 久久人妻少妇嫩草av |