日韩性视频-久久久蜜桃-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实践分析的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: jjzz在线| 天堂资源av | 日日操日日 | 国产麻豆久久 | 国产探花在线精品一区二区 | 国产女优在线播放 | 青青艹视频 | 永久av免费在线观看 | 老熟妇午夜毛片一区二区三区 | 国产内射一区 | 日韩在线小视频 | 波多野吉衣视频在线观看 | 欧美黑人添添高潮a片www | 性激情视频| 天天干夜夜添 | 中文字幕一区二区人妻 | 日韩欧美少妇 | 成人毛片18女人毛片免费 | 青青草成人在线 | 日本精品久久久久久久 | 欧美少妇性生活 | jizz中国少妇 | 欧美 在线 | 天天躁日日躁狠狠躁伊人 | caoprom超碰 | 僵尸叔叔在线观看国语高清免费观看 | 欧美日韩在线观看一区二区 | 精品人伦一区二区三区蜜桃网站 | 免费在线一区二区三区 | 中文字幕乱码中文乱码b站 国产一区二区三区在线观看视频 | 日本色图片 | 一区二区在线影院 | 欧美专区亚洲专区 | 色男人影院 | 久久av中文字幕 | 久久久精彩视频 | 雷电将军和丘丘人繁衍后代视频 | 国产黄色网络 | 一区二区三区在线播放视频 | 青青视频在线播放 | 日韩 欧美 精品 | 夜夜天天操 | 亚洲精品手机在线 | 亚洲国产精品一区二区尤物区 | 五月激情婷婷丁香 | 奇米色播| 在线se| 黄色片免费在线观看 | 偷拍中国夫妇高潮视频 | 亚洲清纯国产 | 国产123区 | 国产丝袜在线视频 | 欧洲美一区二区三区亚洲 | 亚洲av无码乱码国产麻豆 | 男女爽爽视频 | 夜夜狠狠 | 91爱啪啪| 久久久久国产一区二区三区潘金莲 | 激情婷婷| 色多多导航| 久久伊人网站 | 波多野结衣毛片 | 四虎精品在线观看 | 男ji大巴进入女人的视频 | 粉嫩一区二区三区 | 日韩精品中文字幕在线播放 | 久久国产视频网 | 亚洲图片小说视频 | 伊人96| 亚洲久久久久久 | 国产h在线观看 | 理论片国产 | 国产成人精品视频ⅴa片软件竹菊 | 免费性视频| 亚洲综合av一区 | 男人插女人免费视频 | 麻豆com | 欧美精品亚洲精品日韩精品 | 色哟哟一区二区 | 伊人色综合网 | 在线观看黄色的网站 | 欧美午夜寂寞影院 | av中文字幕一区二区 | 高清一区二区三区四区五区 | 韩日欧美 | 国产精品99re | 一本一道久久综合 | 国产欧美高清 | 国产精品视频在 | 一级免费大片 | 少妇高潮一区二区三区99刮毛 | 豆花在线视频 | 清纯粉嫩极品夜夜嗨av | 久久婷五月天 | 日韩一级在线观看 | 久久va| 亚洲品质自拍 | 久久五月激情 | 丁香六月天婷婷 |