精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

MaxCompute 挑戰使用SQL進行序列數據處理

數據庫 SQL Server
什么是序列值的處理。表中的記錄本身是無序的,但是業務上數據都是有序的,一般來說時間就是一個自然的序列。比如利用我一天的作息的時點記錄,計算我一天吃了幾次飯,吃了多久。乍一看,好像要寫個函數。

日常編寫數據加工任務,主要的方法就是使用SQL。第一是因為自己對SQL掌握的比較好(十多年數據開發經驗,就這幾個關鍵字,也不敢跟別人說自己不行),所以,MR和函數涉及不多。在接觸MaxCompute這些年,寫過的函數應該不超過10個,主要還是因為自己JAVA水平挫。記得早些年寫過一個身份證號碼校驗函數,當時有個項目反饋一段SQL原來2分鐘,使用我的函數就變成12分鐘了。當時這個項目組還找到MaxCompute的研發,研發負責人又找到我,讓我把我的代碼調優下。我很惶恐啊,我是什么渣,我自己心里知道啊。最后還是厚著臉皮求研發幫我優化了下,性能終于改進了。這以后,我更不敢隨機作函數了,畢竟MaxCompute官方建議盡可能使用SQL,SQL是優化過的方法,自己用MR和自定義函數性能是很難保障的。這也導致我至今在這方面也是渣渣,當然我認為錯不在我,我只是聽了“媽媽”的話而已。

最近很奇妙,接連有兩個項目遇到了序列值計算的問題,還都是要求不能使用函數和MR。同事把問題送給我,我發現光讀懂題都要半天(題目有點繞),不在一線搞開發太久了,有點生疏了。同樣的問題,第一次搞了一天,第二次還搞了半天,沒說很快能搞出來的,未免有點丟范。所以,總結出來跟大家分享下。

先說下什么是序列值的處理。表中的記錄本身是無序的,但是業務上數據都是有序的,一般來說時間就是一個自然的序列。比如利用我一天的作息的時點記錄,計算我一天吃了幾次飯,吃了多久。乍一看,好像要寫個函數。

問題模擬如下:

問題:吃了幾次飯,都吃了多久?

條件:1-兩個“吃飯”狀態間隔在1小時內,算作一頓飯

2-最后一個“吃飯”狀態后的下一個其他狀態的開始時間,是“吃飯”的結束時間

通過上面的分析,我們可以得到結果:大約吃了四次飯,因為晚上吃飯的時間很長,按照規則算作吃了兩次飯(第四次看起來是去擼串了)。我是怎么做的呢?第一步,我先把無關的信息剔除了,第1行、第4行、最后1行。第二步,后我利用數據是連續的時間的特質,找到了狀態的結束時間。第三步,我識別了狀態間隔1小時這個特征,識別出了一個“吃飯”中混雜的其他無關狀態,并且還分析得到第三個“吃飯”和第四個“吃飯”狀態是兩個獨立的狀態。

那么用SQL怎么實現?排序是一定的了,要排序還要處理狀態,必須使用窗口函數。能選的窗口函數似乎只有lag、lead。

窗口函數:

LAG 按偏移量取當前行之前第幾行的值。

LEAD 按偏移量取當前行之后第幾行的值。

官方文檔:https://help.aliyun.com/document_detail/34994.html

即便有了這個函數,還有一個問題很頭疼,函數需要指定偏移量,而這個問題里面并不知道到底會出現多少個狀態。是不是也沒有用呢?看看再說。

問題分解分解如下:

使用LAG\LEAD函數取到前一條記錄和后一條記錄的狀態和時間,分析記錄:

1-當前狀態不是“吃飯”,上一個狀態也不是“吃飯”,記錄不保留。

2-當前狀態不是“吃飯”,上一個狀態是“吃飯”,為上一個狀態提供結束時間,記錄不保留。

3-當前狀態是“吃飯”,記錄上一個和下一個狀態都是“吃飯”,記錄不保留。

4-當前狀態是“吃飯”,記錄下一個狀態時間,作為當前狀態結束時間,記錄保留。

如下圖:

然后我們就得到了下面一個表格:

很明顯,這不是我們最后需要的。雖然我們找到了狀態為“吃飯”的行,并且通過窗口函數給它找到了狀態的結束實際。但是表格還需要再作一次處理,才能變成我們想要的結果。再次使用LAG\LEAD函數,我們需要把間隔在1小時內的“吃飯”狀態進行合并。

問題再次分解分解如下:

使用LAG\LEAD函數取到前一條記錄和后一條記錄的開始和結束時間,分析記錄:

1-當前記錄的“開始時間”減去上個時點的“結束時間”,如果小于1小時,該行記錄不保留。這一行記錄的狀態需要與上一行合并為一次“吃飯”狀態。下圖中綠色標注行。

2-下個時點的“開始時間”減去當前記錄的“結束時間”,如果小于1小時,該行記錄與下一行記錄合并。修改當前時點“吃飯”狀態的結束時間為下一個時點的結束時間。下圖橙色標注行。

然后我們得到了下面的表格:

不管之前我們想的多復雜,需要用什么循環或者遞歸邏輯實現,但是現在問題解決了。我們通過這個表格回答了最開始題目的問題。這個人吃過4次飯,開始時間分別是7點10分、12點25分、17點40分、19點45分,每次持續的時間大約都在1小時。這個過程就是一個找到需要的信息,剔除無關信息的過程,只不過這個where有點復雜。

其實從分析問題的角度來看,這個問題本身就有點復雜,搞懂問題一般都需要一定的時間。從實現問題的角度來看,使用高級語言JAVA或者python實現更容易點,循環擼一遍有什么解決不了的(一遍不夠再來一遍)。用SQL實現,看起來有點復雜(可能是我常年使用SQL語言的原因,我覺得我好像分析問題的過程跟實現的過程是一樣的。),但是代碼量一定是最少的(性能可能也是最佳的)。再從可維護性上去綜合比較,還是使用SQL實現更優。

所以,后面再遇到類似的問題,你應該可以搞定了。如果有點困難,至少你可以再回過頭來看下這個例子,畢竟我花了好久來設計。

SQL問題解答:

  1. with ta as
  2.  
  3. select
  4.  
  5. from values 
  6.  
  7. (1001,'06:05:00','sleep'
  8.  
  9. ,(1001,'07:10:00','eat'
  10.  
  11. ,(1001,'08:15:00','phone'
  12.  
  13. ,(1001,'11:20:00','phone'
  14.  
  15. ,(1001,'12:25:00','eat'
  16.  
  17. ,(1001,'12:40:00','phone'
  18.  
  19. ,(1001,'13:30:00','eat'
  20.  
  21. ,(1001,'13:35:00','sleep'
  22.  
  23. ,(1001,'17:40:00','eat'
  24.  
  25. ,(1001,'18:05:00','eat'
  26.  
  27. ,(1001,'18:25:00','eat'
  28.  
  29. ,(1001,'18:30:00','phone'
  30.  
  31. ,(1001,'19:45:00','eat'
  32.  
  33. ,(1001,'20:55:00','phone'
  34.  
  35. ,(1001,'22:00:00','sleep'
  36.  
  37. t(id,stime,stat)) 
  38.  -- 5 計算根據前后記錄的時間,判斷記錄是否要被合并
  39. selectid,stime
  40. ,case whens2<=60 thenetime2 else etime end asetime,stat
  41. from(
  42. -- 4 計算前后記錄的時間差
  43. selectid,stime,etime,stat
  44. ,datediff(stime,etime1,'mi') ass1
  45. ,datediff(stime2,etime,'mi') ass2
  46. ,etime2
  47. from(
  48. -- 3 計算前后記錄的時間
  49. selectid,stime,etime,stat
  50. ,lag (stime,1) over(partition byid order by stime asc)as stime1
  51. ,lag (etime,1) over(partition byid order by stime asc)as etime1
  52. ,lead(stime,1) over(partition byid order by stime asc)as stime2
  53. ,lead(etime,1) over(partition byid order by stime asc)as etime2
  54. from(
  55. -- 2 識別前后記錄狀態,找到狀態結束時間
  56. selectid,stime,stat
  57. ,lead(stime,1) over(partition byid order by stime asc)as etime
  58. ,lag (stat,1) over(partition byid order by stime asc)as stat1
  59. ,lead(stat,1) over(partition byid order by stime asc)as stat2
  60. from(
  61. -- 1 把字符串轉時間
  62. selectid,to_date(concat('2021-06-29 ',stime),'yyyy-mm-dd hh:mi:ss') asstime,stat
  63. fromta)t1)t2
  64. wherestat='eat' and not(stat='eat' andstat1='eat' andstat2='eat'))t3)t4
  65. wheres1 >60 ors1 is null
  66. ;

責任編輯:梁菲 來源: 阿里云云棲號
相關推薦

2024-05-08 14:05:03

時間序列數據

2022-05-24 09:52:37

Spark SQL大數據處理Hive

2023-09-27 15:34:48

數據編程

2022-01-26 09:00:00

數據庫SnowparkSQL

2019-06-12 16:21:52

時間序列PythonPandas

2023-10-11 14:37:21

工具開發

2025-01-07 13:58:08

SQL數據處理函數數據庫

2013-08-26 09:36:27

大數據NoSQLMongoDB

2012-09-20 10:15:41

大數據處理挑戰服務器性能

2015-10-16 09:50:10

2025-02-08 10:58:07

2011-09-01 15:12:43

SQL ServerHadoop

2010-06-30 13:49:02

SQL Server數

2010-07-07 10:02:46

SQL Server數

2023-12-12 11:06:37

PythonPandas數據

2023-09-25 13:19:41

pandasPython

2022-01-21 13:53:29

云計算邊緣計算數據

2024-11-14 12:00:00

Python開源大數據

2024-01-31 23:22:35

vaexPython

2021-08-11 10:50:35

AirFlow MaxCompute阿里云
點贊
收藏

51CTO技術棧公眾號

swag国产精品一区二区| 2024短剧网剧在线观看| 日韩精品久久理论片| 日韩在线免费视频观看| 日韩av成人网| 校园春色亚洲| 综合久久久久综合| 国产精品播放| 中文字幕久久久久| 一区二区三区四区日韩| 亚洲精品国产精品乱码不99按摩| 久久婷婷国产91天堂综合精品| 午夜毛片在线| aa级大片欧美| 91在线观看免费观看| 日韩精品在线不卡| 五月婷婷六月综合| 亚洲嫩模很污视频| 欧美图片自拍偷拍| 欧美一区二区三区婷婷| 午夜久久福利影院| 国产人妻互换一区二区| 男同在线观看| av在线播放一区二区三区| 国产在线精品成人一区二区三区| 国产污污视频在线观看| 99久久99视频只有精品| 亚洲欧美日韩另类| 久久人妻一区二区| 天堂久久av| 欧美精品在线观看一区二区| 日韩视频在线免费看| 电影k8一区二区三区久久| 亚洲欧洲日产国码二区| 奇米888一区二区三区| 好男人www在线视频| 狠狠色狠狠色合久久伊人| 国产精品久久999| 国产精品免费精品一区| 99亚洲视频| 国内自拍欧美激情| 国产精品16p| 亚洲手机在线| 欧美高跟鞋交xxxxhd| 卡通动漫亚洲综合| 国产精品久久久久久久| 爽爽爽爽爽爽爽成人免费观看| 亚洲综合网在线观看| 清纯唯美亚洲经典中文字幕| 亚洲成avwww人| 99久久综合网| 亚洲精选av| 日韩精品一区二区三区四区视频| 九九九久久久久久久| 国产视频一区二区在线播放| 4438亚洲最大| 三大队在线观看| 日本精品视频| 亚洲精品一区二区三区四区高清 | 亚洲精品日韩丝袜精品| 久久久老熟女一区二区三区91| 国产乱人伦精品一区| 亚洲高清一二三区| 无遮挡aaaaa大片免费看| 天堂资源在线亚洲| 亚洲天堂av高清| 老头老太做爰xxx视频| 日韩av免费大片| 久久精品免费电影| 激情五月婷婷小说| 中文精品在线| 国产成人亚洲综合青青| 中文字幕码精品视频网站| 狠狠色丁香婷综合久久| 97人人干人人| 色中色在线视频| 国产女人水真多18毛片18精品视频 | 久久久另类综合| 色999五月色| 伦xxxx在线| 亚洲v日本v欧美v久久精品| 国产成人亚洲精品无码h在线| 你懂得影院夜精品a| 欧美丰满嫩嫩电影| 国产精品果冻传媒| 精品久久视频| 欧美富婆性猛交| 精品人妻一区二区三区潮喷在线| 精品影视av免费| 动漫美女被爆操久久久| 国产一级在线| 一区二区高清在线| mm1313亚洲国产精品无码试看| 国产在线|日韩| 日韩欧美国产综合| 一区二区三区四区免费| 欧美成人首页| 国产ts人妖一区二区三区| 一级全黄少妇性色生活片| 成人少妇影院yyyy| 夜夜爽99久久国产综合精品女不卡 | 久久久免费观看视频| 少妇高潮av久久久久久| 国产精品一区2区| 欧美一卡2卡3卡4卡无卡免费观看水多多 | 欧美成人毛片| 日韩精品中文字| 全网免费在线播放视频入口| 日韩精品一二三四| 99porn视频在线| 成人欧美亚洲| 性久久久久久久| 亚洲天堂一区二区在线观看| 蜜桃一区二区| 久久久久在线观看| 97成人在线观看| 久久你懂得1024| 国产一二三区在线播放| www.久久爱.com| 国产午夜精品一区理论片飘花| 国产无遮挡裸体免费视频| 久久国产人妖系列| 日韩精品一线二线三线| 18aaaa精品欧美大片h| 欧美一二三四区在线| 国产精品久久免费观看| 亚洲欧美日本视频在线观看| 国产精品视频免费一区| а√中文在线8| 欧美精品一级二级| 毛片aaaaaa| 久久这里有精品15一区二区三区| 激情视频在线观看一区二区三区| 性欧美ⅴideo另类hd| 欧美美女网站色| 国产又粗又猛又爽又黄的视频四季 | 日韩av一二三四区| 国产精品久久久网站| 欧美精品一区二区免费| 99热这里只有精品66| 亚洲男人天堂av| 亚洲综合伊人久久| 亚洲精品久久久| 92看片淫黄大片看国产片| 欧美一级二级三级区| 欧美日韩一区中文字幕| 999久久久国产| 蜜臀精品一区二区三区在线观看| 日韩国产在线一区| 国产情侣一区二区三区| 中文字幕无线精品亚洲乱码一区| 中文字幕免费播放| 中文字幕一区二区在线播放| 国产精品视频中文字幕| 色偷偷综合网| 91亚洲一区精品| 日本aa在线| 亚洲国产欧美一区二区三区同亚洲| 99免费在线观看| 91麻豆国产福利精品| 黑鬼大战白妞高潮喷白浆| 精品国产美女| 国产在线观看精品| 欧美黑人xx片| 日韩h在线观看| 无码人妻丰满熟妇奶水区码| 日本一区二区免费在线观看视频| 91看片破解版| 国产一区二区三区四区三区四| 成人av播放| 不卡一二三区| 日韩中文字幕网址| 亚洲AV无码一区二区三区少妇| 午夜欧美一区二区三区在线播放| 捆绑裸体绳奴bdsm亚洲| 久久久久久夜| 国产麻豆电影在线观看| 国产日韩三级| 国产精品老女人视频| 黄色在线论坛| 亚洲精品99999| 四虎影院在线免费播放| 亚洲色图在线播放| 国产伦精品一区三区精东| 丝袜诱惑亚洲看片 | 亚洲国产高清一区二区三区| 久久久久综合一区二区三区| 成人免费毛片嘿嘿连载视频…| 久久精品视频网站| 性xxxx搡xxxxx搡欧美| 欧美性生活久久| 免费在线观看黄视频| 久久久久亚洲综合| 精品人妻二区中文字幕| 三级影片在线观看欧美日韩一区二区| 在线视频不卡一区二区| 日本午夜精品| 亚洲综合成人婷婷小说| 国产精欧美一区二区三区蓝颜男同| 深夜福利亚洲导航| 天堂中文在线资| 欧美一级xxx| 奴色虐av一区二区三区| 一区二区三区产品免费精品久久75 | 国产精品视频首页| 日韩av免费看网站| 黄污视频在线观看| 色妞色视频一区二区三区四区| 少妇av一区二区| 69堂国产成人免费视频| 国产91国语对白在线| 一区二区三区中文字幕精品精品| 级毛片内射视频| av高清久久久| 涩视频在线观看| 国产呦萝稀缺另类资源| 男人的天堂日韩| 亚洲一区日韩| 久久综合久久网| 欧美日本免费| 欧美三级午夜理伦三级老人| 成人直播大秀| 欧美一区国产一区| 日本午夜精品久久久| 国产精品日韩一区二区免费视频| 精品麻豆剧传媒av国产九九九| 国产精品成人观看视频国产奇米| 182在线播放| 欧美大片在线影院| а√天堂官网中文在线| 久久视频在线播放| 幼a在线观看| 中文字幕无线精品亚洲乱码一区| 精品av中文字幕在线毛片| 亚洲精品久久久久久久久久久 | 欧美一级做一级爱a做片性| 国产ts人妖一区二区三区| 日本综合字幕| 国产成人精品久久久| 精品国产免费人成网站| 欧美一级高清免费| 在线天堂新版最新版在线8| 97精品久久久| 24小时免费看片在线观看| 久久免费视频在线观看| 国产亚av手机在线观看| 久久久中精品2020中文| 国产精品一品| 97在线观看视频| 亚洲精品一区| 国产精品成人一区| 国产精品伦一区二区| 国产精选久久久久久| 亚洲青青一区| 99在线热播| 久久a爱视频| 日本不卡二区高清三区| 欧美日韩色图| 免费成人深夜夜行网站视频| 欧美三级小说| 美女日批免费视频| 日日夜夜免费精品| 日本一二区免费| 粉嫩高潮美女一区二区三区| 久久久久亚洲AV成人无码国产| 久久综合九色综合欧美就去吻| 一区二区伦理片| 中文字幕一区二区日韩精品绯色| 午夜精品一区二区三区视频| 亚洲国产人成综合网站| 天天操夜夜操视频| 欧美三级电影在线观看| jizz中国少妇| 亚洲激情视频网站| jizz在线观看| 欧美精品电影在线| 高清电影一区| 97久草视频| 国产一区二区三区网| 天天成人综合网| 亚洲高清毛片| 小泽玛利亚视频在线观看| 国产成人av福利| 国产精品亚洲无码| 亚洲人吸女人奶水| 中文字幕在线字幕中文| 欧美综合一区二区三区| 精品人妻午夜一区二区三区四区| 亚洲精品久久在线| 嫩草在线视频| 欧美中文在线观看国产| 亚洲视频自拍| 麻豆传媒一区| 欧美激情第10页| 香蕉视频禁止18| 97精品超碰一区二区三区| 欧美性猛交xxxx乱大交少妇| 天天色天天操综合| 国产精品特级毛片一区二区三区| 日韩av网址在线| 国内精品久久久久久野外| 日本精品一区二区三区在线播放视频 | 国产一区二区三区四区五区六区 | 免费精品一区| 日韩久久在线| 亚洲综合国产激情另类一区| 五月天开心婷婷| 国产日韩欧美一区二区三区综合| 免费在线视频观看| 在线播放91灌醉迷j高跟美女| 日韩a在线看| 久久久之久亚州精品露出| а天堂中文最新一区二区三区| 欧美一级日本a级v片| 亚洲国产免费看| 永久免费看片在线观看| 国产精品网站导航| 日韩在线视频不卡| 日韩大片在线观看视频| 免费在线观看的电影网站| 国产日韩欧美夫妻视频在线观看| 婷婷成人在线| 2018国产在线| 成人免费毛片高清视频| 极品魔鬼身材女神啪啪精品| 欧美日韩免费一区二区三区视频| 亚洲av成人无码久久精品老人| 欧美xxxx18性欧美| av在线成人| 日韩不卡一二区| 激情文学综合插| 国产高清在线精品| 国产91精品视频在线观看| 精品无码人妻少妇久久久久久| 国产精品超碰| 亚洲国产高潮在线观看| 西西444www无码大胆| av影片在线一区| 色偷偷av一区二区三区乱| 国产免费久久久久| 粉嫩一区二区三区四区公司1| 亚洲欧洲在线观看av| 亚洲中文字幕一区| 一级精品视频在线观看宜春院| 日本中文字幕在线观看视频| 亚洲美女在线观看| 亚洲精品中文字幕| 欧美高清性xxxxhdvideosex| 中文一区在线| 大黑人交xxx极品hd| 日韩欧美成人免费视频| 日韩av视屏| 国产精品91久久久| 久久综合国产| 最好看的中文字幕| 亚洲午夜日本在线观看| 黄色av网址在线| 国产91|九色| 精品国产一级毛片| 青青草久久伊人| 亚洲一区二区不卡免费| 日韩中文字幕免费在线观看| 57pao成人永久免费视频| 久久成人av| 99久久99精品| 亚洲第一福利一区| 日韩欧美电影在线观看| 国产精品免费一区豆花| 91精品国产成人观看| jjzz黄色片| 色综合久久久久综合体桃花网| 国产大学生校花援交在线播放| 国产专区精品视频| 国产精品大片| 欧美特黄一区二区三区| 欧美日本一区二区| 国产蜜臀一区二区打屁股调教| 麻豆成人小视频| 精品综合免费视频观看| 国产亚洲精品久久久久久打不开| 日韩av在线一区| 免费一区二区三区四区| 久久男人资源站| 久久久久久久久久美女| 国产精品久久婷婷| 国产91精品久久久久久| 97久久夜色精品国产| 午夜剧场免费看| 欧美日韩综合色| а√天堂8资源在线| 亚洲国产高清国产精品| 成人丝袜18视频在线观看| 在线观看国产一区二区三区| 国内精品久久久久| 色喇叭免费久久综合网| 国产国语性生话播放| 日韩视频永久免费| 91精品影视| 国产特级淫片高清视频| 综合在线观看色|