{"id":306981,"date":"2020-07-15T15:01:03","date_gmt":"2020-07-15T15:01:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=306981"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=306981","title":{"rendered":"\u041e\u0431\u0437\u043e\u0440 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 Google BigQuery \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0434\u043b\u044f \u043c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433-\u0430\u043d\u0430\u043b\u0438\u0437\u0430"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/511086\/\"><a href=\"https:\/\/cloud.google.com\/bigquery\/\" rel=\"nofollow\">Google BigQuery<\/a> \u2013 \u044d\u0442\u043e \u0431\u044b\u0441\u0442\u0440\u043e\u0435, \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0447\u043d\u043e\u0435 \u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Big Data, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u043b\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u044b. \u0412 \u043d\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e SQL-like \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430, \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 (<a href=\"https:\/\/cloud.google.com\/bigquery\/docs\/reference\/standard-sql\/user-defined-functions\" rel=\"nofollow\">User-defined function<\/a>).<\/p>\n<p>  \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 BigQuery \u0438 \u043f\u043e\u043a\u0430\u0436\u0443 \u0438\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445. \u0412\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0438 \u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043d\u0430 demo \u0434\u0430\u043d\u043d\u044b\u0445. <a name=\"habracut\"><\/a><\/p>\n<h2>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 SQL \u0438 \u043a\u0430\u043a\u0438\u0435 \u0443 \u043d\u0435\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u044b<\/h2>\n<p>  SQL (Structured Query Language) \u2014 \u044f\u0437\u044b\u043a \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u0421 \u0435\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0432 \u0431\u0430\u0437\u0443 \u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0434\u0430\u043d\u043d\u044b\u0445. Google BigQuery \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0434\u0432\u0430 \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430: Standard SQL \u0438 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439 Legacy SQL.<\/p>\n<p>  \u041a\u0430\u043a\u043e\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442 \u0432\u044b\u0431\u0440\u0430\u0442\u044c, \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0432\u0430\u0448\u0438\u0445 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0435\u043d\u0438\u0439, \u043d\u043e Google \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Standard SQL \u0438\u0437-\u0437\u0430 \u0440\u044f\u0434\u0430 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432:  <\/p>\n<ul>\n<li>\u0413\u0438\u0431\u043a\u043e\u0441\u0442\u044c \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u043c\u0438\u0441\u044f \u043f\u043e\u043b\u044f\u043c\u0438.<\/li>\n<li>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u044f\u0437\u044b\u043a\u043e\u0432 <a href=\"https:\/\/cloud.google.com\/bigquery\/docs\/reference\/standard-sql\/data-manipulation-language\" rel=\"nofollow\">DML<\/a> \u0438 <a href=\"https:\/\/cloud.google.com\/bigquery\/docs\/reference\/standard-sql\/data-definition-language\" rel=\"nofollow\">DDL<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043c\u0435\u043d\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u0432 GBQ.<\/li>\n<li>\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043e\u0431\u044a\u0435\u043c\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435, \u0447\u0435\u043c \u0443 Legasy SQL.<\/li>\n<li>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0432\u0441\u0435\u0445 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u0438 \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0432 BigQuery.<\/li>\n<\/ul>\n<p>  \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u0440\u0430\u0437\u043d\u0438\u0446\u0435 \u043c\u0435\u0436\u0434\u0443 \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430\u043c\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0437\u043d\u0430\u0442\u044c \u0432 <a href=\"https:\/\/cloud.google.com\/bigquery\/docs\/reference\/standard-sql\/migrating-from-legacy-sql\" rel=\"nofollow\">\u0441\u043f\u0440\u0430\u0432\u043a\u0435<\/a>.<\/p>\n<p>  \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432 Google BigQuery \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u043d\u0430 Legacy SQL. <br \/>  \u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0430 Standard SQL \u043c\u043e\u0436\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438:  <\/p>\n<ol>\n<li>\u0412 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 BigQuery \u0432 \u043e\u043a\u043d\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u00abShow Options\u00bb \u0438 \u0441\u043d\u0438\u043c\u0438\u0442\u0435 \u0433\u0430\u043b\u043e\u0447\u043a\u0443 \u0432\u043e\u0437\u043b\u0435 \u043e\u043f\u0446\u0438\u0438 \u00abUse Legacy SQL\u00bb<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/pa\/ur\/lf\/paurlfa7wdppkj_n6kvpfabexz4.png\"><\/li>\n<li>\u041f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0443 #standardSQL \u0438 \u043d\u0430\u0447\u043d\u0438\u0442\u0435 \u0437\u0430\u043f\u0440\u043e\u0441 \u0441 \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/tj\/fb\/d6\/tjfbd6ffmv-aq9pc_nmmit9oxmc.png\"><\/li>\n<\/ol>\n<p>  <\/p>\n<h2>\u0421 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0430\u0442\u044c<\/h2>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0432\u044b \u0441\u043c\u043e\u0433\u043b\u0438 \u043f\u043e\u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0441 \u0447\u0442\u0435\u043d\u0438\u0435\u043c \u0441\u0442\u0430\u0442\u044c\u0438, \u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0430 \u0434\u043b\u044f \u0432\u0430\u0441 <a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1thb7iBuFobmnGvKMmsy-daBrnchn3_ra3GGJaaltd88\/edit?usp=sharing\" rel=\"nofollow\">\u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441 demo-\u0434\u0430\u043d\u043d\u044b\u043c\u0438<\/a>. \u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432 \u0432\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442 Google BigQuery.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0449\u0435 \u043d\u0435\u0442 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 GBQ, <a href=\"https:\/\/cloud.google.com\/bigquery\/docs\/quickstarts\/quickstart-web-ui#before-you-begin\" rel=\"nofollow\">\u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435<\/a> \u0435\u0433\u043e. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0431\u0438\u043b\u043b\u0438\u043d\u0433-\u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0432 <a href=\"https:\/\/cloud.google.com\/billing\/docs\/how-to\/manage-billing-account?visit_id=636776330112298770-3578127081&amp;rd=1\" rel=\"nofollow\">Google Cloud Platform<\/a>. \u041f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u0443, \u043d\u043e \u0431\u0435\u0437 \u0432\u0430\u0448\u0435\u0433\u043e \u0432\u0435\u0434\u043e\u043c\u0430 \u0434\u0435\u043d\u044c\u0433\u0438 \u0441 \u043d\u0435\u0435 \u0441\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0443\u0442, \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u043f\u0440\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 <a href=\"https:\/\/cloud.google.com\/free\/\" rel=\"nofollow\">300$ \u043d\u0430 12 \u043c\u0435\u0441\u044f\u0446\u0435\u0432<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0442\u044c \u043d\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<h3>\u0424\u0443\u043d\u043a\u0446\u0438\u0438 Google BigQuery<\/h3>\n<p>  \u041f\u0440\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0433\u0440\u0443\u043f\u043f\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0439: Aggregate function, Date function, String function \u0438 Window function. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445.<\/p>\n<h3>\u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 (Aggregate function)<\/h3>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0432\u043e\u0434\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0432\u0441\u0435\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0440\u0435\u0434\u043d\u0438\u0439 \u0447\u0435\u043a, \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u044b\u0439 \u0434\u043e\u0445\u043e\u0434 \u0437\u0430 \u043c\u0435\u0441\u044f\u0446 \u0438\u043b\u0438 \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u0432\u0448\u0438\u0445 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043a\u0443\u043f\u043e\u043a.<\/p>\n<p>  \u0412\u043e\u0442 \u0441\u0430\u043c\u044b\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0430:  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<tbody>\n<tr>\n<th>Legacy SQL<\/th>\n<th>Standard SQL<\/th>\n<th>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f<\/th>\n<\/tr>\n<tr>\n<td>AVG(field)<\/td>\n<td>AVG([DISTINCT] (field))<\/td>\n<td>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 field.\u0412 Standard SQL \u043f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f DISTINCT \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0441\u0442\u0440\u043e\u043a \u0441 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c\u0438 (\u043d\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u043c\u0438\u0441\u044f) \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0438\u0437 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 field<\/td>\n<\/tr>\n<tr>\n<td>MAX(field)<\/td>\n<td>MAX(field)<\/td>\n<td>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 field<\/td>\n<\/tr>\n<tr>\n<td>MIN(field)<\/td>\n<td>MIN(field)<\/td>\n<td>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 field<\/td>\n<\/tr>\n<tr>\n<td>SUM(field)<\/td>\n<td>SUM(field)<\/td>\n<td>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0443\u043c\u043c\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438\u0437 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 field<\/td>\n<\/tr>\n<tr>\n<td>COUNT(field)<\/td>\n<td>COUNT(field)<\/td>\n<td>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u043e\u043a \u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u0435 field<\/td>\n<\/tr>\n<tr>\n<td>EXACT_COUNT_DISTINCT(field)<\/td>\n<td>COUNT([DISTINCT] (field))<\/td>\n<td>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a \u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u0435 field<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  \u0421 \u043f\u0435\u0440\u0435\u0447\u043d\u0435\u043c \u0432\u0441\u0435\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0432 \u0441\u043f\u0440\u0430\u0432\u043a\u0435: <a href=\"https:\/\/cloud.google.com\/bigquery\/docs\/reference\/legacy-sql#syntax-aggfunctions\" rel=\"nofollow\">Legacy SQL<\/a> \u0438 <a href=\"https:\/\/cloud.google.com\/bigquery\/docs\/reference\/standard-sql\/aggregate_functions\" rel=\"nofollow\">Standard SQL<\/a>.<\/p>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 demo \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0412\u044b\u0447\u0438\u0441\u043b\u0438\u043c \u0441\u0440\u0435\u0434\u043d\u0438\u0439 \u0434\u043e\u0445\u043e\u0434 \u043f\u043e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u043c, \u043f\u043e\u043a\u0443\u043f\u043a\u0438 \u0441 \u043d\u0430\u0438\u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0438 \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0435\u0439 \u0441\u0443\u043c\u043c\u043e\u0439, \u043e\u0431\u0449\u0438\u0439 \u0434\u043e\u0445\u043e\u0434 \u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0441\u0435\u0445 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439. \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u043d\u0435 \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043b\u0438 \u043f\u043e\u043a\u0443\u043f\u043a\u0438, \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0442\u0430\u043a\u0436\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0438\u0448\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0432\u043e\u0435\u0433\u043e Google BigQuery \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043d\u0430\u0431\u043e\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b.<\/p>\n<p>  <b>#legasy SQL<\/b>  <\/p>\n<pre><code class=\"sql\">SELECT   AVG(revenue) as average_revenue,   MAX(revenue) as max_revenue,   MIN(revenue) as min_revenue,   SUM(revenue) as whole_revenue,   COUNT(transactionId) as transactions,   EXACT_COUNT_DISTINCT(transactionId) as unique_transactions FROM   [owox-analytics:t_kravchenko.Demo_data]<\/code><\/pre>\n<p>  <b>#standard SQL<\/b>  <\/p>\n<pre><code class=\"sql\">SELECT   AVG(revenue) as average_revenue,   MAX(revenue) as max_revenue,   MIN(revenue) as min_revenue,   SUM(revenue) as whole_revenue,   COUNT(transactionId) as transactions,   COUNT(DISTINCT(transactionId)) as unique_transactions FROM   `owox-analytics.t_kravchenko.Demo_data`<\/code><\/pre>\n<p>  \u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0430\u043a\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/g5\/kb\/bx\/g5kbbxisijccbevujzex_mnn5qw.png\"><br \/>  \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0440\u0430\u0441\u0447\u0435\u0442\u043e\u0432 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0441 demo \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Google Sheets (SUM, AVG \u0438 \u0434\u0440\u0443\u0433\u0438\u0435) \u0438\u043b\u0438 \u0441\u0432\u043e\u0434\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b.<\/p>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u043c \u0438\u0437 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0430 \u0432\u044b\u0448\u0435, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u0438 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f. \u042d\u0442\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u043d\u0430\u0448\u0435\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0435\u0441\u0442\u044c 2 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f transactionId:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/jj\/jy\/ny\/jjjyny96nazio2mxahxzzi4gqwa.png\"><\/p>\n<p>  \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u0432\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438. \u041b\u0438\u0431\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f GROUP BY, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u0434\u0443\u0431\u043b\u0435\u0439 \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u0438.<\/p>\n<h3>\u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0434\u0430\u0442\u0430\u043c\u0438 (Date function)<\/h3>\n<p>  \u042d\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u0442\u044b: \u043c\u0435\u043d\u044f\u0442\u044c \u0438\u0445 \u0444\u043e\u0440\u043c\u0430\u0442, \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0447\u0430\u0441\u0442\u044c (\u0434\u0435\u043d\u044c, \u043c\u0435\u0441\u044f\u0446 \u0438\u043b\u0438 \u0433\u043e\u0434), \u0441\u043c\u0435\u0449\u0430\u0442\u044c \u0434\u0430\u0442\u0443 \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b.<\/p>\n<p>  \u041e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0432\u0430\u043c \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445:  <\/p>\n<ul>\n<li>\u041f\u0440\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0441\u043a\u0432\u043e\u0437\u043d\u043e\u0439 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0438 \u2014 \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0434\u0430\u0442\u044b \u0438 \u0432\u0440\u0435\u043c\u044f \u0438\u0437 \u0440\u0430\u0437\u043d\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u043a \u0435\u0434\u0438\u043d\u043e\u043c\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u0443.<\/li>\n<li>\u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c\u044b\u0445 \u043e\u0442\u0447\u0435\u0442\u043e\u0432 \u0438\u043b\u0438 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043d\u044b\u0445 \u0440\u0430\u0441\u0441\u044b\u043b\u043e\u043a. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u044b \u0434\u0430\u043d\u043d\u044b\u0435 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 2 \u0447\u0430\u0441\u0430, \u043d\u0435\u0434\u0435\u043b\u044e \u0438\u043b\u0438 \u043c\u0435\u0441\u044f\u0446.<\/li>\n<li>\u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043e\u0433\u043e\u0440\u0442\u043d\u044b\u0445 \u043e\u0442\u0447\u0435\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0440\u0430\u0437\u0440\u0435\u0437\u0435 \u0434\u043d\u0435\u0439, \u043d\u0435\u0434\u0435\u043b\u044c, \u043c\u0435\u0441\u044f\u0446\u0435\u0432.<\/li>\n<\/ul>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0434\u0430\u0442\u0430\u043c\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e:<\/p>\n<div class=\"scrollable-table\">\n<table>\n<tbody>\n<tr>\n<th>Legacy SQL<\/th>\n<th>Standard SQL<\/th>\n<th>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f<\/th>\n<\/tr>\n<tr>\n<td>CURRENT_DATE()<\/td>\n<td>CURRENT_DATE()<\/td>\n<td>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0434\u0430\u0442\u0443 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 %\u0413\u0413\u0413\u0413-%\u041c\u041c-%\u0414\u0414<\/td>\n<\/tr>\n<tr>\n<td>DATE(timestamp)<\/td>\n<td>DATE(timestamp)<\/td>\n<td>\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0434\u0430\u0442\u0443 \u0438\u0437 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 %\u0413\u0413\u0413\u0413-%\u041c\u041c-%\u0414\u0414 %\u0427:%M:%\u0421. \u0432 \u0444\u043e\u0440\u043c\u0430\u0442 %\u0413\u0413\u0413\u0413-%\u041c\u041c-%\u0414\u0414<\/td>\n<\/tr>\n<tr>\n<td>DATE_ADD(timestamp, interval, interval_units)<\/td>\n<td>DATE_ADD(timestamp, INTERVAL interval interval_units)<\/td>\n<td>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0434\u0430\u0442\u0443 timestamp, \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044f \u0435\u0435 \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b interval.interval_units.<br \/>  \u0412 Legacy SQL \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f YEAR, MONTH, DAY, HOUR, MINUTE \u0438 SECOND, \u0430 \u0432 Standard SQL \u2014 YEAR, QUARTER, MONTH, WEEK, DAY  <\/td>\n<\/tr>\n<tr>\n<td>DATE_ADD(timestamp, \u2014 interval, interval_units)<\/td>\n<td>DATE_SUB(timestamp, INTERVAL interval interval_units)<\/td>\n<td>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0434\u0430\u0442\u0443 timestamp, \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u044f \u0435\u0435 \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b interval<\/td>\n<\/tr>\n<tr>\n<td>DATEDIFF(timestamp1, timestamp2)<\/td>\n<td>DATE_DIFF(timestamp1, timestamp2, date_part)<\/td>\n<td>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0434\u0430\u0442\u0430\u043c\u0438 timestamp1 \u0438 timestamp2.<br \/>  \u0412 Legacy SQL \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u0432 \u0434\u043d\u044f\u0445, \u0430 \u0432 Standard SQL \u2014 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f date_part (\u0434\u0435\u043d\u044c, \u043d\u0435\u0434\u0435\u043b\u044f, \u043c\u0435\u0441\u044f\u0446, \u043a\u0432\u0430\u0440\u0442\u0430\u043b, \u0433\u043e\u0434)<\/td>\n<\/tr>\n<tr>\n<td>DAY(timestamp)<\/td>\n<td>EXTRACT(DAY FROM timestamp)<\/td>\n<td>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0434\u0435\u043d\u044c \u0438\u0437 \u0434\u0430\u0442\u044b timestamp. \u041f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0442 1 \u0434\u043e 31 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e<\/td>\n<\/tr>\n<tr>\n<td>MONTH(timestamp)<\/td>\n<td>EXTRACT(MONTH FROM timestamp)<\/td>\n<td>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u043c\u0435\u0441\u044f\u0446\u0430 \u0438\u0437 \u0434\u0430\u0442\u044b timestamp. \u041f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0442 1 \u0434\u043e 12 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e<\/td>\n<\/tr>\n<tr>\n<td>YEAR(timestamp)<\/td>\n<td>EXTRACT(YEAR FROM timestamp)<\/td>\n<td>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0433\u043e\u0434 \u0438\u0437 \u0434\u0430\u0442\u044b timestamp<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  \u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u2013 \u0432 \u0441\u043f\u0440\u0430\u0432\u043a\u0435: <a href=\"https:\/\/cloud.google.com\/bigquery\/docs\/reference\/legacy-sql#datetimefunctions\" rel=\"nofollow\">Legacy SQL<\/a> \u0438 <a href=\"https:\/\/cloud.google.com\/bigquery\/docs\/reference\/standard-sql\/date_functions\" rel=\"nofollow\">Standard SQL<\/a>.<\/p>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 demo \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0434\u0430\u0442\u0443, \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043c \u0434\u0430\u0442\u0443 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432 \u0444\u043e\u0440\u043c\u0430\u0442 %\u0413\u0413\u0413\u0413-%\u041c\u041c-%\u0414\u0414, \u043e\u0442\u043d\u0438\u043c\u0435\u043c \u0438 \u043f\u0440\u0438\u0431\u0430\u0432\u0438\u043c \u043a \u043d\u0435\u0439 \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0434\u043d\u044e. \u0417\u0430\u0442\u0435\u043c \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0434\u0430\u0442\u043e\u0439 \u0438 \u0434\u0430\u0442\u043e\u0439 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438 \u0440\u0430\u0437\u043e\u0431\u044c\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0434\u0430\u0442\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043d\u0430 \u0433\u043e\u0434, \u043c\u0435\u0441\u044f\u0446 \u0438 \u0434\u0435\u043d\u044c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0438\u0436\u0435 \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432 \u043d\u0438\u0445 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043d\u0430\u0431\u043e\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043d\u0430 \u0441\u0432\u043e\u0438.<\/p>\n<p>  <b>#legasy SQL<\/b>  <\/p>\n<pre><code class=\"sql\">SELECT     CURRENT_DATE() AS today,     DATE( date_UTC ) AS date_UTC_in_YYYYMMDD,     DATE_ADD( date_UTC,1, 'DAY') AS date_UTC_plus_one_day,     DATE_ADD( date_UTC,-1, 'DAY') AS date_UTC_minus_one_day,     DATEDIFF(CURRENT_DATE(), date_UTC ) AS difference_between_date,     DAY( CURRENT_DATE() ) AS the_day,     MONTH( CURRENT_DATE()) AS the_month,     YEAR( CURRENT_DATE()) AS the_year   FROM     [owox-analytics:t_kravchenko.Demo_data] <\/code><\/pre>\n<p>  <b>#standard SQL<\/b>  <\/p>\n<pre><code class=\"sql\">SELECT   today,   date_UTC_in_YYYYMMDD,   DATE_ADD( date_UTC_in_YYYYMMDD, INTERVAL 1 DAY) AS date_UTC_plus_one_day,   DATE_SUB( date_UTC_in_YYYYMMDD,INTERVAL 1 DAY) AS date_UTC_minus_one_day,   DATE_DIFF(today, date_UTC_in_YYYYMMDD, DAY) AS difference_between_date,   EXTRACT(DAY FROM today ) AS the_day,   EXTRACT(MONTH FROM today ) AS the_month,   EXTRACT(YEAR FROM today ) AS the_year FROM (   SELECT     CURRENT_DATE() AS today,     DATE( date_UTC ) AS date_UTC_in_YYYYMMDD   FROM     `owox-analytics.t_kravchenko.Demo_data`) <\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u043e\u0442\u0447\u0435\u0442:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yb\/m9\/q7\/ybm9q7jsyaqk1r5oegvmsc71lgy.png\"><\/p>\n<h3>\u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 (String function)<\/h3>\n<p>  \u0421\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443, \u0432\u044b\u0434\u0435\u043b\u044f\u0442\u044c \u0438 \u0437\u0430\u043c\u0435\u043d\u044f\u0442\u044c \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0438, \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0434\u043b\u0438\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435. <\/p>\n<p>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 \u0438\u0445 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0436\u043d\u043e:  <\/p>\n<ul>\n<li>\u0421\u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u043e\u0442\u0447\u0435\u0442\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u043f\u043e UTM-\u043c\u0435\u0442\u043a\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432 URL \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.<\/li>\n<li>\u041f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043a \u0435\u0434\u0438\u043d\u043e\u043c\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u0443, \u0435\u0441\u043b\u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0438 \u043a\u0430\u043c\u043f\u0430\u043d\u0438\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0445.<\/li>\n<li>\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043e\u0442\u0447\u0435\u0442\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043a\u0430\u043c\u043f\u0430\u043d\u0438\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u043b\u043e\u0441\u044c \u0441 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u043e\u0439.<\/li>\n<\/ul>\n<p>  \u0421\u0430\u043c\u044b\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438:  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<tbody>\n<tr>\n<th>Legacy SQL<\/th>\n<th>Standard SQL<\/th>\n<th>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f<\/th>\n<\/tr>\n<tr>\n<td>CONCAT(&#8216;str1&#8217;, &#8216;str2&#8217;) \u0438\u043b\u0438&#8217;str1&#8217;+ &#8216;str2&#8217;<\/td>\n<td>CONCAT(&#8216;str1&#8217;, &#8216;str2&#8217;)<\/td>\n<td>\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a &#8216;str1&#8217; \u0438 &#8216;str2&#8217; \u0432 \u043e\u0434\u043d\u0443<\/td>\n<\/tr>\n<tr>\n<td>&#8216;str1&#8217; CONTAINS &#8216;str2&#8217;<\/td>\n<td>REGEXP_CONTAINS(&#8216;str1&#8217;, &#8216;str2&#8217;) \u0438\u043b\u0438 &#8216;str1&#8217; LIKE \u2018%str2%\u2019<\/td>\n<td>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true \u0435\u0441\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0430 &#8216;str1&#8217; \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u2018str2\u2019. <br \/>  \u0412 Standard SQL \u0441\u0442\u0440\u043e\u043a\u0430 \u2018str2\u2019 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 <a href=\"https:\/\/github.com\/google\/re2\/wiki\/Syntax\" rel=\"nofollow\">re2<\/a><\/td>\n<\/tr>\n<tr>\n<td>LENGTH(&#8216;str&#8217; )<\/td>\n<td>CHAR_LENGTH(&#8216;str&#8217; ) <br \/>  \u0438\u043b\u0438 CHARACTER_LENGTH(&#8216;str&#8217; )<\/td>\n<td>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0434\u043b\u0438\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0438 &#8216;str&#8217; (\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435)<\/td>\n<\/tr>\n<tr>\n<td>SUBSTR(&#8216;str&#8217;, index [, max_len])<\/td>\n<td>SUBSTR(&#8216;str&#8217;, index [, max_len])<\/td>\n<td>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0443 \u0434\u043b\u0438\u043d\u043e\u0439 max_len, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0441 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c index \u0438\u0437 \u0441\u0442\u0440\u043e\u043a\u0438 &#8216;str&#8217;<\/td>\n<\/tr>\n<tr>\n<td>LOWER(&#8216;str&#8217;)<\/td>\n<td>LOWER(&#8216;str&#8217;)<\/td>\n<td>\u041f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u0432\u0441\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0441\u0442\u0440\u043e\u043a\u0438 &#8216;str&#8217; \u043a \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0443<\/td>\n<\/tr>\n<tr>\n<td>UPPER(str)<\/td>\n<td>UPPER(str)<\/td>\n<td>\u041f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u0432\u0441\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0441\u0442\u0440\u043e\u043a\u0438 &#8216;str&#8217; \u043a \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0443<\/td>\n<\/tr>\n<tr>\n<td>INSTR(&#8216;str1&#8217;, &#8216;str2&#8217;)<\/td>\n<td>STRPOS(&#8216;str1&#8217;, &#8216;str2&#8217;)<\/td>\n<td>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u043d\u0434\u0435\u043a\u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a\u0438 &#8216;str2&#8217; \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 &#8216;str1&#8217;, \u0438\u043d\u0430\u0447\u0435 \u2014 0<\/td>\n<\/tr>\n<tr>\n<td>REPLACE(&#8216;str1&#8217;, &#8216;str2&#8217;, &#8216;str3&#8217;)<\/td>\n<td>REPLACE(&#8216;str1&#8217;, &#8216;str2&#8217;, &#8216;str3&#8217;)<\/td>\n<td>\u0417\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 &#8216;str1&#8217; \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0443 &#8216;str2&#8217; \u043d\u0430 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0443 &#8216;str3&#8217;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  \u0414\u0435\u0442\u0430\u043b\u044c\u043d\u0435\u0435 \u2013 \u0432 \u0441\u043f\u0440\u0430\u0432\u043a\u0435: <a href=\"https:\/\/cloud.google.com\/bigquery\/docs\/reference\/legacy-sql#stringfunctions\" rel=\"nofollow\">Legacy SQL<\/a> \u0438 <a href=\"https:\/\/cloud.google.com\/bigquery\/docs\/reference\/standard-sql\/string_functions\" rel=\"nofollow\">Standard SQL<\/a>.<\/p>\n<p>  \u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 demo \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c 3 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043d\u044f, \u043c\u0435\u0441\u044f\u0446\u0430 \u0438 \u0433\u043e\u0434\u0430:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/z9\/n-\/mi\/z9n-migahts2aqnc-ta6bsxmdp0.png\"><br \/>  \u0420\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0434\u0430\u0442\u043e\u0439 \u0432 \u0442\u0430\u043a\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u043c \u0435\u0435 \u0432 \u043e\u0434\u0438\u043d \u0441\u0442\u043e\u043b\u0431\u0435\u0446. \u0427\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u043d\u0438\u0436\u0435, \u0438 \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u043d\u0438\u0445 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043d\u0430\u0431\u043e\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432 Google BigQuery.<\/p>\n<p>  <b>#legasy SQL<\/b>  <\/p>\n<pre><code class=\"sql\">SELECT   CONCAT(the_day,'-',the_month,'-',the_year) AS mix_string1,   the_day+'-'+the_month+'-'+the_year AS mix_string2 FROM (   SELECT     '31' AS the_day,     '12' AS the_month,     '2018' AS the_year   FROM     [owox-analytics:t_kravchenko.Demo_data]) GROUP BY   mix_string1,   mix_string2 <\/code><\/pre>\n<p>  <b>#standard SQL<\/b>  <\/p>\n<pre><code class=\"sql\">SELECT   CONCAT(the_day,'-',the_month,'-',the_year) AS mix_string1 FROM (   SELECT     '31' AS the_day,     '12' AS the_month,     '2018' AS the_year   FROM     `owox-analytics.t_kravchenko.Demo_data`) GROUP BY   mix_string1 <\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0434\u0430\u0442\u0443 \u0432 \u043e\u0434\u043d\u043e\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0435:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/nl\/40\/k-\/nl40k-ynl0_milt0yghzmz6qbtw.png\"><\/p>\n<p>  \u0427\u0430\u0441\u0442\u043e \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u0432 URL \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u0431\u0440\u0430\u043b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u043f\u043b\u0430\u0442\u044b \u0438\u043b\u0438 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438, \u043d\u043e\u043c\u0435\u0440 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438, \u0438\u043d\u0434\u0435\u043a\u0441 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u043a\u0443\u043f\u0430\u0442\u0435\u043b\u044c \u0445\u043e\u0447\u0435\u0442 \u0437\u0430\u0431\u0440\u0430\u0442\u044c \u0442\u043e\u0432\u0430\u0440 \u0438 \u0442. \u0434. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u044d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0437 \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. <\/p>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0432\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u043a\u0430\u043a \u0438 \u0437\u0430\u0447\u0435\u043c \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c.<br \/>  <b>\u041f\u0440\u0438\u043c\u0435\u0440 1<\/b>. \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0443\u0437\u043d\u0430\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043a\u0443\u043f\u043e\u043a, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0437\u0430\u0431\u0438\u0440\u0430\u044e\u0442 \u0442\u043e\u0432\u0430\u0440 \u0438\u0437 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u043e\u0432. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0432 URL \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0430 shop_id (\u0438\u043d\u0434\u0435\u043a\u0441 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430). \u0414\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432:<\/p>\n<p>  <b>#legasy SQL<\/b>  <\/p>\n<pre><code class=\"sql\">SELECT   COUNT(transactionId) AS transactions,   check FROM (   SELECT     transactionId,     page CONTAINS 'shop_id' AS check   FROM     [owox-analytics:t_kravchenko.Demo_data]) GROUP BY   check <\/code><\/pre>\n<p>  <b>#standard SQL<\/b>  <\/p>\n<pre><code class=\"sql\">SELECT   COUNT(transactionId) AS transactions,   check1,   check2 FROM (   SELECT     transactionId,     REGEXP_CONTAINS( page, 'shop_id') AS check1,     page LIKE '%shop_id%' AS check2   FROM     `owox-analytics.t_kravchenko.Demo_data`) GROUP BY   check1,   check2 <\/code><\/pre>\n<p>  \u0418\u0437 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 shop_id, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e 5502 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 (check = true):<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/_s\/g_\/fx\/_sg_fxw9vx3lbx5nlriqu3zsylw.png\"><br \/>  <b>\u041f\u0440\u0438\u043c\u0435\u0440 2<\/b>. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0432\u044b \u043f\u0440\u0438\u0441\u0432\u043e\u0438\u043b\u0438 \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0441\u043f\u043e\u0441\u043e\u0431\u0443 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0441\u0432\u043e\u0439 delivery_id \u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0432 URL \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0427\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0432\u044b\u0431\u0440\u0430\u043b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c delivery_id \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446. <br \/>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b:<\/p>\n<p>  <b>#legasy SQL<\/b>  <\/p>\n<pre><code class=\"sql\">SELECT   page_lower_case,   page_length,   index_of_delivery_id,   selected_delivery_id,   REPLACE(selected_delivery_id, 'selected_delivery_id=', '') as delivery_id FROM (   SELECT     page_lower_case,     page_length,     index_of_delivery_id,     SUBSTR(page_lower_case, index_of_delivery_id) AS selected_delivery_id   FROM (     SELECT       page_lower_case,       LENGTH(page_lower_case) AS page_length,       INSTR(page_lower_case, 'selected_delivery_id') AS index_of_delivery_id     FROM (       SELECT         LOWER( page) AS page_lower_case,         UPPER( page) AS page_upper_case       FROM         [owox-analytics:t_kravchenko.Demo_data]))) ORDER BY   page_lower_case ASC <\/code><\/pre>\n<p>  <b>#standard SQL<\/b>  <\/p>\n<pre><code class=\"sql\">SELECT   page_lower_case,   page_length,   index_of_delivery_id,   selected_delivery_id,   REPLACE(selected_delivery_id, 'selected_delivery_id=', '') AS delivery_id FROM (   SELECT     page_lower_case,     page_length,     index_of_delivery_id,     SUBSTR(page_lower_case, index_of_delivery_id) AS selected_delivery_id   FROM (     SELECT       page_lower_case,       CHAR_LENGTH(page_lower_case) AS page_length,       STRPOS(page_lower_case, 'selected_delivery_id') AS index_of_delivery_id     FROM (       SELECT         LOWER( page) AS page_lower_case,         UPPER( page) AS page_upper_case       FROM         `owox-analytics.t_kravchenko.Demo_data`))) ORDER BY   page_lower_case ASC <\/code><\/pre>\n<p>  \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432 Google BigQuery \u0442\u0430\u043a\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/h9\/rh\/t6\/h9rht62vjmbqpsj48aublpzb_3k.png\"><\/p>\n<h2>\u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u043e\u043a\u043e\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 (Window function)<\/h2>\n<p>  \u042d\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0445\u043e\u0436\u0438 \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0432\u044b\u0448\u0435. \u0418\u0445 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u043d\u0435 \u043d\u0430 \u0432\u0441\u0435\u043c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u0430 \u043d\u0430 \u0435\u0433\u043e \u0447\u0430\u0441\u0442\u0438 \u2014 \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435 \u0438\u043b\u0438 \u043e\u043a\u043d\u0435.<\/p>\n<p>  \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043a\u043e\u043d\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0440\u0430\u0437\u0440\u0435\u0437\u0435 \u0433\u0440\u0443\u043f\u043f, \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 JOIN \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0440\u0435\u0434\u043d\u0438\u0439 \u0434\u043e\u0445\u043e\u0434 \u0432 \u0440\u0430\u0437\u0440\u0435\u0437\u0435 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u0445 \u043a\u0430\u043c\u043f\u0430\u043d\u0438\u0439, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u0432 \u0440\u0430\u0437\u0440\u0435\u0437\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432. \u0414\u043e\u0431\u0430\u0432\u0438\u0432 \u0435\u0449\u0435 \u043e\u0434\u043d\u043e \u043f\u043e\u043b\u0435 \u0432 \u043e\u0442\u0447\u0435\u0442, \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u0435\u0433\u043a\u043e \u0443\u0437\u043d\u0430\u0442\u044c, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0434\u043e\u043b\u044e \u0434\u043e\u0445\u043e\u0434\u0430 \u043e\u0442 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u043e\u0439 \u043a\u0430\u043c\u043f\u0430\u043d\u0438\u0438 \u043d\u0430 Black Friday \u0438\u043b\u0438 \u0434\u043e\u043b\u044e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439, \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u0412\u043c\u0435\u0441\u0442\u0435 \u0441 \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 OVER, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u043a\u043d\u0430. OVER \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 3 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c:  <\/p>\n<ul>\n<li>PARTITION BY \u2014 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u0437\u043d\u0430\u043a, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0434\u0435\u043b\u0438\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 PARTITION BY clientId, DayTime.<\/li>\n<li>ORDER BY \u2014 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u0442\u0440\u043e\u043a \u0432 \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 ORDER BY hour DESC.<\/li>\n<li>WINDOW FRAME \u2014 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u043f\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0443. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0443\u043c\u043c\u0443 \u043d\u0435 \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u043e\u043a \u0432 \u043e\u043a\u043d\u0435, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u044b\u0445 \u043f\u044f\u0442\u0438 \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439.<\/li>\n<\/ul>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u044b \u043e\u043a\u043e\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e:  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<tbody>\n<tr>\n<th>Legacy SQL<\/th>\n<th>Standard SQL<\/th>\n<th>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f<\/th>\n<\/tr>\n<tr>\n<td>AVG(field)<br \/>  COUNT(field)<br \/>  COUNT(DISTINCT field)<br \/>  MAX()<br \/>  MIN()<br \/>  SUM()  <\/td>\n<td>AVG([DISTINCT] (field))<br \/>  COUNT(field)<br \/>  COUNT([DISTINCT] (field))<br \/>  MAX(field)<br \/>  MIN(field)<br \/>  SUM(field)  <\/td>\n<td>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435, \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0438 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 field \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430.<\/p>\n<p>  DISTINCT \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 (\u043d\u0435\u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0435\u0441\u044f) \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f  <\/td>\n<\/tr>\n<tr>\n<td>&#8216;str1&#8217; CONTAINS &#8216;str2&#8217;<\/td>\n<td>REGEXP_CONTAINS(&#8216;str1&#8217;, &#8216;str2&#8217;) \u0438\u043b\u0438 &#8216;str1&#8217; LIKE \u2018%str2%\u2019<\/td>\n<td>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 true \u0435\u0441\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0430 &#8216;str1&#8217; \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u2018str2\u2019. <br \/>  \u0412 Standard SQL \u0441\u0442\u0440\u043e\u043a\u0430 \u2018str2\u2019 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 <a href=\"https:\/\/github.com\/google\/re2\/wiki\/Syntax\" rel=\"nofollow\">re2<\/a><\/td>\n<\/tr>\n<tr>\n<td>DENSE_RANK()<\/td>\n<td>DENSE_RANK()<\/td>\n<td>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430<\/td>\n<\/tr>\n<tr>\n<td>FIRST_VALUE(field)<\/td>\n<td>FIRST_VALUE (field[{RESPECT | IGNORE} NULLS])<\/td>\n<td>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0437 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 field \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430.<\/p>\n<p>  \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0442\u0440\u043e\u043a\u0438 \u0441 \u043f\u0443\u0441\u0442\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0438\u0437 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 field \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u0432 \u0440\u0430\u0441\u0447\u0435\u0442. RESPECT \u0438\u043b\u0438 IGNORE NULLS \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0438\u043b\u0438 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c NULL  <\/td>\n<\/tr>\n<tr>\n<td>LAST_VALUE(field)<\/td>\n<td>LAST_VALUE (field [{RESPECT | IGNORE} NULLS])<\/td>\n<td>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0437 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 field \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430.<\/p>\n<p>  \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0442\u0440\u043e\u043a\u0438 \u0441 \u043f\u0443\u0441\u0442\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0438\u0437 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 field \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u0432 \u0440\u0430\u0441\u0447\u0435\u0442. RESPECT \u0438\u043b\u0438 IGNORE NULLS \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0438\u043b\u0438 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c NULL  <\/td>\n<\/tr>\n<tr>\n<td>LAG(field)<\/td>\n<td>LAG (field[, offset [, default_expression]])<\/td>\n<td>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0438\u0437 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 field \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430.<\/p>\n<p>  Offset \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u043e\u043a, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f \u0432\u043d\u0438\u0437 \u043f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435. \u042f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0446\u0435\u043b\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u043c.<\/p>\n<p>  Default_expression \u2014 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0435\u0441\u043b\u0438 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438  <\/td>\n<\/tr>\n<tr>\n<td>LEAD(field)<\/td>\n<td>LEAD (field[, offset [, default_expression]])<\/td>\n<td>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0438\u0437 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 field \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430.<\/p>\n<p>  Offset \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u043e\u043a, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f \u0432\u0432\u0435\u0440\u0445 \u043f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435. \u042f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0446\u0435\u043b\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u043c.<\/p>\n<p>  Default_expression \u2014 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0435\u0441\u043b\u0438 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438  <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  \u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u0441\u043f\u0440\u0430\u0432\u043a\u0435 \u0434\u043b\u044f <a href=\"https:\/\/cloud.google.com\/bigquery\/docs\/reference\/legacy-sql#syntax-window-functions\" rel=\"nofollow\">Legacy SQL<\/a> \u0438 \u0434\u043b\u044f Standard SQL: <a href=\"https:\/\/cloud.google.com\/bigquery\/docs\/reference\/standard-sql\/aggregate_analytic_functions\" rel=\"nofollow\">Aggregate Analytic Functions<\/a>, <a href=\"https:\/\/cloud.google.com\/bigquery\/docs\/reference\/standard-sql\/navigation_functions\" rel=\"nofollow\">Navigation Functions<\/a>.<\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440 1. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043a\u0443\u043f\u0430\u0442\u0435\u043b\u0435\u0439 \u0432 \u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u0438 \u043d\u0435\u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u0432\u0440\u0435\u043c\u044f. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u043d\u0430 2 \u0433\u0440\u0443\u043f\u043f\u044b \u0438 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u0435 \u043d\u0430\u0441 \u043c\u0435\u0442\u0440\u0438\u043a\u0438:  <\/p>\n<ul>\n<li>1 \u0433\u0440\u0443\u043f\u043f\u0430 \u2014 \u043f\u043e\u043a\u0443\u043f\u043a\u0438 \u0432 \u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0441 9:00 \u0434\u043e 18:00 \u0447\u0430\u0441\u043e\u0432.<\/li>\n<li>2 \u0433\u0440\u0443\u043f\u043f\u0430 \u2014 \u043f\u043e\u043a\u0443\u043f\u043a\u0438 \u0432 \u043d\u0435\u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0441 00:00 \u0434\u043e 9:00 \u0438 \u0441 18:00 \u0434\u043e 00:00.<\/li>\n<\/ul>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0438 \u043d\u0435\u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0435\u0449\u0435 \u043e\u0434\u043d\u0438\u043c \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u043c \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u043a\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 clientId, \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0443 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u043f\u043e \u0434\u0432\u0430 \u043e\u043a\u043d\u0430:  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<tbody>\n<tr>\n<th>\u041f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e (\u043e\u043a\u043d\u043e)<\/th>\n<th>clientId<\/th>\n<th>DayTime<\/th>\n<\/tr>\n<tr>\n<td>1 \u043e\u043a\u043d\u043e<\/td>\n<td>clientId 1<\/td>\n<td>\u0420\u0430\u0431\u043e\u0447\u0435\u0435 \u0432\u0440\u0435\u043c\u044f<\/td>\n<\/tr>\n<tr>\n<td>2 \u043e\u043a\u043d\u043e<\/td>\n<td>clientId 2<\/td>\n<td>\u041d\u0435\u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u0432\u0440\u0435\u043c\u044f<\/td>\n<\/tr>\n<tr>\n<td>3 \u043e\u043a\u043d\u043e<\/td>\n<td>clientId 3<\/td>\n<td>\u0420\u0430\u0431\u043e\u0447\u0435\u0435 \u0432\u0440\u0435\u043c\u044f<\/td>\n<\/tr>\n<tr>\n<td>4 \u043e\u043a\u043d\u043e<\/td>\n<td>clientId 4<\/td>\n<td>\u041d\u0435\u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u0432\u0440\u0435\u043c\u044f<\/td>\n<\/tr>\n<tr>\n<td>N \u043e\u043a\u043d\u043e<\/td>\n<td>clientId N<\/td>\n<td>\u0420\u0430\u0431\u043e\u0447\u0435\u0435 \u0432\u0440\u0435\u043c\u044f<\/td>\n<\/tr>\n<tr>\n<td>N+1 \u043e\u043a\u043d\u043e<\/td>\n<td>clientId N+1<\/td>\n<td>\u041d\u0435\u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u0432\u0440\u0435\u043c\u044f<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430 demo \u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0441\u0440\u0435\u0434\u043d\u0438\u0439, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439, \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439, \u0438 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u044b\u0439 \u0434\u043e\u0445\u043e\u0434, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432 \u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u0438 \u043d\u0435\u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u0432\u0440\u0435\u043c\u044f. \u0421\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043d\u0430\u043c \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u043d\u0438\u0436\u0435.<\/p>\n<p>  <b>#legasy SQL<\/b>  <\/p>\n<pre><code class=\"sql\">SELECT   date,   clientId,   DayTime,   avg_revenue,   max_revenue,   min_revenue,   sum_revenue,   transactions,   unique_transactions FROM (   SELECT     date,     clientId,     DayTime,     AVG(revenue) OVER (PARTITION BY date, clientId, DayTime) AS avg_revenue,     MAX(revenue) OVER (PARTITION BY date, clientId, DayTime) AS max_revenue,     MIN(revenue) OVER (PARTITION BY date, clientId, DayTime) AS min_revenue,     SUM(revenue) OVER (PARTITION BY date, clientId, DayTime) AS sum_revenue,     COUNT(transactionId) OVER (PARTITION BY date, clientId, DayTime) AS transactions,     COUNT(DISTINCT(transactionId)) OVER (PARTITION BY date, clientId, DayTime) AS unique_transactions   FROM (     SELECT       date,       date_UTC,       clientId,       transactionId,       revenue,       page,       hour,       CASE         WHEN hour&gt;=9 AND hour&lt;=18 THEN '\u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u0432\u0440\u0435\u043c\u044f'         ELSE '\u043d\u0435\u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u0432\u0440\u0435\u043c\u044f'       END AS DayTime     FROM       [owox-analytics:t_kravchenko.Demo_data])) GROUP BY   date,   clientId,   DayTime,   avg_revenue,   max_revenue,   min_revenue,   sum_revenue,   transactions,   unique_transactions ORDER BY   transactions DESC <\/code><\/pre>\n<p>  <b>#standard SQL<\/b>  <\/p>\n<pre><code class=\"sql\">SELECT   date,   clientId,   DayTime,   avg_revenue,   max_revenue,   min_revenue,   sum_revenue,   transactions,   unique_transactions FROM (   SELECT     date,     clientId,     DayTime,     AVG(revenue) OVER (PARTITION BY date, clientId, DayTime) AS avg_revenue,     MAX(revenue) OVER (PARTITION BY date, clientId, DayTime) AS max_revenue,     MIN(revenue) OVER (PARTITION BY date, clientId, DayTime) AS min_revenue,     SUM(revenue) OVER (PARTITION BY date, clientId, DayTime) AS sum_revenue,     COUNT(transactionId) OVER (PARTITION BY date, clientId, DayTime) AS transactions,     COUNT(DISTINCT(transactionId)) OVER (PARTITION BY date, clientId, DayTime) AS unique_transactions   FROM (     SELECT       date,       date_UTC,       clientId,       transactionId,       revenue,       page,       hour,       CASE         WHEN hour&gt;=9 AND hour&lt;=18 THEN '\u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u0432\u0440\u0435\u043c\u044f'         ELSE '\u043d\u0435\u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u0432\u0440\u0435\u043c\u044f'       END AS DayTime     FROM       `owox-analytics.t_kravchenko.Demo_data`)) GROUP BY   date,   clientId,   DayTime,   avg_revenue,   max_revenue,   min_revenue,   sum_revenue,   transactions,   unique_transactions ORDER BY   transactions DESC <\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435, \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441 clientId=\u2019102041117.1428132012\u2032. \u0412 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0443 \u043d\u0430\u0441 \u0431\u044b\u043b\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/h0\/fw\/9k\/h0fw9k81447hh1xxwjde7lojlzy.png\"><\/p>\n<p>  \u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0432 \u0437\u0430\u043f\u0440\u043e\u0441, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043e\u0442\u0447\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0440\u0435\u0434\u043d\u0438\u0439, \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0438 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u044b\u0439 \u0434\u043e\u0445\u043e\u0434 \u0441 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439. \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u043d\u0438\u0436\u0435, \u043e\u0431\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u043b \u0432 \u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u0432\u0440\u0435\u043c\u044f:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/m2\/dd\/lm\/m2ddlmnc-yzyqbsd4jrrd4ib540.png\"><\/p>\n<p>  <b>\u041f\u0440\u0438\u043c\u0435\u0440 2<\/b>. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u0441\u043b\u043e\u0436\u043d\u0438\u043c \u0437\u0430\u0434\u0430\u0447\u0443:  <\/p>\n<ul>\n<li>\u041f\u0440\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u0432 \u043e\u043a\u043d\u0435 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0445 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f. \u041d\u0430\u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u043e\u043a\u043d\u043e \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043f\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0438 \u0440\u0430\u0431\u043e\u0447\u0435\u043c\u0443 \/ \u043d\u0435\u0440\u0430\u0431\u043e\u0447\u0435\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/li>\n<li>\u0412\u044b\u0432\u0435\u0434\u0435\u043c \u0432 \u043e\u0442\u0447\u0435\u0442 \u0434\u043e\u0445\u043e\u0434 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \/ \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 (\u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0439) \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043e\u043a\u043d\u0430.<\/li>\n<li>\u0412\u044b\u0432\u0435\u0434\u0435\u043c \u0434\u043e\u0445\u043e\u0434 \u043f\u0435\u0440\u0432\u043e\u0439 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u0432 \u043e\u043a\u043d\u0435.<\/li>\n<\/ul>\n<p>  \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b:<\/p>\n<p>  <b>#legasy SQL<\/b>  <\/p>\n<pre><code class=\"sql\">SELECT   date,   clientId,   DayTime,   hour,   rank,   revenue,   lead_revenue,   lag_revenue,   first_revenue_by_hour,   last_revenue_by_hour FROM (   SELECT     date,     clientId,     DayTime,     hour,     DENSE_RANK() OVER (PARTITION BY date, clientId, DayTime ORDER BY hour) AS rank,     revenue,     LEAD( revenue, 1) OVER (PARTITION BY date, clientId, DayTime ORDER BY hour) AS lead_revenue,     LAG( revenue, 1) OVER (PARTITION BY date, clientId, DayTime ORDER BY hour) AS lag_revenue,     FIRST_VALUE(revenue) OVER (PARTITION BY date, clientId, DayTime ORDER BY hour) AS first_revenue_by_hour,     LAST_VALUE(revenue) OVER (PARTITION BY date, clientId, DayTime ORDER BY hour) AS last_revenue_by_hour   FROM (     SELECT       date,       date_UTC,       clientId,       transactionId,       revenue,       page,       hour,       CASE         WHEN hour&gt;=9 AND hour&lt;=18 THEN '\u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u0432\u0440\u0435\u043c\u044f'         ELSE '\u043d\u0435\u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u0432\u0440\u0435\u043c\u044f'       END AS DayTime     FROM       [owox-analytics:t_kravchenko.Demo_data])) GROUP BY   date,   clientId,   DayTime,   hour,   rank,   revenue,   lead_revenue,   lag_revenue,   first_revenue_by_hour,   last_revenue_by_hour ORDER BY   date,   clientId,   DayTime,   hour,   rank,   revenue,   lead_revenue,   lag_revenue,   first_revenue_by_hour,   last_revenue_by_hour <\/code><\/pre>\n<p>  <b>#standard SQL<\/b>  <\/p>\n<pre><code class=\"sql\">SELECT   date,   clientId,   DayTime,   hour,   rank,   revenue,   lead_revenue,   lag_revenue,   first_revenue_by_hour,   last_revenue_by_hour FROM (   SELECT     date,     clientId,     DayTime,     hour,     DENSE_RANK() OVER (PARTITION BY date, clientId, DayTime ORDER BY hour) AS rank,     revenue,     LEAD( revenue, 1) OVER (PARTITION BY date, clientId, DayTime ORDER BY hour) AS lead_revenue,     LAG( revenue, 1) OVER (PARTITION BY date, clientId, DayTime ORDER BY hour) AS lag_revenue,     FIRST_VALUE(revenue) OVER (PARTITION BY date, clientId, DayTime ORDER BY hour) AS first_revenue_by_hour,     LAST_VALUE(revenue) OVER (PARTITION BY date, clientId, DayTime ORDER BY hour) AS last_revenue_by_hour   FROM (     SELECT       date,       date_UTC,       clientId,       transactionId,       revenue,       page,       hour,       CASE         WHEN hour&gt;=9 AND hour&lt;=18 THEN '\u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u0432\u0440\u0435\u043c\u044f'         ELSE '\u043d\u0435\u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u0432\u0440\u0435\u043c\u044f'       END AS DayTime     FROM       `owox-analytics.t_kravchenko.Demo_data`)) GROUP BY   date,   clientId,   DayTime,   hour,   rank,   revenue,   lead_revenue,   lag_revenue,   first_revenue_by_hour,   last_revenue_by_hour ORDER BY   date,   clientId,   DayTime,   hour,   rank,   revenue,   lead_revenue,   lag_revenue,   first_revenue_by_hour,   last_revenue_by_hour <\/code><\/pre>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0440\u0430\u0441\u0447\u0435\u0442\u043e\u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u043e\u0433\u043e \u043d\u0430\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441 clientId=\u2019102041117.1428132012\u2032:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/q0\/se\/qi\/q0seqibnrvhskde5tayqylcmegy.png\"><\/p>\n<p>  \u0418\u0437 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0430 \u0432\u044b\u0448\u0435 \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e:  <\/p>\n<ul>\n<li>\u041f\u0435\u0440\u0432\u0430\u044f \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f \u0431\u044b\u043b\u0430 \u0432 15:00, \u0430 \u0432\u0442\u043e\u0440\u0430\u044f \u2014 \u0432 16:00.<\/li>\n<li>\u041f\u043e\u0441\u043b\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0432 15:00 \u0431\u044b\u043b\u0430 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f \u0432 16:00, \u0434\u043e\u0445\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0432\u0435\u043d 25066 (\u0441\u0442\u043e\u043b\u0431\u0435\u0446 lead_revenue).<\/li>\n<li>\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0435\u0439 \u0432 16:00 \u0431\u044b\u043b\u0430 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f \u0432 15:00, \u0434\u043e\u0445\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0432\u0435\u043d 3699 (\u0441\u0442\u043e\u043b\u0431\u0435\u0446 lag_revenue).<\/li>\n<li>\u041f\u0435\u0440\u0432\u043e\u0439 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043e\u043a\u043d\u0430 \u0431\u044b\u043b\u0430 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f \u0432 15:00, \u0434\u043e\u0445\u043e\u0434 \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0432\u0435\u043d 3699 (\u0441\u0442\u043e\u043b\u0431\u0435\u0446 first_revenue_by_hour).<\/li>\n<li>\u0417\u0430\u043f\u0440\u043e\u0441 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432 \u043e\u043a\u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u043d\u0430 \u0441\u0430\u043c\u0430 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u0445 last_revenue_by_hour \u0438 revenue \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c.<\/li>\n<\/ul>\n<h2>\u0412\u044b\u0432\u043e\u0434\u044b<\/h2>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0441\u0430\u043c\u044b\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437 \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u0432 Aggregate function, Date function, String function, Window function. \u041e\u0434\u043d\u0430\u043a\u043e \u0432 Google BigQuery \u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:  <\/p>\n<ul>\n<li>Casting functions \u2014 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u0443.<\/li>\n<li>Table wildcard functions \u2014 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c \u0438\u0437 \u043d\u0430\u0431\u043e\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445.<\/li>\n<li>Regular expression functions \u2014 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u0430 \u043d\u0435 \u0435\u0433\u043e \u0442\u043e\u0447\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<\/li>\n<\/ul>\n<p>  \u041f\u0438\u0448\u0438\u0442\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445, \u0435\u0441\u0442\u044c \u043b\u0438 \u0441\u043c\u044b\u0441\u043b \u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0430\u043a \u0436\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0438 \u043e \u043d\u0438\u0445.<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/511086\/\"> https:\/\/habr.com\/ru\/post\/511086\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/511086\/\"><a href=\"https:\/\/cloud.google.com\/bigquery\/\" rel=\"nofollow\">Google BigQuery<\/a> \u2013 \u044d\u0442\u043e \u0431\u044b\u0441\u0442\u0440\u043e\u0435, \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0447\u043d\u043e\u0435 \u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Big Data, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u043b\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u044b. \u0412 \u043d\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e SQL-like \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430, \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 (<a href=\"https:\/\/cloud.google.com\/bigquery\/docs\/reference\/standard-sql\/user-defined-functions\" rel=\"nofollow\">User-defined function<\/a>).<\/p>\n<p>  \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 BigQuery \u0438 \u043f\u043e\u043a\u0430\u0436\u0443 \u0438\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445. \u0412\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0438 \u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043d\u0430 demo \u0434\u0430\u043d\u043d\u044b\u0445. <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-306981","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/306981","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=306981"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/306981\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=306981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=306981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=306981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}