精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

一区二区视频在线免费观看| 无码成人精品区在线观看| 91在线网址| 国产一区二区精品久久| 97高清免费视频| 国产探花视频在线播放| 日韩精品一区二区三区免费视频| 性感美女极品91精品| 欧美国产综合视频| 国产黄色美女视频| 青青草国产精品97视觉盛宴| 欧美国产日韩中文字幕在线| xxxx日本黄色| 99精品中文字幕在线不卡| 欧美大胆的人体xxxx| 天天天综合网| 亚洲精品有码在线| 亚洲午夜精品在线观看| 成人在线爆射| 亚洲第一主播视频| 在线免费一区| 国产网站在线播放| 成人av一区二区三区| 国产日韩在线视频| a级黄色片免费看| 成人av动漫在线观看| 亚洲高清色综合| 日韩久久久久久久久久久| 天天综合网站| 欧美日韩中文在线| 国产一区二区三区小说| 成人看av片| 国产精品拍天天在线| 免费影院在线观看一区| 亚洲第一视频在线| 激情五月婷婷综合| 国产精品私拍pans大尺度在线| 日本污视频在线观看| 欧美日韩a区| 久久av在线播放| 国产成人免费在线观看视频| 国产免费av一区二区三区| 亚洲国产高潮在线观看| 韩国av中国字幕| 一区三区自拍| 精品国产一区二区三区忘忧草| 成人黄色一级大片| 欧美成人三级| 欧美精品久久久久久久多人混战 | 国产三级精品网站| 欧美一区二区三区网站| 国产欧美综合一区二区三区| 国内精久久久久久久久久人| 免费视频网站www| 欧美精品国产一区二区| 欧美丰满少妇xxxxx做受| 极品久久久久久| 欧美久久一区| 欧美丰满少妇xxxx| 国产精品自拍视频一区| 亚洲国产激情| 欧洲精品久久久| 9i精品福利一区二区三区| 久久精品九九| 国产精品男人的天堂| 一级黄色短视频| 国产一区二区在线电影| yellow视频在线观看一区二区| 性做久久久久久久| 成人免费视频视频在线观看免费| 国产一区二区三区四区五区在线 | 午夜久久久久久噜噜噜噜| 国产成人av影院| 国内一区二区三区在线视频| 免费理论片在线观看播放老| 久久精品免费在线观看| 一区二区三区四区五区精品 | 国产精品一区高清| www.日本久久久久com.| 国产性xxxx| 国产人成精品一区二区三| 国产精品大陆在线观看| ,一级淫片a看免费| 国产成人精品1024| 欧美动漫一区二区| 日本高清视频在线观看| 一区二区三区四区高清精品免费观看 | 亚洲高清影视| 91成人精品网站| 中文字幕有码视频| 成人性色生活片免费看爆迷你毛片| 韩国成人一区| 日本在线免费中文字幕| 亚洲福利一二三区| 国产高清视频网站| 99精品国产一区二区三区2021 | 日韩一区精品字幕| 91美女片黄在线观| 手机亚洲第一页| 亚洲欧美日韩一区二区三区在线观看| 霍思燕三级露全乳照| 国产成人a视频高清在线观看| 欧美videos中文字幕| 亚洲国产日韩一区无码精品久久久| 午夜日韩福利| 国产精品福利无圣光在线一区| www日本高清视频| 国产精品免费久久| 97国产在线播放| 日韩中文字幕视频网| 影音先锋欧美精品| 欧美成人精品欧美一级乱黄| 精品一区中文字幕| 欧美视频1区| av电影在线地址| 91精品国产91久久久久久一区二区 | 国语自产精品视频在免费| 亚洲视频在线观看一区二区| 99国产精品久久久久久久久久 | 新狼窝色av性久久久久久| 91久久久久久久久久久久久| 国产小视频免费在线网址| 亚洲电影一区二区| 日本在线视频播放| 五月久久久综合一区二区小说| 日韩av免费网站| 欧美一区二区三区黄片 | 日韩精品国产一区二区| 国产精品一二三四五| 亚洲欧洲日韩精品| 3d欧美精品动漫xxxx无尽| 亚洲精品ady| 亚洲一区二区91| 国产福利一区二区三区| 亚洲免费av网| 九九九精品视频| 国产一区二区黄| 欧美一区二区三区网站| 久久久亚洲精品石原莉奈| 女人天堂av手机在线| 嗯用力啊快一点好舒服小柔久久| 欧美成人亚洲成人| aaaa一级片| 亚洲欧美另类小说| 久久婷婷中文字幕| 91综合在线| 成人天堂噜噜噜| 成人三级网址| 欧美大片一区二区| 精品一区在线视频| 成人毛片在线观看| 人妻少妇精品无码专区二区 | 日韩电影中文字幕一区| 九九热在线免费观看| 99re热这里只有精品免费视频 | 久久久www成人免费毛片| 国产一区二区看久久| 无码人妻精品一区二区蜜桃百度| 视频一区国产| 国内外成人免费激情在线视频网站 | 国产原创一区二区三区| 成年人三级视频| 91精品国产乱码久久久竹菊| 久久免费精品日本久久中文字幕| 天堂成人在线视频| 色哟哟亚洲精品| 亚洲图片第一页| 韩国视频一区二区| 欧美黑人在线观看| 欧美深夜视频| 国产精品久久久久99| 秋霞a级毛片在线看| 制服丝袜av成人在线看| 国产主播在线观看| 国产亚洲精品超碰| 成人黄色一级大片| 亚洲黄色免费| 日韩精品一线二线三线| 亚洲aⅴ网站| 久久久久久久久久久亚洲| 飘雪影视在线观看免费观看| 欧美伊人精品成人久久综合97| 精品在线观看一区| 成人av午夜影院| 久久久精品麻豆| 亚洲欧美亚洲| 日韩不卡av| 日本又骚又刺激的视频在线观看| 最新中文字幕一区二区三区 | 丝袜美腿诱惑一区二区三区| 丝袜亚洲另类欧美重口| av网站免费播放| 色综合久久久网| 可以直接看的黄色网址| 91麻豆精东视频| 精品国产鲁一鲁一区二区三区| 激情综合中文娱乐网| 日韩伦理一区二区三区av在线| 国产激情一区| 国产mv免费观看入口亚洲| 中文字幕资源网在线观看| 亚洲欧美日韩精品| 精品人妻一区二区三区麻豆91| 色94色欧美sute亚洲线路一久 | 亚洲精品伦理| 欧美极品少妇xxxxⅹ喷水| 激情在线视频| 精品福利在线导航| 一卡二卡三卡在线观看| 欧美日韩视频免费播放| 国产精品白嫩白嫩大学美女| 国产亚洲综合av| 在线天堂www在线国语对白| 久久国产人妖系列| 日韩a在线播放| 国语精品一区| 天天爱天天做天天操| 国产99久久| 国产一区二区三区高清视频| 久久99成人| 国产欧美日韩精品丝袜高跟鞋| 亚洲免费福利| 97精品视频在线播放| 成人video亚洲精品| 中文字幕日韩综合av| 欧美白人做受xxxx视频| 亚洲国产精品va在线| www.av网站| 欧美一区二区免费视频| 伊人网站在线观看| 91福利小视频| 亚洲s码欧洲m码国产av| 精品美女国产在线| 国产无遮挡裸体免费视频| 一区二区日韩av| 精品99在线观看| 亚洲自拍偷拍av| 青春草免费视频| 亚洲精品一二三| 亚洲色婷婷一区二区三区| 亚洲欧美日韩久久| 国产精品99久久久久久成人| 国产精品素人视频| 亚洲天堂最新地址| 欧美激情一区二区三区不卡| 久久中文字幕精品| 国产欧美久久久精品影院| 受虐m奴xxx在线观看| 久久久99精品免费观看不卡| 中字幕一区二区三区乱码| 国产日韩欧美一区二区三区乱码| 国产美女免费无遮挡| 国产成人久久精品77777综合 | 成人在线视频亚洲| 成人在线一区二区三区| 亚洲视频在线观看一区二区三区| 久久亚洲视频| 国产高潮免费视频| 久久精品免费观看| 在线播放av中文字幕| 国产乱码精品1区2区3区| 人妻精油按摩bd高清中文字幕| 国产成人免费av在线| 国产+高潮+白浆+无码| 暴力调教一区二区三区| 中国黄色a级片| 国产欧美日韩另类视频免费观看| 纪美影视在线观看电视版使用方法| 国产精品免费视频一区| 少妇人妻丰满做爰xxx| 亚洲国产精品精华液网站| 韩国av中文字幕| 欧美偷拍一区二区| 国内毛片毛片毛片毛片| 亚洲国产天堂久久综合网| 毛片网站在线| y97精品国产97久久久久久| 色呦呦久久久| 欧美一级大片在线观看| 日韩城人网站| 3d蒂法精品啪啪一区二区免费| 岛国成人av| 午夜精品亚洲一区二区三区嫩草 | 国产又粗又猛又爽又黄的| 日韩精品中文字幕在线一区| 久久精品蜜桃| 久久99精品久久久久久噜噜| 中文字幕在线看片| 91精品国产综合久久久久久久久| 在线视频亚洲欧美中文| 欧美日韩精品免费观看视一区二区 | 国产一级二级毛片| 91久久免费观看| 国产草草影院ccyycom| 亚洲美女av在线播放| 粗大黑人巨茎大战欧美成人| 欧美一区亚洲一区| 精品一级视频| 日本精品一区二区三区视频 | 黄色高清无遮挡| 国产一区二区在线观看免费| 一色道久久88加勒比一| 亚洲在线视频网站| 国产日韩在线免费观看| 亚洲аv电影天堂网| 日韩毛片久久久| 91av在线精品| 日本亚洲视频| 亚洲国产日韩欧美| 翔田千里一区二区| 性高潮免费视频| 中文字幕在线观看不卡视频| 麻豆成人免费视频| 精品国产三级电影在线观看| 毛片av在线| 国产精品久久久999| 日韩av午夜| 日韩美女爱爱视频| 精品一区二区三区在线播放视频| 欧美亚一区二区三区| 亚洲一区免费视频| 国产一区二区视频免费观看| 亚洲图片在线综合| 二区三区不卡| 久久久久资源| 一本久久综合| 催眠调教后宫乱淫校园| 一区二区三区自拍| 国产又黄又粗又猛又爽| 中文字幕无线精品亚洲乱码一区 | 97天天综合网| 肥熟一91porny丨九色丨| 911精品美国片911久久久| 成年网站在线播放| 国产日韩成人精品| 日韩综合在线观看| 亚洲男女性事视频| 高清av不卡| 久久久久九九九| 一本色道久久精品| 国产高清成人久久| 污片在线观看一区二区| 神宫寺奈绪一区二区三区| 国外成人免费在线播放 | 国产99久久久精品| 久久久久国产精品夜夜夜夜夜| 日韩一区二区免费视频| а天堂中文在线官网| 亚洲在线视频观看| 精品91视频| 久久人人爽人人人人片| 激情成人中文字幕| 狠狠狠综合7777久夜色撩人| 国产成人精品av在线| 欧洲杯足球赛直播| 色天使在线观看| 尤物视频一区二区| 好吊色视频一区二区| 456亚洲影院| 国产一区二区三区网| 邪恶网站在线观看| 亚洲同性同志一二三专区| 国产av无码专区亚洲av| 久久久久久久久久久av| 欧美在线导航| 男女无套免费视频网站动漫| 中文字幕亚洲在| 亚洲国产精品一| 91大神福利视频在线| 精品美女视频| 免费不卡av网站| 性感美女极品91精品| 国产福利在线视频| 91亚洲精品一区| 亚洲美女啪啪| 国产传媒国产传媒| 欧美一区二区免费观在线| 538视频在线| 色综合影院在线观看| 国产高清在线观看免费不卡| 国产精品免费av一区二区| 一区二区三欧美| 777久久精品| 午夜视频在线瓜伦| 一区二区在线免费观看| 美女欧美视频在线观看免费 | 中文字幕在线观看91| 欧美色播在线播放| 蜜桃视频网站在线观看| 国产免费一区二区三区| 日本午夜一区二区| 国产一级一级片| 一区二区三区视频观看| 日韩精品成人在线观看| 日本一极黄色片| 亚州成人在线电影| 日本高清视频在线观看| 久久这里精品国产99丫e6| 国产在线视视频有精品| 五月婷婷激情视频|