{"id":294306,"date":"2019-09-05T15:00:24","date_gmt":"2019-09-05T15:00:24","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=294306"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=294306","title":{"rendered":"\u041a\u0430\u043a \u0432 Microsoft SQL Server \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 Google Analytics \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 R"},"content":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\">\n<p>\u0412 \u044d\u0442\u043e\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0435 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 R \u0432 Microsoft SQL Server \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 Google Analytics (\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0438\u0437 \u043b\u044e\u0431\u043e\u0433\u043e API).<\/p>\n<p>  <\/p>\n<p>\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u0438:<\/p>\n<p>  <\/p>\n<p><em>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044f \u043d\u0438 \u0440\u0430\u0437\u0443 \u043d\u0435 \u043c\u0430\u0440\u043a\u0435\u0442\u043e\u043b\u043e\u0433 \u043c\u043d\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u043f\u043e\u043c\u043e\u0449\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u0430. \u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043a\u0430\u0431\u0438\u043d\u0435\u0442 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f Google Analytics (GA) \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043b <a href=\"https:\/\/www.facebook.com\/selesnow\">\u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u0421\u0435\u043b\u0435\u0437\u043d\u0451\u0432 <\/a>, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u0430\u0432\u0430\u043b \u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043d\u0441\u0443\u043b\u044c\u0442\u0430\u0446\u0438\u0438.<br \/>  \u041e\u043d \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u043e\u0439 \u0432 \u043c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433\u0435. \u0418 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u0438 \u0437\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0437\u0434\u0435\u0441\u044c <a href=\"https:\/\/t.me\/R4marketing\">\u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u043c \u043a\u0430\u043d\u0430\u043b<\/a> \u0410\u043b\u0435\u043a\u0441\u0435\u044f, \u0433\u0434\u0435 \u043e\u043d \u0432\u0435\u0434\u0435\u0442 \u0441\u0432\u043e\u044e \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c.<\/em><\/p>\n<p>  <\/p>\n<h4 id=\"zadacha---u-nas-est-server-ms-sql-i-my-hotim-poluchat-dannye-v-dwh-po-api\">\u0417\u0430\u0434\u0430\u0447\u0430 \u2014 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440 MS SQL \u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 DWH \u043f\u043e API<\/h4>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a Google Analytics (GA) \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u043a\u0435\u0442 <a href=\"https:\/\/cran.r-project.org\/web\/packages\/googleAnalyticsR\/vignettes\/googleAnalyticsR.html\">googleAnalyticsR<\/a>.<\/p>\n<p>  <\/p>\n<p>\u0414\u0430\u043d\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u0432\u044b\u0431\u0440\u0430\u043d, \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432 \u0441\u0438\u043b\u0443 \u0441\u0432\u043e\u0435\u0439 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u0438. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0430\u043a\u0435\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: <a href=\"https:\/\/CRAN.R-project.org\/package=RGoogleAnalytics\">RGoogleAnalytic<\/a>.<br \/>  \u041f\u043e\u0434\u0445\u043e\u0434\u044b \u043a \u0440\u0435\u0448\u0435\u043d\u0438\u044e \u0437\u0430\u0434\u0430\u0447\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438.<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<h4 id=\"ustanavlivaem-r-na-servere-ms-sql\">\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c R \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 MS SQL<\/h4>\n<p>  <\/p>\n<p>\u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 MS SQL.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/h1\/b6\/ls\/h1b6ls8d_lgdpu902rrfe3v4qtq.png\"\/><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/se\/ld\/n_\/seldn_yx4cdfdqkus8-w54pk0k8.png\"\/><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/gf\/-g\/zw\/gf-gzwnjlnlgtuksv5-wmjxbb30.png\"\/><\/p>\n<p>  <\/p>\n<ol>\n<li>\u042d\u0442\u043e R \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e SQL Server (\u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0432 SQL \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445).<\/li>\n<li>\u041a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0430\u044f \u043a\u043e\u043f\u0438\u044f R \u0441 \u043d\u0438\u043c \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438\u0437 RStudio \u043d\u0435 \u0431\u043e\u044f\u0441\u044c \u0441\u043b\u043e\u043c\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445. <\/li>\n<\/ol>\n<p>  <\/p>\n<p>\u0421\u043e\u0433\u043b\u0430\u0448\u0430\u0435\u043c\u0441\u044f \u0441 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 \u0438 \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u043c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043d\u0435 <a href=\"https:\/\/www.r-project.org\">\u043e\u0431\u044b\u043a\u043d\u043e\u0432\u0435\u043d\u043d\u044b\u0439 R<\/a>, \u0430 <a href=\"https:\/\/mran.microsoft.com\">Microsoft R Open<\/a><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ns\/0o\/gd\/ns0ogdh5m3bfm8mjefxtdailvue.png\"\/><\/p>\n<p>  <\/p>\n<p>\u0412 \u0434\u0432\u0443\u0445 \u0441\u043b\u043e\u0432\u0430\u0445 \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435:<br \/>  Microsoft \u0431\u0435\u0440\u0435\u0442 R Open \u0435\u0433\u043e \u043e\u0431\u043b\u0430\u0433\u043e\u0440\u0430\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0438\u043c\u0438 \u043f\u0430\u043a\u0435\u0442\u0430\u043c\u0438 \u0438 \u0442\u0430\u043a \u0436\u0435 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442.<br \/>  \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0430\u043a\u0435\u0442\u044b \u044d\u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 R \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u043b\u044f \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u043d\u0435 \u0432 <a href=\"https:\/\/cran.r-project.org\">CRAN<\/a> \u0430 \u0432 <a href=\"https:\/\/mran.microsoft.com\/packages\">MRAN<\/a>.<\/p>\n<p>  <\/p>\n<p>\u041d\u043e \u0438 \u044d\u0442\u043e \u0435\u0449\u0435 \u043d\u0435 \u0432\u0441\u0451. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 MS SQL \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043d\u0435 \u0447\u0438\u0441\u0442\u044b\u0439 MRAN, \u0430 \u043d\u0435\u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0435 \u2014 <a href=\"https:\/\/docs.microsoft.com\/en-us\/machine-learning-server\/what-is-machine-learning-server\">Microsoft ML Server<\/a>.<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0441 \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a R \u0431\u0443\u0434\u0443\u0442 \u0435\u0449\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u2013 <a href=\"https:\/\/docs.microsoft.com\/en-us\/machine-learning-server\/r-reference\/revoscaler\/revoscaler\">RevoScaleR<\/a>.<\/p>\n<p>  <\/p>\n<p>RevoScaleR \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d, \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430\u0445.<\/p>\n<p>  <\/p>\n<p>\u042d\u0442\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043d\u0430\u0434\u043e \u0438\u043c\u0435\u0442\u044c \u0432 \u0432\u0438\u0434\u0443 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0432\u0435\u043b\u0438\u043a\u0430 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 R.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 R \u043e\u0442 Microsoft.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/sm\/yl\/an\/smylanlw8kctrkylh_inrj_wrns.png\"\/><\/p>\n<p>  <\/p>\n<p>\u042d\u0442\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043d\u0435 \u0441\u0430\u043c\u043e\u0435 \u0443\u0434\u043e\u0431\u043d\u043e\u0435 \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0440\u0430\u0437\u0443 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e <a href=\"https:\/\/www.rstudio.com\/products\/rstudio\/download\/\">RStudio<\/a>.<\/p>\n<p>  <\/p>\n<h4 id=\"nastraivaem-sql-server-na-rabotu-s-r\">\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c SQL server \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 R<\/h4>\n<p>  <\/p>\n<p>\u0412 SSMS \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b:<\/p>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c \u043d\u0430 SQL \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442\u044b<\/p>\n<p>  <\/p>\n<pre><code class=\"sql\">sp_configure 'external scripts enabled', 1; RECONFIGURE WITH OVERRIDE;  <\/code><\/pre>\n<p>  <\/p>\n<p>\u0420\u0435\u0441\u0442\u0430\u0440\u0442\u0443\u0435\u043c Server SQL<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yu\/qf\/tn\/yuqftnhqd9w3mlxtpazqtnmla2o.png\"\/><\/p>\n<p>  <\/p>\n<p>\u0423\u0431\u0435\u0436\u0434\u0430\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u044b R \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f<\/p>\n<p>  <\/p>\n<pre><code class=\"sql\">EXECUTE sp_execute_external_script @language =N'R', @script=N'print(version)';<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0430\u0445\u043e\u0434\u0438\u043c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 R \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f SQL \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c<\/p>\n<p>  <\/p>\n<pre><code class=\"sql\">declare @Rscript nvarchar(max)  set @Rscript = N'     InstaledLibrary &lt;- library()     InstaledLibrary &lt;- as.data.frame(InstaledLibrary$results )     OutputDataSet &lt;- InstaledLibrary '  EXECUTE sp_execute_external_script     @language = N'R'     , @script = @Rscript WITH RESULT SETS (([Package] varchar(255) NOT NULL, [LibPath] varchar(255) NOT NULL, [Title] varchar(255) NOT NULL));<\/code><\/pre>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ol\/_y\/oj\/ol_yojqjdgdmv-nksxrfacxoxtm.png\"\/> <\/p>\n<p>  <\/p>\n<p><em>\u0412 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0443\u0442\u044c \u0434\u043e R \u043f\u0430\u043a\u0435\u0442\u043e\u0432 MS SQL:<br \/>  C:\/Program Files\/Microsoft SQL Server\/MSSQL14.MSSQLSERVER\/R_SERVICES\/library<br \/>  <\/em><\/p>\n<p>  <\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c RStudio. <\/p>\n<p>  <\/p>\n<p>\u041d\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u043e, \u0447\u0442\u043e \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u0441\u0438\u0439 R \u0438 \u043d\u0430\u0434\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 SQL \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/zc\/qy\/b_\/zcqyb_ovi7u699vrcuxcgasczqe.png\"\/><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/l2\/i9\/oh\/l2i9ohuqn5zkywadbiphg2e1doi.png\"\/><\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0440\u0435\u0441\u0442\u0430\u0440\u0442\u0430 RStudio.<\/p>\n<p>  <\/p>\n<h4 id=\"ustanavlivaem-paket-googleanalyticsr\">\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0430\u043a\u0435\u0442 googleAnalyticsR<\/h4>\n<p>  <\/p>\n<p>\u0412 RStudio \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439<\/p>\n<p>  <\/p>\n<pre><code class=\"python\">library()<\/code><\/pre>\n<p>  <\/p>\n<p>\u0443\u0437\u043d\u0430\u0435\u043c \u043f\u0443\u0442\u044c \u0434\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 R (\u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 RStudio)<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yq\/pl\/dx\/yqpldxxzpmjf1flqqd9-oztsrn4.png\"\/><\/p>\n<p>  <\/p>\n<p>\u0412 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e\u0442 \u043f\u0443\u0442\u044c:<br \/>  C:\/Program Files\/Microsoft SQL Server\/140\/R_SERVER\/library<\/p>\n<p>  <\/p>\n<p>\u0427\u0435\u0440\u0435\u0437 RStudio \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0430\u043a\u0435\u0442 googleAnalyticsR<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/0z\/ti\/wq\/0ztiwqcivhytf2u2rlyd8c1l-dq.png\"\/><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/lx\/cx\/sn\/lxcxsnitj9cw_zn37apqajbugbm.png\"\/><\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0442 \u0442\u0443\u0442 \u0435\u0441\u0442\u044c \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0439 \u043d\u044e\u0430\u043d\u0441:<br \/>  \u041d\u0435\u043b\u044c\u0437\u044f \u0432\u0437\u044f\u0442\u044c \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u0447\u0442\u043e-\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043f\u0430\u043f\u043a\u0438 MS SQL. \u041f\u0430\u043a\u0435\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0432 \u0432\u0438\u0434\u0435 ZIP \u0430\u0440\u0445\u0438\u0432\u043e\u0432.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/4q\/t5\/ue\/4qt5ueo_hzv0bv4qiwuu96g-0gs.png\"\/><\/p>\n<p>  <\/p>\n<p>\u0412 \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a\u0435 \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u0438 \u0440\u0430\u0437\u0430\u0440\u0445\u0438\u0432\u0438\u0440\u0443\u0435\u043c \u0432\u0441\u0435 \u043f\u0430\u043a\u0435\u0442\u044b.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/kf\/ge\/9j\/kfge9jhiz7ccurynbi3yr7amh2k.png\"\/><\/p>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u0430\u0440\u0445\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u043d\u0430\u0434\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a R Services (\u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440 MS SQL).<\/p>\n<p>  <\/p>\n<p><em>\u0412 \u043c\u043e\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u044d\u0442\u043e \u043f\u0430\u043f\u043a\u0430<br \/>  C:\/Program Files\/Microsoft SQL Server\/MSSQL14.MSSQLSERVER\/R_SERVICES\/library<\/em><\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a \u0436\u0435 \u0440\u0430\u0437\u0430\u0440\u0445\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u043d\u0430\u0434\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e R (c \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 RStudio) <\/p>\n<p>  <\/p>\n<p><em>\u0412 \u043c\u043e\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u044d\u0442\u043e \u043f\u0430\u043f\u043a\u0430<br \/>  C:\/Program Files\/Microsoft SQL Server\/140\/R_SERVER\/library<\/em><\/p>\n<p>  <\/p>\n<p><u>(\u044d\u0442\u0438 \u043f\u0443\u0442\u0438 \u043c\u044b \u0443\u0437\u043d\u0430\u043b\u0438 \u0438\u0437 \u0440\u0430\u043d\u0435\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0445 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432)<\/u><\/p>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0432 \u043f\u0430\u043f\u043a\u0443 R Services \u043b\u0443\u0447\u0448\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043a\u043e\u043f\u0438\u044e \u043f\u0430\u043f\u043a\u0438 library, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430, \u0441\u043b\u0443\u0447\u0430\u0438 \u0431\u044b\u0432\u0430\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u0438 \u043b\u0443\u0447\u0448\u0435 \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u0438\u043c\u0435\u044e\u0449\u0438\u043c\u0441\u044f \u043f\u0430\u043a\u0435\u0442\u0430\u043c.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c \u0432\u0441\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u043f\u0430\u043a\u0435\u0442\u044b.<\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e \u0431\u044b \u0437\u0430\u043a\u0440\u0435\u043f\u0438\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0432\u044b\u043a \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c \u0443\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u0435.<br \/>  \u0422\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0430\u043a\u0435\u0442\u044b, \u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u0432\u0441\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f.<br \/>  (\u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a GA \u044d\u0442\u043e \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u043e \u043b\u0443\u0447\u0448\u0435 \u0438\u043c\u0435\u0442\u044c \u0441\u0432\u0435\u0436\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0432\u0441\u0435\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432)<\/p>\n<p>  <\/p>\n<p>\u0412 RStudio \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u0441\u044f \u043d\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/vi\/w4\/yq\/viw4yqtkwn3f92tozbpgsm-lifm.png\"\/><\/p>\n<p>  <\/p>\n<p>\u041f\u0430\u043a\u0435\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443.<br \/>  \u041f\u0440\u043e\u0434\u0435\u043b\u044b\u0432\u0430\u0435\u043c \u0441 \u043d\u0438\u043c\u0438 \u0442\u0430\u043a\u0438\u0435 \u0436\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043a\u0430\u043a \u0438 \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043d\u043e\u0432\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432.<\/p>\n<p>  <\/p>\n<h4 id=\"proveryaem-dostup-ms-sql-v-internet\">\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f MS SQL \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442<\/h4>\n<p>  <\/p>\n<pre><code class=\"sql\">declare @Rscript nvarchar(max)  set @Rscript = N'     library(httr)     HEAD(&quot;https:\/\/www.yandex.ru&quot;, verbose())     '  EXECUTE sp_execute_external_script     @language = N'R'     , @script = @Rscript<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 SQL Server \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0443 \u0412\u0430\u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0432\u044b\u0437\u043e\u0432\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443. <\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ct\/pz\/os\/ctpzos-kjpqtligr_cje3kg3xou.png\"\/><\/p>\n<p>  <\/p>\n<p>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0434\u043b\u044f R \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0438\u0437 SQL.<\/p>\n<p>  <\/p>\n<p>SQL 2017<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/bj\/lk\/hl\/bjlkhlu9qy4twf-arpu8dr2jgua.gif\"\/><\/p>\n<p>  <\/p>\n<p>SQL2019<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/bn\/pi\/co\/bnpicoaaii15qaqx-hu-xj2zq6u.gif\"\/><\/p>\n<p>  <\/p>\n<p>\u0412 SSMS<\/p>\n<p>  <\/p>\n<pre><code class=\"sql\">-- \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 create database Demo go  use Demo go  -- \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u0445\u0435\u043c\u0443, \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 Google Analytics   create schema GA go  -- \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0442\u043e\u043a\u0435\u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a GA drop table if exists [GA].[token]  create table [GA].[token]( [id] varchar(200) not null, [value] varbinary(max) constraint unique_id unique (id))<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"poluchaem-token-google-analytics\">\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u043e\u043a\u0435\u043d Google Analytics<\/h4>\n<p>  <\/p>\n<p>\u0412 RStudio \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434:<br \/>  \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043e\u0442\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u043e\u043a\u043d\u043e \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0432 Google \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u0445, \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432\u0445\u043e\u0434 \u0438 \u0434\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f \u043a Google Analytics.<\/p>\n<p>  <\/p>\n<pre><code class=\"python\"># \u041d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0443\u043a\u0430\u0436\u0435\u043c \u0442\u0430\u0439\u043c \u0437\u043e\u043d\u0443 Sys.setenv(TZ=&quot;Europe\/Berlin&quot;)  library(googleAnalyticsR)  # \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u043e\u043a\u0435\u043d ga_auth()  PathTokenFile &lt;- paste (  getwd(),&quot;\/&quot;, &quot;.httr-oauth&quot; , sep=&quot;&quot;) TokenFile &lt;- readBin(PathTokenFile, &quot;raw&quot;, file.info(PathTokenFile)$size)  # \u0421\u043e\u0437\u0434\u0430\u043b\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u0431\u0430\u0437\u0435 conStr &lt;- 'Driver={SQL Server};Server=EC2AMAZ-68OQ7JV;Database=Demo;Uid=Sa;Pwd=SaSql123' ds &lt;- RxOdbcData(table=&quot;ga.token&quot;, connectionString=conStr)  # \u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0442\u043e\u043a\u0435\u043d \u0432 \u0431\u0430\u0437\u0443 rxWriteObject(ds, &quot;ga_TokenFile&quot;, TokenFile)<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 SSMS \u0443\u0431\u0435\u0436\u0434\u0430\u0435\u043c\u0441\u044f \u0447\u0442\u043e \u0442\u043e\u043a\u0435\u043d \u043e\u0442 Google \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u0438 \u0437\u0430\u043f\u0438\u0441\u0430\u043d \u0432 \u0431\u0430\u0437\u0435<\/p>\n<p>  <\/p>\n<pre><code class=\"sql\">Select * from [GA].[token]<\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"proveryaem-podklyuchenie-k-ga-cherez-rstudio\">\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a GA \u0447\u0435\u0440\u0435\u0437 RStudio<\/h4>\n<p>  <\/p>\n<pre><code class=\"python\"># \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0412 RStudio Sys.setenv(TZ=&quot;Europe\/Berlin&quot;) library(googleAnalyticsR)  # \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u043e\u043a\u0435\u043d \u0438\u0437 \u0431\u0430\u0437\u044b conStr &lt;- 'Driver={SQL Server};Server=EC2AMAZ-68OQ7JV;Database=Demo;Uid=Sa;Pwd=SaSql123' # \u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0432 \u0431\u0430\u0437\u0435 \u043f\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e ds &lt;- RxOdbcData(table=&quot;ga.token&quot;, connectionString=conStr)  PathTokenFile &lt;- paste (  getwd(),&quot;\/&quot;, &quot;.httr-oauth&quot; , sep=&quot;&quot;)  TokenFile &lt;- rxReadObject(ds, &quot;ga_TokenFile&quot;)  write.filename = file(PathTokenFile, &quot;wb&quot;) writeBin(TokenFile, write.filename)  close(write.filename)  Sys.setenv(&quot;GA_AUTH_FILE&quot; = PathTokenFile)  # \u041f\u0440\u043e\u0448\u043b\u0438 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e ga_auth()  # \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438 ga_id account_list &lt;- ga_account_list() ga_id &lt;- account_list$viewId  # \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 OutputDataSet &lt;-google_analytics(ga_id,                                  start=&quot;2019-01-01&quot;,                                  end=&quot;2019-08-01&quot;,                                  metrics = &quot;sessions&quot;,                                  dimensions = &quot;date&quot;)  OutputDataSet<\/code><\/pre>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0441\u0451 \u043f\u0440\u043e\u0448\u043b\u043e \u0443\u0434\u0430\u0447\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c R \u0441\u043a\u0440\u0438\u043f\u0442 \u0432 SQL \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441.<\/p>\n<p>  <\/p>\n<pre><code class=\"sql\">drop table if exists #GA_session  create table #GA_session ( [date] date, [sessions] int )      declare @Rscript nvarchar(max)      set @Rscript = N' # \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0412 RStudio Sys.setenv(TZ=&quot;Europe\/Berlin&quot;) library(googleAnalyticsR)  # \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u043e\u043a\u0435\u043d \u0438\u0437 \u0431\u0430\u0437\u044b conStr &lt;- ''Driver={SQL Server};Server=EC2AMAZ-68OQ7JV;Database=Demo;Uid=Sa;Pwd=SaSql123'' # \u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0432 \u0431\u0430\u0437\u0435 \u043f\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e ds &lt;- RxOdbcData(table=&quot;ga.token&quot;, connectionString=conStr)  PathTokenFile &lt;- paste (  getwd(),&quot;\/&quot;, &quot;.httr-oauth&quot; , sep=&quot;&quot;)  TokenFile &lt;- rxReadObject(ds, &quot;ga_TokenFile&quot;)  write.filename = file(PathTokenFile, &quot;wb&quot;) writeBin(TokenFile, write.filename)  close(write.filename)  Sys.setenv(&quot;GA_AUTH_FILE&quot; = PathTokenFile)  # \u041f\u0440\u043e\u0448\u043b\u0438 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e ga_auth()  # \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438 ga_id account_list &lt;- ga_account_list() ga_id &lt;- account_list$viewId  # \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 OutputDataSet &lt;-google_analytics(ga_id,                                  start=&quot;2019-01-01&quot;,                                  end=&quot;2019-08-01&quot;,                                  metrics = &quot;sessions&quot;,                                  dimensions = &quot;date&quot;)  OutputDataSet$date  &lt;- as.character(OutputDataSet$date) '  -- print @Rscript  insert into #GA_session ([date],[sessions])  EXECUTE sp_execute_external_script      @language = N'R',       @script = @Rscript  Select *  from #GA_session order by [date] asc<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u0431\u0440\u0430\u0449\u0430\u0435\u043c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0447\u0442\u043e \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u041b\u043e\u0433\u0438\u043d \u0438 \u041f\u0430\u0440\u043e\u043b\u044c \u2013 \u044d\u0442\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u043e<br \/>  \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0432\u0438\u043d\u0434\u043e\u0432\u0441 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e.<\/p>\n<p>  <\/p>\n<pre><code class=\"sql\">conStr &lt;- ''Driver={SQL Server};Server=EC2AMAZ-68OQ7JV;Database=Demo;Trusted_Connection=true'' # \u0412\u0438\u043d\u0434\u043e\u0432\u0441 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f &lt;&lt;&lt;=== \u041b\u0443\u0447\u0448\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2013 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u0438 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u0445 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u0430 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0438\u0441\u0443 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u043c\u0443 R \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0431\u0430\u0437\u0435.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/kl\/d4\/kc\/kld4kcpha_8hjpzvwjiuxeidpog.gif\"\/><\/p>\n<p>  <\/p>\n<p>(\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0433\u0440\u0443\u043f\u043f\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u044f \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u043b \u0440\u0435\u0448\u0435\u043d\u0438\u0435)<\/p>\n<p>  <\/p>\n<p>\u041e\u0444\u043e\u0440\u043c\u043b\u044f\u0435\u043c SQL \u0437\u0430\u043f\u0440\u043e\u0441 \u0432 \u0432\u0438\u0434\u0435 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b<\/p>\n<p>  <\/p>\n<pre><code class=\"sql\">Create procedure Ga.Get_session       @Date_start date ='2019-01-01',      @Date_End date ='2019-08-01' as  drop table if exists #GA_session  create table #GA_session ( [date] date, [sessions] int )  declare @Rscript nvarchar(max)  set @Rscript =CONCAT( N' # \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0412 RStudio Sys.setenv(TZ=&quot;Europe\/Berlin&quot;) library(googleAnalyticsR)  # \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u043e\u043a\u0435\u043d \u0438\u0437 \u0431\u0430\u0437\u044b conStr &lt;- ''Driver={SQL Server};Server=EC2AMAZ-68OQ7JV;Database=Demo;Trusted_Connection=true'' # \u0412\u0438\u043d\u0434\u043e\u0432\u0441 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f &lt;&lt;&lt;=== \u041b\u0443\u0447\u0448\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 - \u043d\u0438\u043a\u0442\u043e \u043f\u0430\u0440\u043e\u043b\u044f \u043d\u0435\u0443\u0432\u0438\u0434\u0438\u0442 ds &lt;- RxOdbcData(table=&quot;ga.token&quot;, connectionString=conStr)  PathTokenFile &lt;- paste (  getwd(),&quot;\/&quot;, &quot;.httr-oauth&quot; , sep=&quot;&quot;)  TokenFile &lt;- rxReadObject(ds, &quot;ga_TokenFile&quot;)  write.filename = file(PathTokenFile, &quot;wb&quot;) writeBin(TokenFile, write.filename)  close(write.filename)  Sys.setenv(&quot;GA_AUTH_FILE&quot; = PathTokenFile)  # \u041f\u0440\u043e\u0448\u043b\u0438 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e ga_auth()  # \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438 ga_id account_list &lt;- ga_account_list() ga_id &lt;- account_list$viewId  # \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 OutputDataSet &lt;-google_analytics(ga_id,                                  start=&quot;' , @Date_start ,N'&quot;,                                  end=&quot;' , @Date_End ,N'&quot;,                                  metrics = &quot;sessions&quot;,                                  dimensions = &quot;date&quot;)  OutputDataSet$date  &lt;- as.character(OutputDataSet$date) ' ) -- print @Rscript  insert into #GA_session ([date],[sessions])  EXECUTE sp_execute_external_script      @language = N'R',       @script = @Rscript  Select *  from #GA_session order by [date] asc<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b<\/p>\n<p>  <\/p>\n<pre><code class=\"sql\">-- \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e exec  Ga.Get_session   -- \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0435\u0441\u0441\u0438\u0438 \u0437\u0430 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434 exec  Ga.Get_session       @Date_start  ='2019-08-01',     @Date_End  ='2019-09-01'<\/code><\/pre>\n<p>  <\/p>\n<p>R \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u0435\u0433\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 R Studio. \u0414\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 SQL \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0435.<br \/>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u044f \u043f\u043e\u043c\u0435\u043d\u044f\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 dimensions \u0438 \u0443\u0436\u0435 \u043c\u043e\u0433\u0443 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c landingPage \u043f\u043e \u0434\u0430\u0442\u0430\u043c.<\/p>\n<p>  <\/p>\n<pre><code class=\"sql\">Create procedure [GA].[Get_landingPage_session]   @Date_start date ='2019-01-01',  @Date_End date ='2019-08-01' as  drop table if exists #GA_session  create table #GA_session ( [date] date, landingPagePath nvarchar(max), [sessions] int )      declare @Rscript nvarchar(max)      set @Rscript =CONCAT( N' # \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0412 RStudio Sys.setenv(TZ=&quot;Europe\/Berlin&quot;) library(googleAnalyticsR)  # \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u043e\u043a\u0435\u043d \u0438\u0437 \u0431\u0430\u0437\u044b conStr &lt;- ''Driver={SQL Server};Server=EC2AMAZ-68OQ7JV;Database=Demo;Trusted_Connection=true'' # \u0412\u0438\u043d\u0434\u043e\u0432\u0441 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f &lt;&lt;&lt;=== \u041b\u0443\u0447\u0448\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 - \u043d\u0438\u043a\u0442\u043e \u043f\u0430\u0440\u043e\u043b\u044f \u043d\u0435\u0443\u0432\u0438\u0434\u0438\u0442 ds &lt;- RxOdbcData(table=&quot;ga.token&quot;, connectionString=conStr)  PathTokenFile &lt;- paste (  getwd(),&quot;\/&quot;, &quot;.httr-oauth&quot; , sep=&quot;&quot;)  TokenFile &lt;- rxReadObject(ds, &quot;ga_TokenFile&quot;)  write.filename = file(PathTokenFile, &quot;wb&quot;) writeBin(TokenFile, write.filename)  close(write.filename)  Sys.setenv(&quot;GA_AUTH_FILE&quot; = PathTokenFile)  # \u041f\u0440\u043e\u0448\u043b\u0438 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e ga_auth()  # \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438 ga_id account_list &lt;- ga_account_list() ga_id &lt;- account_list$viewId  # \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 OutputDataSet &lt;-google_analytics(ga_id,                                  start=&quot;' , @Date_start ,N'&quot;,                                  end=&quot;' , @Date_End ,N'&quot;,                                  metrics = &quot;sessions&quot;,                                  dimensions = c(&quot;date&quot; ,&quot;landingPagePath&quot;))  OutputDataSet$date  &lt;- as.character(OutputDataSet$date)  ' ) -- print @Rscript  insert into #GA_session ([date],landingPagePath,[sessions])  EXECUTE sp_execute_external_script      @language = N'R',       @script = @Rscript  Select *  from #GA_session order by [date] asc<\/code><\/pre>\n<p>  <\/p>\n<p>\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u0441\u044f <\/p>\n<p>  <\/p>\n<pre><code class=\"sql\">exec [GA].[Get_landingPage_session]<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u0432\u0441\u0451 \u0433\u043e\u0442\u043e\u0432\u043e.<\/p>\n<p>  <\/p>\n<p>\u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e \u043f\u043e\u043c\u043e\u0449\u0438 R \u0447\u0435\u0440\u0435\u0437 SQL \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u043b\u044e\u0431\u043e\u0433\u043e API<br \/>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043a\u0443\u0440\u0441\u043e\u0432 \u0432\u0430\u043b\u044e\u0442 <\/p>\n<p>  <\/p>\n<pre><code class=\"sql\">-- https:\/\/www.cbr-xml-daily.ru  Declare @script nvarchar(max)    set @script = N'                encoding = &quot;utf-8&quot;     Sys.setlocale(&quot;LC_CTYPE&quot;, &quot;russian&quot;)     Sys.setenv(TZ=&quot;Europe\/Berlin&quot;)      library(httr)     url &lt;- &quot;https:\/\/www.cbr-xml-daily.ru\/daily_json.js&quot;     resp &lt;- GET(url)     library(jsonlite)     Response &lt;- fromJSON(content(resp, as = &quot;text&quot;))     OutputDataSet &lt;- data.frame(matrix(unlist(Response$Valute$USD), nrow=1, byrow=T),stringsAsFactors=FALSE)     OutputDataSet &lt;- rbind(OutputDataSet,data.frame(matrix(unlist(Response$Valute$EUR), nrow=1, byrow=T),stringsAsFactors=FALSE))     '  EXEC sp_execute_external_script  @language = N'R'  , @script = @script  with result SETS UNDEFINED <\/code><\/pre>\n<p>  <\/p>\n<p>\u0438\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u043e\u043f\u0430\u0432\u0448\u0435\u0433\u043e\u0441\u044f API, \u043a\u0430\u043a\u0438\u0435 \u0442\u043e \u0444\u0435\u0440\u043c\u044b \u0432 \u0430\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u0438 \u2026<\/p>\n<p>  <\/p>\n<pre><code class=\"sql\">-- https:\/\/dev.socrata.com\/  Declare @script nvarchar(max)    set @script = N'     library(httr)     url &lt;- &quot;https:\/\/data.ct.gov\/resource\/y6p2-px98.json?category=Fruit&amp;item=Peaches&quot;     resp &lt;- GET(url)     library(jsonlite)     Response &lt;- fromJSON(content(resp, as = &quot;text&quot;))     OutputDataSet &lt;- as.data.frame(Response)      OutputDataSet &lt;-  OutputDataSet [,                                  c(&quot;category&quot; ,                                    &quot;item&quot; ,                                     &quot;farmer_id&quot;  ,                                     &quot;zipcode&quot; ,                                      &quot;business&quot; ,                                     &quot;l&quot; ,                                         &quot;location_1_location&quot;,                                    &quot;location_1_city&quot;  ,                                    &quot;location_1_state&quot; ,                                    &quot;farm_name&quot;,                                            &quot;phone1&quot; ,                                                &quot;website&quot;,                                        &quot;suite&quot;)] '  EXEC sp_execute_external_script  @language = N'R'  , @script = @script  with result SETS UNDEFINED <\/code><\/pre>\n<p>  <\/p>\n<h4 id=\"itogo\">\u0418\u0442\u043e\u0433\u043e:<\/h4>\n<p>  <\/p>\n<ul>\n<li>\u043f\u0430\u0440\u043e\u043b\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043d\u0438\u0433\u0434\u0435 \u043d\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f<\/li>\n<li>\u043f\u0440\u0430\u0432\u0430 \u0440\u0430\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u0443\u0447\u0435\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 active directory<\/li>\n<li>\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0435\u0442\u0443<\/li>\n<li>\u043d\u0435\u0442\u0443 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u0438\u0442\u043e\u043d\u043e\u0432\u0441\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u0438\u043a\u043e\u0432 \u0441\u043e \u0441\u043a\u0440\u0438\u043f\u043a\u0430\u043c\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u043c\u0438 \u043f\u0430\u0440\u043e\u043b\u0438 \u043a \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445<\/li>\n<li>\u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430\u0445 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0431\u044d\u043a\u0430\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 <\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0411\u044d\u043a\u0430\u043f \u0431\u0430\u0437\u044b MS SQL 2017 \u0441\u043e \u0432\u0441\u0435\u043c \u043a\u043e\u0434\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d <a href=\"https:\/\/1drv.ms\/u\/s!AskL8tFjJRrjg4U_JQxCq1PUlCawjw?e=Z92iKl\">\u0442\u0443\u0442<\/a><br \/>  <em>(\u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b, \u0440\u0430\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0430, \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430)<\/em><\/p>\n<\/div>\n<p>               <script class=\"js-mediator-script\">!function(e){function t(t,n){if(!(n in e)){for(var r,a=e.document,i=a.scripts,o=i.length;o--;)if(-1!==i[o].src.indexOf(t)){r=i[o];break}if(!r){r=a.createElement(\"script\"),r.type=\"text\/javascript\",r.async=!0,r.defer=!0,r.src=t,r.charset=\"UTF-8\";var d=function(){var e=a.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(r,e)};\"[object Opera]\"==e.opera?a.addEventListener?a.addEventListener(\"DOMContentLoaded\",d,!1):e.attachEvent(\"onload\",d):d()}}}t(\"\/\/mediator.mail.ru\/script\/2820404\/\",\"_mediator\")}(window);<\/script>     <br \/> \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\/466339\/\"> https:\/\/habr.com\/ru\/post\/466339\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\">\n<p>\u0412 \u044d\u0442\u043e\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0435 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 R \u0432 Microsoft SQL Server \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 Google Analytics (\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0438\u0437 \u043b\u044e\u0431\u043e\u0433\u043e API).<\/p>\n<p>  <\/p>\n<p>\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u0438:<\/p>\n<p>  <\/p>\n<p><em>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044f \u043d\u0438 \u0440\u0430\u0437\u0443 \u043d\u0435 \u043c\u0430\u0440\u043a\u0435\u0442\u043e\u043b\u043e\u0433 \u043c\u043d\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u043f\u043e\u043c\u043e\u0449\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u0430. \u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043a\u0430\u0431\u0438\u043d\u0435\u0442 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f Google Analytics (GA) \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043b <a href=\"https:\/\/www.facebook.com\/selesnow\">\u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u0421\u0435\u043b\u0435\u0437\u043d\u0451\u0432 <\/a>, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u0430\u0432\u0430\u043b \u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043d\u0441\u0443\u043b\u044c\u0442\u0430\u0446\u0438\u0438.<br \/>  \u041e\u043d \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u043e\u0439 \u0432 \u043c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433\u0435. \u0418 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u0438 \u0437\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0437\u0434\u0435\u0441\u044c <a href=\"https:\/\/t.me\/R4marketing\">\u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u043c \u043a\u0430\u043d\u0430\u043b<\/a> \u0410\u043b\u0435\u043a\u0441\u0435\u044f, \u0433\u0434\u0435 \u043e\u043d \u0432\u0435\u0434\u0435\u0442 \u0441\u0432\u043e\u044e \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c.<\/em><\/p>\n<p>  <\/p>\n<h4 id=\"zadacha---u-nas-est-server-ms-sql-i-my-hotim-poluchat-dannye-v-dwh-po-api\">\u0417\u0430\u0434\u0430\u0447\u0430 \u2014 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440 MS SQL \u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 DWH \u043f\u043e API<\/h4>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a Google Analytics (GA) \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u043a\u0435\u0442 <a href=\"https:\/\/cran.r-project.org\/web\/packages\/googleAnalyticsR\/vignettes\/googleAnalyticsR.html\">googleAnalyticsR<\/a>.<\/p>\n<p>  <\/p>\n<p>\u0414\u0430\u043d\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u0432\u044b\u0431\u0440\u0430\u043d, \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432 \u0441\u0438\u043b\u0443 \u0441\u0432\u043e\u0435\u0439 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u0438. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0430\u043a\u0435\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: <a href=\"https:\/\/CRAN.R-project.org\/package=RGoogleAnalytics\">RGoogleAnalytic<\/a>.<br \/>  \u041f\u043e\u0434\u0445\u043e\u0434\u044b \u043a \u0440\u0435\u0448\u0435\u043d\u0438\u044e \u0437\u0430\u0434\u0430\u0447\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438.<\/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-294306","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/294306","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=294306"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/294306\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=294306"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=294306"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=294306"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}