{"id":359418,"date":"2024-05-21T00:32:12","date_gmt":"2024-05-21T00:32:12","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=359418"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=359418","title":{"rendered":"<span>\u041d\u0435\u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f BI-\u0441\u0438\u0441\u0442\u0435\u043c\u044b (Apache Superset)<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442!<\/p>\n<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0435\u0442\u0438\u043f\u0438\u0447\u043d\u043e\u0439 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u0442\u0435\u043c\u0435, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e &#8212; Apache Superset. \u041e\u0431\u044b\u0447\u043d\u043e \u044f \u043f\u0438\u0448\u0443 \u0434\u043b\u0438\u043d\u043d\u044b\u0435 &#171;\u0444\u0438\u043b\u043e\u0441\u043e\u0444\u0441\u043a\u0438\u0435&#187; \u0441\u0442\u0430\u0442\u044c\u0438 &#171;\u043d\u0430 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u0443\u044e \u0442\u0435\u043c\u0443&#187;, \u043d\u043e \u0432 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 &#8212; \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b. \u0422\u0430\u043a \u0447\u0442\u043e \u043a\u043e\u043c\u0443-\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e, \u043d\u043e, \u043e\u043f\u044f\u0442\u044c \u0442\u0430\u043a\u0438, \u0432\u0434\u0440\u0443\u0433 \u043a\u043e\u043c\u0443 \u043f\u043e\u043c\u043e\u0436\u0435\u0442. \u041f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e \u0441\u0443\u043f\u0435\u0440\u0441\u0435\u0442\u0443 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435 \u043e\u0441\u043a\u043e\u0440\u0431\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0430\u043b\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432. \u0414\u0430, \u0443 \u043d\u0435\u0433\u043e \u0432 \u0446\u0435\u043b\u043e\u043c \u043d\u0435\u043f\u043b\u043e\u0445\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f, \u043d\u043e \u043e\u043d\u0430 \u0432\u0441\u0435 \u0436\u0435 &#8212; \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043c\u0435\u0440\u0443 \u0441\u0443\u0445\u0430\u044f, \u0432 \u043d\u0435\u0439 \u043d\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0439, \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432.<\/p>\n<h2>\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u043f\u043e\u0447\u0435\u043c\u0443 Superset<\/h2>\n<p>\u041c\u044b \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043e\u043b\u0433\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u0441\u044f \u0442\u0435\u043c\u043e\u0439 BI, \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u043d\u0430 OBIEE, MS Power BI, \u043d\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438\u0441\u044c, \u043d\u0430\u0441\u0442\u0443\u043f\u0438\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0437\u0430\u043c\u0435\u0449\u0435\u043d\u043d\u044b\u0445 \u0438 \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u0438 \u0437\u0434\u0435\u0441\u044c \u043a\u0430\u043a \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043a\u0441\u0442\u0430\u0442\u0438 \u043f\u0440\u0438\u0448\u0435\u043b\u0441\u044f \u0441\u0443\u043f\u0435\u0440\u0441\u0435\u0442 \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c &#8212; \u0445\u043e\u0447\u0435\u0448\u044c, \u0442\u0430\u043a \u0431\u0435\u0440\u0438, \u0445\u043e\u0447\u0435\u0448\u044c, \u0431\u0435\u0440\u0438 \u0438 \u0434\u043e\u043f\u0438\u043b\u0438\u0432\u0430\u0439.<\/p>\n<p>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u043a\u043b\u0430\u0441\u0441\u0438\u043a\u0435 BI, \u0443\u043f\u043e\u043c\u044f\u043d\u0435\u043c \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438:<\/p>\n<ul>\n<li>\n<p><strong>MOLAP<\/strong> &#8212; <a href=\"https:\/\/powerbi.microsoft.com\/ru-ru\/\">MS Power BI<\/a> (\u0432 \u0434\u0435\u0432\u0438\u0447\u0435\u0441\u0442\u0432\u0435, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043e\u0448\u0438\u0431\u0430\u044e\u0441\u044c, MSAS), <a href=\"https:\/\/www.qlik.com\/\">Qlik<\/a> \u0438 \u0438\u043c \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435. \u042f\u0440\u043a\u0438\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u0435\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0441\u0432\u043e\u0439 (\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439) \u0444\u043e\u0440\u043c\u0430\u0442, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0438\u0445 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.oracle.com\/business-analytics\/business-intelligence\/technologies\/bi-enterprise-edition.html\"><strong>OBIEE<\/strong><\/a>, \u043e\u0447\u0435\u043d\u044c \u0441\u0442\u0430\u0440\u044b\u0439 \u0438 \u043e\u0447\u0435\u043d\u044c \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u044b\u0439 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 (\u043e\u0442 Oracle). \u041e\u043d \u0443\u0436\u0435 \u0433\u0440\u0443\u0437\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u0437 \u0411\u0414, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432 \u043d\u0435\u043c \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0440\u043e\u0432\u043d\u0435\u0439 (3) \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u044d\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0437\u0430\u043c\u043e\u0440\u043e\u0447\u043d\u043e, \u0441\u043b\u043e\u0436\u043d\u043e \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0438 \u043a\u0430\u043a \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0445\u043e\u0434 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u0442\u0430\u0440\u0435\u043b<\/p>\n<\/li>\n<li>\n<p><strong>\u0414\u0440\u0443\u0433\u0438\u0435 ROLAP<\/strong> &#8212; \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0435\u0440\u0443\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 &#171;\u0431\u0435\u0437 \u0437\u0430\u0442\u0435\u0439&#187; \u0438\u0437 \u0411\u0414 (\u0442\u0430\u0431\u043b\u0438\u0446\u0430, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u0437\u0430\u043f\u0440\u043e\u0441) \u0438 \u0438\u0445 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442. \u041d\u0435\u00a0\u0442\u0430\u043a\u00a0\u0431\u044b\u0441\u0442\u0440\u043e \u043a\u0430\u043a\u00a0\u043f.1., \u043d\u043e\u00a0\u0437\u0430\u0442\u043e \u0433\u0438\u0431\u043a\u043e. \u041f\u0440\u0438\u0447\u0435\u043c \u043d\u0435\u0442 \u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u00ab\u043f\u043e\u0434\u043c\u043e\u0440\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438\u00bb, \u0442.\u00a0\u0435. \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u0440\u0430\u0442\u044c \u0438\u0437\u00a0\u043d\u0443\u0436\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0441\u0432\u0435\u0436\u0438\u043c\u0438. \u0417\u0434\u0435\u0441\u044c \u0432\u0441\u043f\u043e\u043c\u043d\u044e <a href=\"https:\/\/www.fsight.ru\/platform\/\">Prognoz (\u043d\u044b\u043d\u0435 Foresight) Platform<\/a> \u0438 <a href=\"https:\/\/superset.apache.org\/\">\u0433\u0435\u0440\u043e\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043e\u0431\u0437\u043e\u0440\u0430<\/a><\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0447\u0435\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e (<a href=\"https:\/\/www.tableau.com\/\">Tableau<\/a>, &#8230;), \u043d\u043e \u043c\u044b \u0441 \u043d\u0438\u043c\u0438 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 &#8212; \u043f\u0438\u0448\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e \u0442\u043e, \u0447\u0442\u043e \u0437\u043d\u0430\u0435\u043c<\/p>\n<\/li>\n<\/ul>\n<h2>\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 BI-\u0441\u0438\u0441\u0442\u0435\u043c\u0430<\/h2>\n<p>\u041e\u043a\u0435\u0439, \u0438\u0434\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435 &#8212; \u043e\u043f\u0438\u0448\u0435\u043c \u0441\u0445\u0435\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0443 BI. \u0415\u0441\u043b\u0438 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e &#8212; \u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043a\u0430\u043a \u0441\u0432\u043e\u0434\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0432 Excel &#8212; \u0435\u0441\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b (\u0440\u0430\u0437\u0440\u0435\u0437\u044b), \u0435\u0441\u0442\u044c \u043c\u0435\u0440\u044b (\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f). \u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u043c\u044b \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u043c \u043f\u043e &#171;\u043e\u0441\u044f\u043c&#187; X, Y, Z; \u043c\u0435\u0440\u044b &#8212; \u0432 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u044f\u0445, \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 (<em>\u0441\u0443\u043c\u043c\u0430<\/em>, <em>\u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0438 \u0442.\u0434.<\/em>).<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u043e\u044d\u0442\u0430\u043f\u043d\u043e, \u0442\u043e \u0447\u0443\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<ol>\n<li>\n<p>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u0432\u043e\u0434\u0438\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043e\u043d\u0438 \u0436\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0435\u0440\u0438\u043e\u0434 \u0438 \u043b\u044e\u0431\u044b\u0435 \u0434\u0440\u0443\u0433\u0438\u0435)<\/p>\n<\/li>\n<li>\n<p>\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u0435\u043b\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u0432 \u0411\u0414, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043d\u0443\u0436\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043f\u043e\u0434\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0438\u0445 (\u0437\u0434\u0435\u0441\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 &#8212; \u043f\u043e\u0434\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u043e\u043d\u0430 \u0438\u0445 \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0432\u043e where \u0438\u043b\u0438 \u0436\u0435 \u043f\u043e\u0434\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u044b\u0432\u0430\u044f \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 &#8212; \u043e\u0442 \u044d\u0442\u043e\u0433\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438)<\/p>\n<\/li>\n<li>\n<p>\u0421\u0438\u0441\u0442\u0435\u043c\u0430 (\u0443\u0436\u0435 \u0441\u0432\u043e\u0438\u043c\u0438 \u0441\u0438\u043b\u0430\u043c\u0438) \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u043c\u0435\u0440\u044b \u0432 \u0440\u0430\u0437\u0440\u0435\u0437\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432<\/p>\n<\/li>\n<\/ol>\n<h2>\u041f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f<\/h2>\n<p>\u041f\u043e\u043a\u0430 \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e, \u043d\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0443\u0441\u043b\u043e\u0436\u043d\u0438\u043c. \u0412\u0435\u0440\u043d\u0435\u0435 \u0434\u0430\u0436\u0435 \u043d\u0435 \u0442\u0430\u043a &#8212; \u0432 \u0436\u0438\u0437\u043d\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0431\u0438\u0430\u0439\u0449\u0438\u043a\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0442\u043e\u0442 \u043d\u0435\u043b\u043e\u0432\u043a\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443 \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \/ \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430\u0445 \u0411\u0414. \u0412 \u044d\u043f\u043e\u0445\u0443 OBIEE \u043c\u044b \u0434\u0435\u043b\u0430\u043b\u0438 \u044d\u0442\u043e \u043d\u0430 pipelined-\u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 Oracle, \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0436\u0435 \u044d\u043f\u043e\u0445\u0443 &#8230; &#8212; \u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c! \u041d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0447\u0442\u043e \u043d\u0430\u0434\u043e, \u043f\u043e\u0442\u043e\u043c &#8212; \u0437\u0430\u0447\u0435\u043c \u043d\u0430\u0434\u043e:<\/p>\n<ul>\n<li>\n<p>\u0427\u0442\u043e\u0431\u044b \u0432\u0432\u043e\u0434\u0438\u043c\u044b\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0432\u0435\u043b\u0438 \u0441\u0435\u0431\u044f \u043a\u0430\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0442.\u0435. \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0445 (\u0432 \u043d\u0438\u0445) \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0430\u00a0\u0442\u0430\u043a\u0436\u0435:<\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e: \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u043c\u043e\u0433\u043b\u0438 \u0432\u0435\u0441\u0442\u0438 \u0441\u0435\u0431\u044f \u0438 \u00ab\u043a\u0430\u043a \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u043c\u0435\u0441\u0442\u0435\u00bb,\u00a0\u043b\u0438\u0431\u043e\u00a0\u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0430\u043a\u00a0\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0431\u0435\u0437\u00a0\u043f\u043e\u0434\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u043a\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u043f\u043e\u00a0\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c<\/p>\n<\/li>\n<\/ul>\n<h3>\u041f\u0440\u0438\u043c\u0435\u0440 1. \u0420\u0430\u0441\u0447\u0435\u0442 \u0434\u043e\u043b\u0435\u0439<\/h3>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u00a0\u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c, \u0442\u0430\u043a \u043f\u043e\u043f\u0440\u043e\u0449\u0435. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0443\u00a0\u043d\u0430\u0441 \u0435\u0441\u0442\u044c (\u0442\u0430\u0431\u043b\u0438\u0446\u0430) \u00ab\u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u043a\u0438\u00bb (\u0421\u0417), \u0443\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0441\u0442\u044c (\u043f\u043e\u043b\u0435 \u0432\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0435) \u00ab\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u0440\u0443\u0433\u043e\u0432 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u0438\u044f\u00bb, \u0438 \u0438\u0445 \u0430\u043d\u0430\u043b\u0438\u0437 \u0432\u0435\u0434\u0435\u0442\u0441\u044f \u0432\u00a0\u0440\u0430\u0437\u0440\u0435\u0437\u0435 \u0440\u0435\u0433\u0438\u043e\u043d\u043e\u0432. \u041f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u043e\u043b\u044e \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0421\u0417 \u0432\u00a0\u043e\u0431\u0449\u0435\u043c \u0447\u0438\u0441\u043b\u0435 \u0432\u00a0\u0440\u0430\u0437\u0440\u0435\u0437\u0435 \u043a\u0440\u0443\u0433\u043e\u0432. \u041a\u0430\u043a\u00a0\u0431\u0443\u0434\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c:<\/p>\n<ol>\n<li>\n<p>\u0412\u044b\u0431\u0435\u0440\u0435\u043c \u0432\u0441\u0435 \u0421\u0417 \u0437\u0430 \u043f\u0435\u0440\u0438\u043e\u0434 (\u043f\u0435\u0440\u0438\u043e\u0434 &#8212; \u044d\u0442\u043e \u0444\u0438\u043b\u044c\u0442\u0440 = \u0434\u0432\u0435 \u0434\u0430\u0442\u044b)<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u043b\u043e\u0436\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0421\u0417 \u043f\u043e \u0440\u0435\u0433\u0438\u043e\u043d\u0430\u043c \u0438 \u043f\u043e \u043a\u0440\u0443\u0433\u0430\u043c \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u0438\u044f<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434\u0435\u043b\u0438\u043c \u0447\u0438\u0441\u043b\u043e \u043f\u043e \u0440\u0435\u0433\u0438\u043e\u043d\u0443 \u0438 \u043a\u0440\u0443\u0433\u0443 \u043d\u0430 \u043e\u0431\u0449\u0435\u0435 \u0447\u0438\u0441\u043b\u043e (\u0438 \u0443\u043c\u043d\u043e\u0436\u0438\u043c \u043d\u0430 100%)<\/p>\n<\/li>\n<\/ol>\n<p><em>&#171;\u042d\u0442\u043e, \u0432 \u0446\u0435\u043b\u043e\u043c, \u043c\u043e\u0436\u043d\u043e \u0438 \u043d\u0430 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u0430\u0445 \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0443\u043f\u0435\u0440\u0441\u0435\u0442\u0430 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0437\u0430\u0447\u0435\u043c \u0442\u0443\u0442 \u0447\u0442\u043e \u0442\u043e \u043c\u0443\u0434\u0440\u0438\u0442\u044c?&#187;,<\/em>\u00a0<em>\u2014<\/em>\u00a0 \u0441\u043f\u0440\u043e\u0441\u0438\u0442 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c. <\/p>\n<p>\u0423\u0441\u043b\u043e\u0436\u043d\u0438\u043c &#8212; \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u044b\u0431\u0440\u0430\u043b \u0442\u043e\u043b\u044c\u043a\u043e 2 \u0440\u0435\u0433\u0438\u043e\u043d\u0430 &#8212; <strong>\u0423\u0440\u0430\u043b<\/strong> \u0438 <strong>\u042e\u0433<\/strong>, \u043d\u043e \u0440\u0430\u0441\u0447\u0435\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c &#8212; \u043f\u043e \u0432\u0441\u0435\u043c \u0440\u0435\u0433\u0438\u043e\u043d\u0430\u043c. \u0422.\u0435. \u0434\u043e\u043b\u044f \u0423\u0440\u0430\u043b\u0430 = [\u0427\u0438\u0441\u043b\u043e \u043f\u043e \u0423\u0440\u0430\u043b\u0443] \/ [\u0427\u0438\u0441\u043b\u043e \u043f\u043e \u0432\u0441\u0435\u043c \u0440\u0435\u0433\u0438\u043e\u043d\u0430\u043c] * 100%. \u0410 \u0435\u0441\u043b\u0438 \u0438\u0434\u0442\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0434\u043e\u0440\u043e\u0433\u043e\u0439 &#8212; \u0442\u043e \u0437\u0430 &#171;\u043f\u043e\u043b\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043c&#187; \u0441\u0443\u043f\u0435\u0440\u0441\u0435\u0442 \u0431\u0443\u0434\u0435\u0442 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u043d\u043d\u043e\u0435 &#8212; \u0442.\u0435. \u0442\u043e\u043b\u044c\u043a\u043e \u0423\u0440\u0430\u043b \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u042e\u0433 \u0438, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c, \u0437\u0430 \u043f\u043e\u043b\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043c \u043e\u043d \u043a\u0430\u043a \u0440\u0430\u0437 \u0432\u043e\u0437\u044c\u043c\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u044d\u0442\u0438\u043c \u0434\u0432\u0443\u043c \u0440\u0435\u0433\u0438\u043e\u043d\u0430\u043c, \u0447\u0442\u043e \u043d\u0430\u043c \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u043d\u0430\u0434\u043e.<\/p>\n<p>\u041e\u043a\u0435\u0439, \u0438 \u043a\u0430\u043a?<\/p>\n<p>\u0410 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e, \u0432 \u0446\u0435\u043b\u043e\u043c, \u043d\u043e \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e. \u041d\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u043e \u044d\u0442\u043e \u0438 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f &#8212; \u043c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043f\u0440\u043e \u0411\u0414 PostgreSQL, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0435\u0441\u0442\u044c \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0449\u044c &#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 &#171;\u0440\u0435\u0437\u0430\u043b\u0442\u0441\u0435\u0442&#187; (\u0442.\u0435. \u043d\u0430\u0431\u043e\u0440 \u0441\u0442\u0440\u043e\u043a). <\/p>\n<p>\u0427\u0435\u043c \u043e\u043d\u0438 \u043b\u0443\u0447\u0448\u0435 \u0442\u0430\u0431\u043b\u0438\u0446 \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0439? \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e &#8212; \u0432 \u043d\u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0430 \u043e\u043d\u0438 \u0443\u0447\u0442\u0443\u0442 \u043b\u043e\u0433\u0438\u043a\u0443 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u043d\u0435\u0433\u043e.<\/p>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u043d\u0430\u043c \u0441\u0443\u043f\u0435\u0440\u0441\u0435\u0442 &#8212; \u044d\u0442\u043e <a href=\"https:\/\/jinja.palletsprojects.com\/\">\u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 jinja<\/a><\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0433\u0443\u0433\u043b\u0438\u043c.<br \/><a href=\"https:\/\/superset.apache.org\/docs\/installation\/sql-templating\/\">\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f<\/a> \u0432 \u0446\u0435\u043b\u043e\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0435\u043f\u043b\u043e\u0445\u0430\u044f, \u043d\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u0443\u0445\u043e\u0432\u0430\u0442\u0430, \u043d\u0435 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0441 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0430\u0442\u044c (\u043f\u0440\u0438 \u044d\u0442\u043e\u043c, \u043a\u0430\u043a \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0435\u0441\u0442\u044c \u0438 \u043d\u0435\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438).<br \/>\u0415\u0441\u0442\u044c <a href=\"https:\/\/preset.io\/blog\/intro-jinja-templating-apache-superset\/\">\u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 <\/a>\u043d\u0430 \u0441\u0430\u0439\u0442\u0435\u00a0<a href=\"http:\/\/preset.io\/\">preset.io<\/a> \u0442\u043e\u0436\u0435 \u043f\u043e\u0447\u0438\u0442\u0430\u0435\u043c.<br \/>\u0415\u0441\u0442\u044c <a href=\"https:\/\/superset-bi.ru\/examples-of-using-jinja-templates-in-apache-superset\/\">\u043a\u043e\u0435-\u0447\u0442\u043e \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c<\/a>, \u043d\u043e \u0442\u043e\u0436\u0435 \u043d\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e, \u043f\u0440\u0438\u0447\u0435\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c, \u043d\u043e \u0442\u043e\u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0430 \u0435\u0441\u0442\u044c <a href=\"https:\/\/developers.sber.ru\/docs\/ru\/sdp\/sdpanalytics\/jinia-template\">\u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a> (\u043e\u0442 \u0421\u0431\u0435\u0440\u0430). \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0437\u0434\u043d\u0435\u0435 \u043d\u0430\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c <a href=\"https:\/\/bilab.ru\/vivod-raznih-polei-dataseta-v-apache-superset\">\u043d\u0430 \u044d\u0442\u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b<\/a>, \u0435\u0441\u043b\u0438 \u0431\u044b \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0440\u0430\u043d\u044c\u0448\u0435 &#8212; \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438 \u0441\u0442\u0430\u0442\u044c\u044e \u043d\u0435 \u043f\u0440\u0438\u0448\u043e\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c, \u043d\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0443\u0436 \u043f\u043e\u0437\u0434\u043d\u043e \ud83d\ude09<\/p>\n<p>\u041b\u0430\u0434\u043d\u043e, \u043d\u0430\u0447\u043d\u0435\u043c \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c. \u041d\u043e \u043d\u0430\u0447\u043d\u0435\u043c \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b PostgreSQL. \u041d\u0430\u043f\u0438\u0448\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b &#8212; \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0440\u0430\u0437\u0443 \u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c, \u0447\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0443\u043b\u044c\u0442\u0438\u0432\u044b\u0431\u043e\u0440 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 &#8212; \u0438 \u044d\u0442\u043e \u043d\u0430\u0434\u043e \u0443\u0447\u0435\u0441\u0442\u044c, \u043d\u043e \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u044d\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0434\u0438\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 &#8212; \u0441\u0442\u0440\u043e\u043a\u0430, \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043d\u0430\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f\u043c\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043a (\u0432\u044b\u0431\u0435\u0440\u0435\u043c \u0440\u0435\u0434\u043a\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b): &#171;\u042e\u0433~\u0421\u0438\u0431\u0438\u0440\u044c~\u0423\u0440\u0430\u043b&#187; (\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u0440\u0435\u0433\u0438\u043e\u043d\u043e\u0432), \u0438\u043b\u0438 1~2~4~10 (\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u0440\u0443\u0433\u043e\u0432 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u0438\u044f &#8212; \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0432 \u0441\u0442\u0440\u043e\u043a\u0430-\u0446\u0435\u043b\u043e\u0435).<\/p>\n<details class=\"spoiler\">\n<summary>\u0418\u0442\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u043e\u0439:<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"sql\">CREATE OR REPLACE FUNCTION user_plotn.f_get_test_fraction(p_cycles text, p_regions text)  RETURNS TABLE(val numeric, int_cycle integer, region text, this_sum numeric, total_sum numeric, frac_sum numeric)  LANGUAGE plpgsql  SECURITY DEFINER AS $function$ declare l_regions text[]; declare l_cycles text[]; begin          -- \u041f\u043e\u043b\u0443\u0447\u0438\u043c \u0438\u0437 \u0441\u0442\u0440\u043e\u043a \u0432\u0438\u0434\u0430 \"\u042e\u0433~\u0421\u0438\u0431\u0438\u0440\u044c~\u0426\u0435\u043d\u0442\u0440\" \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439     l_cycles := string_to_array(p_cycles, '~');     l_regions := string_to_array(p_regions, '~');     -- \u0415\u0441\u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0443\u0441\u0442\u044b\u0435 - \u0432\u0441\u0442\u0430\u0432\u0438\u043c \u043e\u0434\u043d\u043e \"\u0441\u043b\u0443\u0436\u0435\u0431\u043d\u043e\u0435\" \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u044b     if coalesce(array_length(l_cycles, 1), 0) = 0 then       l_cycles := array_append(l_cycles, '-1');     end if;     if coalesce(array_length(l_regions, 1), 0) = 0 then       l_regions := array_append(l_regions, '###');     end if;     return query     with filtered as (         select           tr.val,           tr.int_cycle,           tr.region         from           user_plotn.test_fraction tr          -- \u0417\u0434\u0435\u0441\u044c, \u043f\u043e \u0441\u0443\u0442\u0438 - \u043a\u0430\u043a \u0440\u0430\u0437 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0434\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u043a\u0430 \u043f\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c         join unnest(l_cycles) as cycles on cycles.cycles::int4=tr.int_cycle            -- \u042d\u0442\u043e\u0442 \u0431\u043b\u043e\u043a \u043a\u0430\u043a \u0440\u0430\u0437 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0443\u0441\u0442\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 - \u043c\u044b            -- \u0431\u0440\u0430\u043b\u0438 \u0432\u0441\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 - \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u043b\u044f \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u0435\u043b           or cycles.cycles::int4=-1         join unnest(l_regions) as regions on regions.regions=tr.region            -- \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u043b\u044f \u0441\u0442\u0440\u043e\u043a           or regions.regions='###'     ),     calculated as (     select        f.val,       f.int_cycle,       f.region,       (select sum(ff1.val) from filtered ff1          where ff1.int_cycle = f.int_cycle and ff1.region = f.region) as this_sum,       (select sum(ff.val) from filtered ff) as total_sum     from       filtered f     )     select        c.val,       c.int_cycle,       c.region,       c.this_sum,       c.total_sum,       case when c.total_sum > 0 then c.this_sum \/ c.total_sum else 0::numeric(15,2) end as frac_sum      from calculated c       ; end; $function$ ;  -- Permissions  ALTER FUNCTION user_plotn.f_get_test_fraction(text, text) OWNER TO b2g2_bi; GRANT ALL ON FUNCTION user_plotn.f_get_test_fraction(text, text) TO b2g2_bi; <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u0430\u043d\u043d\u044b\u0445:<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a73\/951\/612\/a73951612d977e3e289715fce4980648.png\" alt=\"\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435\" title=\"\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435\" width=\"335\" height=\"241\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a73\/951\/612\/a73951612d977e3e289715fce4980648.png\"\/><\/p>\n<div><figcaption>\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043f\u0443\u0441\u043a\u0430:<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"sql\">select * from user_plotn.f_get_test_fraction('1~2', '\u042e\u0433~\u0421\u0438\u0431\u0438\u0440\u044c');<\/code><\/pre>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6cf\/a00\/5c5\/6cfa005c5cc4bca16a82e2f351759973.png\" alt=\"\u0420\u0430\u0431\u043e\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\" title=\"\u0420\u0430\u0431\u043e\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\" width=\"674\" height=\"129\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6cf\/a00\/5c5\/6cfa005c5cc4bca16a82e2f351759973.png\"\/><\/p>\n<div><figcaption>\u0420\u0430\u0431\u043e\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0439\u0434\u0435\u043c \u0432 superset. \u041f\u0435\u0440\u0432\u044b\u043c \u0448\u0430\u0433\u043e\u043c \u043d\u0430\u0434\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 ENABLE_TEMPLATE_PROCESSING \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u044d\u0442\u043e\u0442 \u0448\u0430\u0433 \u0443 \u043d\u0430\u0441 \u0441\u0434\u0435\u043b\u0430\u043b \u0434\u0435\u0432\u043e\u043f\u0441-\u0438\u043d\u0436\u0435\u043d\u0435\u0440.<\/p>\n<p>\u0418\u0434\u0435\u043c \u0432 SQLLab, \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043e\u0442\u0442\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043d\u0430\u0448 \u0437\u0430\u043f\u0440\u043e\u0441 \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d\u044b. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 &#8212; \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0432 \u0441\u0443\u043f\u0435\u0440\u0441\u0435\u0442\u0435:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/cd6\/4d3\/1cd\/cd64d31cdd068e16127397cd394e26c3.png\" alt=\"\u0417\u0430\u043f\u0440\u043e\u0441 \u0432 SQLLab \u0432 \u0441\u0443\u043f\u0435\u0440\u0441\u0435\u0442\u0435\" title=\"\u0417\u0430\u043f\u0440\u043e\u0441 \u0432 SQLLab \u0432 \u0441\u0443\u043f\u0435\u0440\u0441\u0435\u0442\u0435\" width=\"808\" height=\"665\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cd6\/4d3\/1cd\/cd64d31cdd068e16127397cd394e26c3.png\"\/><\/p>\n<div><figcaption>\u0417\u0430\u043f\u0440\u043e\u0441 \u0432 SQLLab \u0432 \u0441\u0443\u043f\u0435\u0440\u0441\u0435\u0442\u0435<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432\u0441\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e-\u0434\u0443\u0440\u0430\u0446\u043a\u0438. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e &#171;\u043f\u0440\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435&#187; \u0432 \u0437\u0430\u043f\u0440\u043e\u0441 (\u0432 \u0448\u0430\u0431\u043b\u043e\u043d) \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f (\u0441\u043c. filter_values), \u043d\u043e \u043f\u0440\u0438 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432 SQLLab &#8212; \u043e\u043d\u0438 \u0435\u0449\u0435 \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0438 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0435 \u0441\u0435\u043a\u0446\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u0438\u0445 &#171;\u043e\u0431\u043e\u0439\u0442\u0438&#187;. \u0417\u0430\u0447\u0435\u043c? \u0412\u043e\u0442 \u043c\u043d\u0435 \u0441\u0430\u043c\u043e\u043c\u0443 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0437\u0430\u0447\u0435\u043c, \u043d\u043e \u0432\u0430\u043c \u0443\u0436\u0435 \u0434\u0430\u0436\u0435 \u043d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0440\u043e\u0441 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b\u0441\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e &#8212; \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u0442\u043e\u043c\u0443. <\/p>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0441\u043a\u0430\u0436\u0443 \u0437\u0430 \u044f\u0437\u044b\u043a \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445 jinja &#8212; \u0432\u0440\u043e\u0434\u0435 \u0431\u044b \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043e\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u043e\u0445\u043e\u0436\u0438\u043c \u043d\u0430 python, \u043d\u043e \u044d\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u0438\u0442\u043e\u043d. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u0435\u043b (|join). \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u043f\u043e\u0448\u043b\u0438 \u0433\u0443\u0433\u043b\u0438\u0442\u044c \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0438\u0442\u043e\u043d\u0435, \u043d\u043e \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442. <\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u043e\u0438\u0441\u043a \u0440\u0435\u0448\u0435\u043d\u0438\u044f<\/summary>\n<div class=\"spoiler__content\">\n<p>\u041b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u043e &#8212; \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u044d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043c\u044b \u0432\u0434\u0432\u043e\u0435\u043c \u0441 \u043d\u0430\u0448\u0438\u043c AI\/ML \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u043c \u0443\u0448\u043b\u0438 &#8212; \u044f \u0433\u0443\u0433\u043b\u0438\u0442\u044c, \u0430 \u043e\u043d &#8212; \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0443 \u043d\u0430\u0448\u0435\u0439 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0438 &#171;\u0412\u0430\u0441\u0438\u043b\u0438\u0441\u0430&#187; (\u0420\u0422\u041a \u041d\u0435\u0439\u0440\u043e). \u041a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443 \u043f\u0440\u0438\u0448\u043b\u0438 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u043f\u0440\u0438\u0447\u0435\u043c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u043c\u0443.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/0a9\/23d\/47b\/0a923d47bba7567358b61f99de640bb1.png\" alt=\"\u0412\u0430\u0441\u0438\u043b\u0438\u0441\u0430 \u0437\u0430 \u0440\u0430\u0431\u043e\u0442\u043e\u0439\" title=\"\u0412\u0430\u0441\u0438\u043b\u0438\u0441\u0430 \u0437\u0430 \u0440\u0430\u0431\u043e\u0442\u043e\u0439\" width=\"775\" height=\"820\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0a9\/23d\/47b\/0a923d47bba7567358b61f99de640bb1.png\"\/><\/p>\n<div><figcaption>\u0412\u0430\u0441\u0438\u043b\u0438\u0441\u0430 \u0437\u0430 \u0440\u0430\u0431\u043e\u0442\u043e\u0439<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u0432 \u043a\u043e\u0434\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0442\u0430\u043a\u0430\u044f &#171;\u043a\u043e\u043b\u0431\u0430\u0441\u0430&#187; \u0441 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c\u0438. \u041a\u0430\u043a \u043f\u043e \u043c\u043d\u0435 &#8212; \u0441\u0438\u043b\u044c\u043d\u043e \u043d\u0435\u0447\u0438\u0442\u0430\u0435\u043c\u043e, \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0443\u0439\u0442\u0438 \u0432 plpgsql (\u0445\u043e\u0442\u044f, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0438 \u0431\u0435\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043d\u043e \u043c\u043d\u0435 \u0442\u0430\u043a \u0443\u0434\u043e\u0431\u043d\u0435\u0435).<\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441, \u0432\u0438\u0434\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u0430\u0442\u0430\u0441\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0442\u043e\u043c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0434\u043b\u044f <em>\u0447\u0430\u0440\u0442\u043e\u0432<\/em> \u0438 <em>\u0434\u044d\u0448\u0431\u043e\u0440\u0434\u043e\u0432<\/em>. <\/p>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438, \u043f\u043e\u0448\u043b\u0438 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c &#8212; \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0447\u0430\u0440\u0442 \u0432 \u0432\u0438\u0434\u0435 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u043d\u0430 \u0435\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u044d\u0448\u0431\u043e\u0440\u0434, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u044b:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/68b\/fe8\/51f\/68bfe851f6a9539cd04453c5aa4ad186.png\" alt=\"\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0447\u0430\u0440\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0434\u044d\u0448\u0431\u043e\u0440\u0434\u0430\" title=\"\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0447\u0430\u0440\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0434\u044d\u0448\u0431\u043e\u0440\u0434\u0430\" width=\"1085\" height=\"424\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/68b\/fe8\/51f\/68bfe851f6a9539cd04453c5aa4ad186.png\"\/><\/p>\n<div><figcaption>\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0447\u0430\u0440\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0434\u044d\u0448\u0431\u043e\u0440\u0434\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 &#8212; \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u0445\u043e\u0442\u0435\u043b\u0438. \u041f\u0430\u0440\u0443 \u0441\u043b\u043e\u0432 \u043d\u0430\u0441\u0447\u0435\u0442 \u043f\u043e\u0434\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u043a\u0438. \u041f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 &#8212; \u043c\u044b \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u043c \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u0432\u0430\u0436\u0434\u044b &#8212; \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 PostgreSQL (\u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u0430 \u0434\u0436\u043e\u0439\u043d\u0430\u0445), \u043f\u043e\u0442\u043e\u043c, \u043f\u043e\u0432\u0435\u0440\u0445 \u044d\u0442\u043e\u0433\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u0435\u0449\u0435 \u0441\u0430\u043c \u0441\u0443\u043f\u0435\u0440\u0441\u0435\u0442. \u041f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043e\u043d \u0443\u0436\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442, \u043d\u043e \u043e\u043d \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0441\u0442\u0430\u0440\u0430\u0435\u0442\u0441\u044f ) \u0427\u0442\u043e\u0431\u044b \u044d\u0442\u043e\u0433\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c &#8212; \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/github.com\/apache\/superset\/issues\/19271\">\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0442\u0440\u044e\u043a<\/a> &#8212; \u0443\u0431\u0438\u0440\u0430\u043d\u0438\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0438\u0437 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0442\u0430\u043a\u0436\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 jinja.<\/p>\n<h4>\u041f\u0440\u0438\u043c\u0435\u0440 2. \u0412\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0440\u044f\u0434\u044b<\/h4>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u0440\u0438\u043c\u0435\u0440 &#8212; \u0441 \u0434\u0430\u0442\u0430\u043c\u0438. <\/p>\n<p>\u0412\u0432\u043e\u0434\u043d\u0430\u044f &#8212; \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0438 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0441\u0438\u0441\u0442\u0435\u043c. \u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u0440\u0430\u0441\u0447\u0435\u0442\u044b \u0443 \u043d\u0430\u0441 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 Airflow, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u044b \u0432\u0435\u0434\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u0442\u043c\u0435\u0447\u0430\u0435\u043c \u0432\u0441\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 &#8212; \u043a\u043e\u0433\u0434\u0430, \u0447\u0442\u043e \u043c\u044b \u0433\u0440\u0443\u0437\u0438\u043b\u0438, \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0438\u043b\u0438 \u043d\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u0441\u0447\u0438\u0442\u0430\u043b\u0438 \u0438 \u0442.\u0434.<\/p>\n<p>Airflow \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0432\u0438\u0437\u0443\u0430\u043b \u0434\u043b\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430, \u043d\u043e \u043d\u0430\u043c \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u044d\u0448\u0431\u043e\u0440\u0434\u044b \u0441\u043e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u043e\u0439. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u044b \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u0438 \u0440\u0430\u0437\u043b\u043e\u0436\u0438\u0442\u044c \u0432\u0441\u0435 \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0448\u043a\u0430\u043b\u0435 \u0441 \u0448\u0430\u0433\u043e\u043c \u0432 1 \u0434\u0435\u043d\u044c. \u0410 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0437\u0430 \u0442\u0435 \u0434\u0430\u0442\u044b, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043d\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b\u0438. \u0422.\u0435. \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0442\u043e &#171;\u0432\u0447\u0435\u0440\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430, \u043f\u043e \u043a\u0430\u043a\u0438\u043c \u043b\u0438\u0431\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u0430 \u043d\u0435 \u0431\u044b\u043b\u0430&#187; \u043c\u044b \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 generate_series \u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u0435\u0433\u043e \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430. \u0410 \u0432\u043e\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430, \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0438\u0437 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0441\u0443\u043f\u0435\u0440\u0441\u0435\u0442\u0430. \u0412 \u0438\u0442\u043e\u0433\u0435, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0442\u0430\u043a\u043e\u0435 \u0441\u0438\u043c\u043f\u0430\u0442\u0438\u0447\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435:<\/p>\n<pre><code class=\"sql\">CREATE OR REPLACE FUNCTION cmu_log.f_get_log_data(p_date_from date, p_date_to date)  RETURNS TABLE(date_stat date, id_log bigint, src_id bigint, entity_name text, date_from timestamp without time zone, date_to timestamp without time zone, cnt_rows numeric, date_load_start timestamp without time zone, date_load_finish timestamp without time zone, status_load smallint, date_dwh_start timestamp without time zone, date_dwh_finish timestamp without time zone, status_dwh smallint, comment_process text, entity_display_name text, entity_dag_name text, cnt_rows_load_ok numeric, cnt_rows_dwh_ok numeric, cnt_load_errors numeric, cnt_dwh_errors numeric)  LANGUAGE plpgsql  SECURITY DEFINER AS $function$ begin         return query     select        dd.dd::date as date_stat,       l.id_log,       l.src_id,       ei.entity::text as entity_name,       l.date_from,       l.date_to,       l.cnt_rows,       l.date_load_start,       l.date_load_finish,       l.status_load,       l.date_dwh_start,       l.date_dwh_finish,       l.status_dwh,       l.comment_process,       ei.entity_display_name,       ei.entity_dag_name,       case when l.status_load = 1 then l.cnt_rows else 0 end::numeric cnt_rows_load_ok,       case when l.status_dwh = 1 then l.cnt_rows else 0 end::numeric cnt_rows_dwh_ok,       case when l.status_load = 1 then 0 else 1 end::numeric cnt_load_errors,       case when l.status_dwh = 1 then 0 else 1 end::numeric cnt_dwh_errors     from        generate_series(p_date_from, p_date_to, '1 day'::interval) dd       left join cmu_log.entity_info ei on 1=1       left join cmu_log.loading_logs l on dd.dd::date = l.date_load                                        and l.entity = ei.entity; end; $function$ ;<\/code><\/pre>\n<p>\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4e1\/db1\/b1f\/4e1db1b1f55ef3c33d18db62f4b4a9ce.png\" alt=\"\u0410\u043d\u0430\u043b\u0438\u0437 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445\" title=\"\u0410\u043d\u0430\u043b\u0438\u0437 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445\" width=\"1185\" height=\"528\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4e1\/db1\/b1f\/4e1db1b1f55ef3c33d18db62f4b4a9ce.png\"\/><\/p>\n<div><figcaption>\u0410\u043d\u0430\u043b\u0438\u0437 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445<\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u0441\u0443\u043f\u0435\u0440\u0441\u0435\u0442\u0435 \u0437\u0430\u043f\u0440\u043e\u0441 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u043e\u0442 \u0442\u0430\u043a (\u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 &#171;if not from_dttm&#187; &#8212; \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e &#171;if from_dttm is not none&#187;, \u043d\u043e \u044d\u0442\u043e \u043a\u0430\u043a \u0440\u0430\u0437 \u0438 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442):<\/p>\n<pre><code class=\"sql\">select * from cmu_log.f_get_log_data( {% if from_dttm %} '{{ from_dttm }}' {% endif %} {% if not from_dttm %} current_date - 14 {% endif %} ,  {% if to_dttm %} '{{ to_dttm }}' {% endif %} {% if not to_dttm %} current_date {% endif %} )<\/code><\/pre>\n<h3>\u0424\u0438\u0433\u0443\u0440\u0430 \u0432\u0442\u043e\u0440\u0430\u044f, \u043f\u0435\u0447\u0430\u043b\u044c\u043d\u0430\u044f<\/h3>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/47a\/498\/157\/47a49815753d8a5ba45eeb9b701cb15d.png\" width=\"1280\" height=\"720\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/47a\/498\/157\/47a49815753d8a5ba45eeb9b701cb15d.png\"\/><\/figure>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u00ab\u0433\u043b\u0430\u0432\u044b\u00bb \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u0440\u0435\u043b\u043e (\u0441\u0442\u0430\u0442\u044c\u044f \u0432\u0441\u0435 \u0442\u0430\u043a\u0438 \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u043d\u0435\u00a0\u0437\u0430\u00a0\u043e\u0434\u0438\u043d \u0434\u0435\u043d\u044c), \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u044f \u043d\u0430\u0448\u0435\u043b \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u041d\u043e\u00a0\u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e, \u0434\u0443\u043c\u0430\u043b, \u0447\u0442\u043e\u00a0\u0443\u00a0\u043c\u0435\u043d\u044f \u043d\u0435\u00a0\u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0438 \u0445\u043e\u0442\u0435\u043b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u00ab\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435\u00a0\u043f\u0440\u0438\u0432\u0435\u043b \u043a\u00a0\u0443\u0441\u043f\u0435\u0445\u0443\u00bb \u0438 \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0441\u043e\u0432\u0435\u0442\u0430 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445.<\/p>\n<h4>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u0432\u0432\u043e\u0434 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 BI-\u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445<\/h4>\n<p>\u0418\u043d\u043e\u0433\u0434\u0430 \u043d\u0430\u043c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0435, \u043f\u043e\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u0438\u0445 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0440\u0430\u0437\u0440\u0435\u0437\u0430\u0445 &#8212; \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u0438 \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0430\u0445, \u043d\u043e \u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0432\u0432\u043e\u0434. \u0422.\u0435. \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e &#8212; \u0433\u0434\u0435-\u0442\u043e \u0432\u0432\u043e\u0434\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u0438\u0441\u044c (\u0432 \u0411\u0414), \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c (\u0432 \u0440\u0430\u0441\u0447\u0435\u0442\u0430\u0445, \u0432 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u0445 \u043d\u0430\u0431\u043e\u0440\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445). <\/p>\n<p>\u0422\u043e\u0442 \u0436\u0435 \u0441\u0430\u043c\u044b\u0439 (\u0447\u0442\u043e \u0438 \u0432\u044b\u0448\u0435) \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c (\u0431\u0443\u0434\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0447\u0442\u043e \u043e\u043d \u0435\u0449\u0435 \u043d\u0435 \u0443\u0448\u0435\u043b, \u0430 \u0441 \u043d\u0430\u043c\u0438) \u043c\u043e\u0436\u0435\u0442 \u0441\u043a\u0430\u0437\u0430\u0442\u044c &#8212; \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0430 BI \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u043e\u0434\u043d\u0430\u043a\u043e \u0436\u0435:<\/p>\n<ol>\n<li>\n<p>\u0418\u043d\u043e\u0433\u0434\u0430 \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0432\u0432\u0435\u0441\u0442\u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e &#8212; \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b, \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0438 \u0442.\u0434.<\/p>\n<\/li>\n<li>\n<p>\u0418\u043d\u043e\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0434\u0438\u043d \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u043b \u0443 \u043d\u0430\u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442\u0447\u0435\u0442\u043e\u0432 \u043f\u043e\u0441\u043b\u0435 \u0438\u0445 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/p>\n<\/li>\n<\/ol>\n<p>\u0418 \u0432 \u044d\u0442\u0438\u0445 \u043a\u0435\u0439\u0441\u0430\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0439\u0442\u0438 \u0434\u0432\u0443\u043c\u044f \u043f\u0443\u0442\u044f\u043c\u0438:<\/p>\n<ul>\n<li>\n<p>\u0421\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0435\u0441\u0442\u043d\u043e\u0435 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0441 \u0431\u044d\u043a\u0435\u043d\u0434\u043e\u043c, \u0441 \u0444\u0440\u043e\u043d\u0442\u043e\u043c \u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0432\u0432\u043e\u0434 \u0432 \u043d\u0435\u043c. \u042d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e. \u041d\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0438 \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u0431\u044b\u0432\u0430\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0435:<\/p>\n<ul>\n<li>\n<p>\u041d\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u0444\u0440\u043e\u043d\u0442\/\u0431\u044d\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f &#171;\u0433\u043e\u0440\u043e\u0434\u0438\u0442\u044c \u043e\u0433\u043e\u0440\u043e\u0434&#187; \u0441 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \/ \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 BI-\u0441\u0438\u0441\u0442\u0435\u043c, \u043e\u0431\u044b\u0447\u043d\u043e \u043e\u043d\u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f Write Back Functionality:<\/p>\n<ul>\n<li>\n<p>\u0423 OBIEE \u043c\u044b <a href=\"https:\/\/www.clearpeaks.com\/write-back-functionality-obiee\/\">\u044d\u0442\u0443 \u0444\u0438\u0448\u043a\u0443<\/a> \u0442\u0430\u043a \u0438 \u043d\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0432\u0430\u043b\u0438 &#8212; \u0438 \u043a\u043e\u043b\u043b\u0435\u0433\u0438 \u0443\u043f\u043e\u0440\u043d\u043e \u043e\u0442\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u043b\u0438, \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u044f, \u0447\u0442\u043e \u0442\u0430\u043c \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0438\u0432\u043e<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0442\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e (\u0442\u043e\u0436\u0435 \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u043c\u0438) \u0443 Prognoz Platform \u0438 \u044d\u0442\u043e \u043c\u044b \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 &#8212; \u0442\u0430\u043c \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043d\u0430 \u043c\u0430\u043d\u0435\u0440 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432 Excel<\/p>\n<\/li>\n<li>\n<p>\u0410 \u0432\u043e\u0442 \u0443 Superset \u0442\u0430\u043a\u043e\u0433\u043e \u043c\u044b \u043d\u0435 \u043d\u0430\u0448\u043b\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 &#8212; \u0441\u043d\u043e\u0432\u0430 \u0434\u0430\u0434\u0438\u043c \u0432\u043e\u043b\u044e \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u0442\u0432\u0443:<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c\u0443 \u0432\u0432\u043e\u0434\u0443 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Apache Superset<\/p>\n<\/li>\n<\/ul>\n<h4>\u041f\u043e\u0438\u0441\u043a \u0440\u0435\u0448\u0435\u043d\u0438\u044f<\/h4>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0439. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043c\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u043f\u043e\u0439\u0442\u0438 \u0434\u043e\u0440\u043e\u0433\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0445\u043e\u0442\u0435\u043b\u0438 \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432\u0432\u043e\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. \u041a\u0430\u043a\u0438\u0435 \u0442\u0443\u0442 \u043f\u043b\u044e\u0441\u044b:<\/p>\n<ul>\n<li>\n<p>\u0415\u0441\u0442\u044c \u043e\u0447\u0435\u043d\u044c <a href=\"https:\/\/ivan-shamaev.ru\/deploy-custom-visualization-apache-superset\/\">\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b<\/a><\/p>\n<\/li>\n<li>\n<p>\u042d\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438<\/p>\n<\/li>\n<li>\n<p>\u042d\u0442\u043e (\u043d\u0430\u0442\u0438\u0432\u043d\u043e) \u0431\u044b \u0432\u0441\u0442\u0440\u043e\u0438\u043b\u043e\u0441\u044c \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441\u0443\u043f\u0435\u0440\u0441\u0435\u0442\u0430<\/p>\n<\/li>\n<li>\n<p>\u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0444\u0440\u043e\u043d\u0442<\/p>\n<\/li>\n<li>\n<p>\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438 \u0431\u044d\u043a, \u0435\u0441\u043b\u0438 \u043a\u0430\u043a \u0442\u043e &#171;\u043f\u043e\u0434\u0441\u0435\u0441\u0442\u044c&#187; \u043d\u0430 \u0432\u0435\u0431\u0441\u0435\u0440\u0432\u0435\u0440 \u0441\u0443\u043f\u0435\u0440\u0441\u0435\u0442\u0430, \u0442.\u0435. \u043c\u044b \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043d\u0435 \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0435\u043c &#171;\u0438\u043d\u0444\u0440\u0443&#187;<\/p>\n<\/li>\n<\/ul>\n<p>\u0418 \u043c\u0438\u043d\u0443\u0441\u044b:<\/p>\n<ul>\n<li>\n<p>\u0414\u0430, \u044d\u0442\u043e \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0430\u044f \u0444\u0440\u043e\u043d\u0442-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430, \u0438 \u0431\u044d\u043a &#8212; \u0442.\u0435. \u0435\u0441\u043b\u0438 \u0443 \u043d\u0430\u0441 \u043d\u0435 \u0431\u044b\u043b\u043e \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430, \u0442\u043e \u043e\u043d \u0438 \u043d\u0435 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f<\/p>\n<\/li>\n<li>\n<p>\u0418 \u043f\u0440\u0438\u0442\u043e\u043c \u043a\u0440\u0430\u0439\u043d\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0430\u044f, \u043d\u0435 \u0432\u0441\u0435 \u0437\u0430\u0445\u043e\u0442\u044f\u0442, \u043d\u0435 \u0432\u0441\u0435 \u0441\u043c\u043e\u0433\u0443\u0442<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u043a\u0435\u0439, \u043c\u044b \u0435\u0449\u0451 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u043b\u0438 \u0438 \u043f\u0440\u0438\u0448\u043b\u0438 \u043a \u0440\u0435\u0448\u0435\u043d\u0438\u044e \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0433\u043b\u0430\u0432\u044b. \u041d\u0443 \u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u0438 \u043d\u0435\u0442? \u0412\u043e\u0437\u044c\u043c\u0435\u043c \u0432\u0441\u0435 \u0442\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0447\u0442\u043e \u0438 &#171;\u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0433\u043b\u0430\u0432\u0435&#187;, \u043d\u0430\u0440\u0438\u0441\u0443\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c:<\/p>\n<pre><code class=\"sql\">CREATE OR REPLACE FUNCTION user_plotn.f_get_test_user_input(p_do_input text, p_val1 text, p_val2 text)  RETURNS TABLE(do_input text, val1 text, val2 text)  LANGUAGE plpgsql  SECURITY DEFINER AS $function$ begin           if (p_do_input = '1') then          perform user_plotn.test_user_input(p_val1, p_val2);         insert into user_plotn.test_user_input values (           p_do_input,           p_val1,           p_val2         );         return query         select            p_do_input,           p_val1,           p_val2;     else         return query         select            c.do_input,           c.val1,           c.val2         from user_plotn.test_user_input c           ;     end if; end; $function$ ;<\/code><\/pre>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e &#8212; \u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u0432\u0430 \u0440\u0435\u0436\u0438\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b &#8212; \u0435\u0441\u043b\u0438 \u0432 p_do_input \u043f\u0435\u0440\u0435\u0434\u0430\u043b\u0438 &#8216;1&#8217; \u043e\u043d\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u0430 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434 \u043e\u0442\u0434\u0430\u0441\u0442 \u0438\u0445 \u0436\u0435. \u0418\u043d\u0430\u0447\u0435 &#8212; \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0433\u0440\u0435\u0431\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u044d\u0442\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0446\u0435\u043b\u0438\u043a\u043e\u043c. \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. <\/p>\n<p>\u041f\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432 dbeaver. \u0412\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f. \u041f\u0440\u0438\u043a\u0440\u0443\u0442\u0438\u043c \u043a \u0441\u0443\u043f\u0435\u0440\u0441\u0435\u0442\u0443:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fd3\/d55\/8b9\/fd3d558b9f0eac117a980097ec3fa4ea.png\" alt=\"\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0432\u0432\u043e\u0434\u0430\" title=\"\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0432\u0432\u043e\u0434\u0430\" width=\"669\" height=\"534\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fd3\/d55\/8b9\/fd3d558b9f0eac117a980097ec3fa4ea.png\"\/><\/p>\n<div><figcaption>\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0432\u0432\u043e\u0434\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0443, \u0432\u043e\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u0438 \u0440\u043e\u0434\u0438\u043b\u0441\u044f \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u044d\u0442\u043e\u0439 \u0433\u043b\u0430\u0432\u044b &#8212; \u0432 \u0441\u0443\u043f\u0435\u0440\u0441\u0435\u0442\u0435 \u0432\u0441\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u0436\u0435,  \u043d\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f. \u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u0443 \u043d\u0435\u0433\u043e &#171;\u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c&#187; \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f commit \u043f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 (\u0441\u0445\u043e\u0434\u0443 \u0432\u0438\u0434\u0438\u0442\u0441\u044f \u0441\u043a\u043e\u0440\u0435\u0435 \u044d\u0442\u0430 \u043f\u0440\u0438\u0447\u0438\u043d\u0430). <\/p>\n<h4>\u0420\u0435\u0448\u0435\u043d\u0438\u0435<\/h4>\n<p>\u0418 \u0432\u043e\u0442 \u0437\u0434\u0435\u0441\u044c \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u0430 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u043c\u044b\u0441\u043b\u044c &#8212; \u0430 \u043c\u043e\u0436\u043d\u043e \u0436\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/www.cybertec-postgresql.com\/en\/implementing-autonomous-transactions-in-postgres\/\">\u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u0443\u044e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e<\/a> (\u043f\u043e\u0447\u0435\u043c\u0443 \u0441\u0440\u0430\u0437\u0443 \u0442\u043e \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u0430?). \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0439 \u0432\u0441\u0442\u0430\u0432\u043a\u0438:<\/p>\n<pre><code class=\"sql\">CREATE OR REPLACE FUNCTION user_plotn.test_user_input(p_val1 text, p_val2 text)  RETURNS void  LANGUAGE sql AS $function$    select public.dblink('host=x.x.x.x port=5432 user=XXX password=YYY dbname=ZZZ'::text,     format('insert into user_plotn.test_user_input select 1, %L, %L', p_val1, p_val2)); $function$ ;<\/code><\/pre>\n<p>\u0418 \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0443\u044e:<\/p>\n<pre><code class=\"sql\">... if (p_do_input = '1') then          perform user_plotn.test_user_input(p_val1, p_val2);             return query         select            p_do_input,           p_val1,           p_val2; ...<\/code><\/pre>\n<p>\u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u0435\u043c \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 (\u0432 \u0441\u0443\u043f\u0435\u0440\u0441\u0435\u0442\u0435, \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435):<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d32\/9ee\/a5a\/d329eea5af6292a62082fb3d25da431c.png\" width=\"879\" height=\"430\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d32\/9ee\/a5a\/d329eea5af6292a62082fb3d25da431c.png\"\/><\/figure>\n<p>\u0418 \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442!<\/p>\n<p>\u041a\u0430\u043a\u0438\u0435 \u044d\u0442\u043e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u043c \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u044b \u043f\u043e\u043c\u0438\u043c\u043e, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0441\u0430\u043c\u043e\u0433\u043e \u0432\u0432\u043e\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0445?<\/p>\n<ul>\n<li>\n<p>\u041c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u044f\u0436\u0435\u043b\u044b\u0435 \u0440\u0430\u0441\u0447\u0435\u0442\u044b, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f (\u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u0432 \u0444\u043e\u043d\u0435). <a href=\"https:\/\/p2d2.cz\/files\/async-queries-p2d2.pdf\">\u0412\u043e\u0442 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b<\/a> \u043f\u0440\u043e \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0441\u0442\u044c \u0432 PostgreSQL<\/p>\n<\/li>\n<li>\n<p>\u041c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0430\u0436\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0440\u0430\u0441\u0447\u0435\u0442\u043e\u0432 \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0435\u0435 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0434\u044d\u0448\u0431\u043e\u0440\u0434, \u0434\u0430\u0432\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0434\u044d\u0448\u0431\u043e\u0440\u0434\u044b \u043f\u043e \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0445<\/p>\n<\/li>\n<\/ul>\n<h3>\u0412\u044b\u0432\u043e\u0434\u044b<\/h3>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u043c\u044b \u0435\u0449\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0431\u0438\u0440\u0430\u0435\u043c \u043e\u0431\u043e\u0440\u043e\u0442\u044b \u0432 \u043d\u043e\u0432\u043e\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0435, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u0438 \u043d\u044e\u0430\u043d\u0441\u0430\u0445. \u041d\u043e \u043e\u0442\u043c\u0435\u0447\u0443 &#8212; \u043c\u044b \u0435\u0433\u043e \u0443\u0436\u0435 \u043f\u043e\u043b\u044e\u0431\u0438\u043b\u0438. \u0423 \u043d\u0430\u0441 \u0432 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u043e\u0440\u043a  &#8212; RT.DataVision \u0438, \u0445\u043e\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044f \u0438 \u0432\u0441\u0435 \u0442\u0430\u043a\u0438, \u043e &#171;\u0447\u0438\u0441\u0442\u043e\u043c Superset&#187; \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u043a\u043e\u043b\u043b\u0435\u0433\u0438 \u043f\u043e\u043c\u043e\u0433\u043b\u0438 \u043d\u0430\u043c \u0441\u0442\u0430\u0440\u0442\u0430\u043d\u0443\u0442\u044c \u0438 \u0432\u0441\u0435 \u0447\u0442\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432\u044b\u0448\u0435 &#8212; \u0432 \u0446\u0435\u043b\u043e\u043c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e \u0438 \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u0444\u043e\u0440\u043a\u0443.<\/p>\n<p>\u0427\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0435\u0449\u0435:<\/p>\n<ol>\n<li>\n<p>\u041d\u043e\u0432\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b \u0447\u0435\u043c &#171;\u0445\u043e\u0440\u043e\u0448\u043e \u0441\u0435\u0431\u044f \u0437\u0430\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u0432\u0448\u0438\u0435&#187;, \u043c\u044b \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u043c \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u043d\u044e\u0430\u043d\u0441\u044b \u0438 \u043d\u0430\u043c \u043c\u043d\u043e\u0433\u043e\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u043e\u0441\u044c. \u0414\u0430, \u043e\u043d \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432 \u0442\u043e\u0439 \u0436\u0435 Prognoz Platform \u0432\u043d\u0443\u0442\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 &#171;\u0441\u0432\u043e\u044f Delphi &#8212; \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u043e\u0442 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0444\u043e\u0440\u043c, \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044f \u0441\u0432\u043e\u0438\u043c \u044f\u0437\u044b\u043a\u043e\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Fore&#187;, \u043d\u043e \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u043e \u044d\u0442\u043e \u043d\u0430\u0434\u043e \u0434\u043b\u044f BI? \u0414\u0430 \u0438 \u043f\u043e\u0440\u043e\u0433 \u0432\u0445\u043e\u0434\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u0435\u043b\u0438\u043a<\/p>\n<\/li>\n<li>\n<p>\u0412 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043d\u0435\u043f\u043b\u043e\u0445\u0430\u044f \u0440\u043e\u043b\u0435\u0432\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c &#8212; \u043f\u0440\u0438\u0447\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u0430\u043a \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0443\u044e RBAC, \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u043e\u0441\u0442\u0430\u0432\u0430 \u0440\u043e\u043b\u0435\u0439, \u0442\u0430\u043a \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c Row-Level \u0434\u043e\u0441\u0442\u0443\u043f &#8212; \u0442.\u0435. \u0434\u0430\u0432\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0447\u0430\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u043c<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0435\u0441\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f &#8212; \u043e\u043d\u0438 \u0432\u043e \u0432\u0441\u0435\u043c &#8212; \u0432 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0445, \u0432 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\u0445, \u043f\u0440\u0438\u043c\u0435\u0440\u044b:<\/p>\n<ol>\n<li>\n<p>\u041d\u0435\u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0432\u044b\u0431\u043e\u0440\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0430 &#8212; \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e &#171;\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b \u0434\u0435\u043b\u0430\u043b\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432&#187;:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b8d\/1bf\/a25\/b8d1bfa25d6e9139847479ea7d5be27d.png\" alt=\"\u0412\u044b\u0431\u043e\u0440 \u043f\u0435\u0440\u0438\u043e\u0434\u0430\" title=\"\u0412\u044b\u0431\u043e\u0440 \u043f\u0435\u0440\u0438\u043e\u0434\u0430\" width=\"631\" height=\"475\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b8d\/1bf\/a25\/b8d1bfa25d6e9139847479ea7d5be27d.png\"\/><\/p>\n<div><figcaption>\u0412\u044b\u0431\u043e\u0440 \u043f\u0435\u0440\u0438\u043e\u0434\u0430<\/figcaption><\/div>\n<\/figure>\n<\/li>\n<li>\n<p>&#171;\u0420\u0430\u043d\u0434\u043e\u043c\u043d\u044b\u0435&#187; \u0446\u0432\u0435\u0442\u0430 \u043a\u043e\u043b\u0431\u0430\u0441\u043e\u043a \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0430\u0445 &#8212; \u0442\u043e\u0433\u0434\u0430 \u043a\u0430\u043a \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a \u043f\u0440\u043e\u0441\u0438\u0442 &#171;\u043f\u043b\u043e\u0445\u043e\u0435&#187; \u043f\u043e\u043a\u0440\u0430\u0441\u0438\u0442\u044c \u0432 \u043a\u0440\u0430\u0441\u043d\u044b\u0439, \u0430 \u0445\u043e\u0440\u043e\u0448\u0435\u0435 \u0432 \u0437\u0435\u043b\u0435\u043d\u044b\u0439, \u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0441\u0430\u043c \u0440\u0435\u0448\u0430\u0435\u0442<\/p>\n<\/li>\n<li>\n<p>\u041f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0438 \u0434\u0430\u043b\u044c\u0448\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u043c\u043d\u043e\u0433\u043e \u0441 \u0447\u0435\u043c \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c<\/p>\n<\/li>\n<\/ol>\n<\/li>\n<li>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e &#8212; \u043c\u044b \u0432\u0441\u0435 \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0435\u043c (!!!). \u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0441\u00a0\u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0434\u0430\u0435\u0442 \u043d\u0430\u00a0\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0438 \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u0447\u0435\u043c \u00ab\u0431\u0438\u0442\u044c\u0441\u044f \u0433\u043e\u043b\u043e\u0432\u043e\u0439 \u043e\u00a0\u043a\u043e\u0440\u043e\u0431\u043a\u0443\u00bb. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043c\u044b \u043f\u043b\u0430\u043d\u043e\u043c\u0435\u0440\u043d\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u0434\u0435\u043b\u0430\u0435\u043c \u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0441\u00a0\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043e\u043a \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 \u043e\u0442\u0447\u0435\u0442\u043e\u0432 \u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432 &#171;\u043f\u043e \u0444\u0440\u043e\u043d\u0442\u0443&#187;. \u041c\u043e\u0433\u043b\u0438 \u043b\u0438 \u043c\u044b \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u043e\u0431 \u044d\u0442\u043e\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432 OBIEE? \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e \u043d\u0435\u0442, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e \u043e\u043d \u043c\u043e\u0433 \u043d\u0430\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c.<\/p>\n<\/li>\n<\/ol>\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0433\u043e \u0441\u0443\u043f\u0435\u0440\u0441\u0435\u0442\u0430!<\/p>\n<h3>\u041a\u043e\u0442\u044b<\/h3>\n<p>\u041f\u043e \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u0438 \u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u044e \u043a\u043e\u0442\u043e\u0432, \u0432\u043e\u0442 \u043e\u043d\u0438, \u043c\u043e\u0438 \u043a\u0440\u0430\u0441\u0430\u0432\u0446\u044b:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/d94\/da6\/b08\/d94da6b08739360d8ef045fd7a7bf90b.jpg\" alt=\"\u041d\u0438\u043a\u043e\u043b\u0430\u0439\" title=\"\u041d\u0438\u043a\u043e\u043b\u0430\u0439\" width=\"3024\" height=\"4032\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d94\/da6\/b08\/d94da6b08739360d8ef045fd7a7bf90b.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>\u041d\u0438\u043a\u043e\u043b\u0430\u0439<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/400\/7ee\/90b\/4007ee90bee90aca5556d2665ae07f22.jpg\" alt=\"\u041c\u0430\u0440\u0438\u044f\" title=\"\u041c\u0430\u0440\u0438\u044f\" width=\"960\" height=\"1280\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/400\/7ee\/90b\/4007ee90bee90aca5556d2665ae07f22.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>\u041c\u0430\u0440\u0438\u044f<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><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\/articles\/772118\/\"> https:\/\/habr.com\/ru\/articles\/772118\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442!<\/p>\n<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0435\u0442\u0438\u043f\u0438\u0447\u043d\u043e\u0439 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u0442\u0435\u043c\u0435, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e &#8212; Apache Superset. \u041e\u0431\u044b\u0447\u043d\u043e \u044f \u043f\u0438\u0448\u0443 \u0434\u043b\u0438\u043d\u043d\u044b\u0435 &#171;\u0444\u0438\u043b\u043e\u0441\u043e\u0444\u0441\u043a\u0438\u0435&#187; \u0441\u0442\u0430\u0442\u044c\u0438 &#171;\u043d\u0430 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u0443\u044e \u0442\u0435\u043c\u0443&#187;, \u043d\u043e \u0432 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 &#8212; \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b. \u0422\u0430\u043a \u0447\u0442\u043e \u043a\u043e\u043c\u0443-\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e, \u043d\u043e, \u043e\u043f\u044f\u0442\u044c \u0442\u0430\u043a\u0438, \u0432\u0434\u0440\u0443\u0433 \u043a\u043e\u043c\u0443 \u043f\u043e\u043c\u043e\u0436\u0435\u0442. \u041f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e \u0441\u0443\u043f\u0435\u0440\u0441\u0435\u0442\u0443 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435 \u043e\u0441\u043a\u043e\u0440\u0431\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0430\u043b\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432. \u0414\u0430, \u0443 \u043d\u0435\u0433\u043e \u0432 \u0446\u0435\u043b\u043e\u043c \u043d\u0435\u043f\u043b\u043e\u0445\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f, \u043d\u043e \u043e\u043d\u0430 \u0432\u0441\u0435 \u0436\u0435 &#8212; \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043c\u0435\u0440\u0443 \u0441\u0443\u0445\u0430\u044f, \u0432 \u043d\u0435\u0439 \u043d\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0439, \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432.<\/p>\n<h2>\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u043f\u043e\u0447\u0435\u043c\u0443 Superset<\/h2>\n<p>\u041c\u044b \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043e\u043b\u0433\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u0441\u044f \u0442\u0435\u043c\u043e\u0439 BI, \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u043d\u0430 OBIEE, MS Power BI, \u043d\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438\u0441\u044c, \u043d\u0430\u0441\u0442\u0443\u043f\u0438\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0437\u0430\u043c\u0435\u0449\u0435\u043d\u043d\u044b\u0445 \u0438 \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u0438 \u0437\u0434\u0435\u0441\u044c \u043a\u0430\u043a \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043a\u0441\u0442\u0430\u0442\u0438 \u043f\u0440\u0438\u0448\u0435\u043b\u0441\u044f \u0441\u0443\u043f\u0435\u0440\u0441\u0435\u0442 \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c &#8212; \u0445\u043e\u0447\u0435\u0448\u044c, \u0442\u0430\u043a \u0431\u0435\u0440\u0438, \u0445\u043e\u0447\u0435\u0448\u044c, \u0431\u0435\u0440\u0438 \u0438 \u0434\u043e\u043f\u0438\u043b\u0438\u0432\u0430\u0439.<\/p>\n<p>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u043a\u043b\u0430\u0441\u0441\u0438\u043a\u0435 BI, \u0443\u043f\u043e\u043c\u044f\u043d\u0435\u043c \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438:<\/p>\n<ul>\n<li>\n<p><strong>MOLAP<\/strong> &#8212; <a href=\"https:\/\/powerbi.microsoft.com\/ru-ru\/\">MS Power BI<\/a> (\u0432 \u0434\u0435\u0432\u0438\u0447\u0435\u0441\u0442\u0432\u0435, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043e\u0448\u0438\u0431\u0430\u044e\u0441\u044c, MSAS), <a href=\"https:\/\/www.qlik.com\/\">Qlik<\/a> \u0438 \u0438\u043c \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435. \u042f\u0440\u043a\u0438\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u0435\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0441\u0432\u043e\u0439 (\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439) \u0444\u043e\u0440\u043c\u0430\u0442, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0438\u0445 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.oracle.com\/business-analytics\/business-intelligence\/technologies\/bi-enterprise-edition.html\"><strong>OBIEE<\/strong><\/a>, \u043e\u0447\u0435\u043d\u044c \u0441\u0442\u0430\u0440\u044b\u0439 \u0438 \u043e\u0447\u0435\u043d\u044c \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u044b\u0439 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 (\u043e\u0442 Oracle). \u041e\u043d \u0443\u0436\u0435 \u0433\u0440\u0443\u0437\u0438\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u0437 \u0411\u0414, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432 \u043d\u0435\u043c \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0440\u043e\u0432\u043d\u0435\u0439 (3) \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u044d\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0437\u0430\u043c\u043e\u0440\u043e\u0447\u043d\u043e, \u0441\u043b\u043e\u0436\u043d\u043e \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0438 \u043a\u0430\u043a \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0445\u043e\u0434 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u0442\u0430\u0440\u0435\u043b<\/p>\n<\/li>\n<li>\n<p><strong>\u0414\u0440\u0443\u0433\u0438\u0435 ROLAP<\/strong> &#8212; \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0435\u0440\u0443\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 &#171;\u0431\u0435\u0437 \u0437\u0430\u0442\u0435\u0439&#187; \u0438\u0437 \u0411\u0414 (\u0442\u0430\u0431\u043b\u0438\u0446\u0430, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u0437\u0430\u043f\u0440\u043e\u0441) \u0438 \u0438\u0445 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442. \u041d\u0435\u00a0\u0442\u0430\u043a\u00a0\u0431\u044b\u0441\u0442\u0440\u043e \u043a\u0430\u043a\u00a0\u043f.1., \u043d\u043e\u00a0\u0437\u0430\u0442\u043e \u0433\u0438\u0431\u043a\u043e. \u041f\u0440\u0438\u0447\u0435\u043c \u043d\u0435\u0442 \u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u00ab\u043f\u043e\u0434\u043c\u043e\u0440\u043e\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u0438\u00bb, \u0442.\u00a0\u0435. \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u0440\u0430\u0442\u044c \u0438\u0437\u00a0\u043d\u0443\u0436\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0441\u0432\u0435\u0436\u0438\u043c\u0438. \u0417\u0434\u0435\u0441\u044c \u0432\u0441\u043f\u043e\u043c\u043d\u044e <a href=\"https:\/\/www.fsight.ru\/platform\/\">Prognoz (\u043d\u044b\u043d\u0435 Foresight) Platform<\/a> \u0438 <a href=\"https:\/\/superset.apache.org\/\">\u0433\u0435\u0440\u043e\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043e\u0431\u0437\u043e\u0440\u0430<\/a><\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0447\u0435\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e (<a href=\"https:\/\/www.tableau.com\/\">Tableau<\/a>, &#8230;), \u043d\u043e \u043c\u044b \u0441 \u043d\u0438\u043c\u0438 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 &#8212; \u043f\u0438\u0448\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e \u0442\u043e, \u0447\u0442\u043e \u0437\u043d\u0430\u0435\u043c<\/p>\n<\/li>\n<\/ul>\n<h2>\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 BI-\u0441\u0438\u0441\u0442\u0435\u043c\u0430<\/h2>\n<p>\u041e\u043a\u0435\u0439, \u0438\u0434\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435 &#8212; \u043e\u043f\u0438\u0448\u0435\u043c \u0441\u0445\u0435\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0443 BI. \u0415\u0441\u043b\u0438 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e &#8212; \u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043a\u0430\u043a \u0441\u0432\u043e\u0434\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0432 Excel &#8212; \u0435\u0441\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b (\u0440\u0430\u0437\u0440\u0435\u0437\u044b), \u0435\u0441\u0442\u044c \u043c\u0435\u0440\u044b (\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f). \u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u043c\u044b \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u043c \u043f\u043e &#171;\u043e\u0441\u044f\u043c&#187; X, Y, Z; \u043c\u0435\u0440\u044b &#8212; \u0432 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u044f\u0445, \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 (<em>\u0441\u0443\u043c\u043c\u0430<\/em>, <em>\u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0438 \u0442.\u0434.<\/em>).<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u043e\u044d\u0442\u0430\u043f\u043d\u043e, \u0442\u043e \u0447\u0443\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<ol>\n<li>\n<p>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u0432\u043e\u0434\u0438\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043e\u043d\u0438 \u0436\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0435\u0440\u0438\u043e\u0434 \u0438 \u043b\u044e\u0431\u044b\u0435 \u0434\u0440\u0443\u0433\u0438\u0435)<\/p>\n<\/li>\n<li>\n<p>\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u0435\u043b\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u0432 \u0411\u0414, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043d\u0443\u0436\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043f\u043e\u0434\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0438\u0445 (\u0437\u0434\u0435\u0441\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 &#8212; \u043f\u043e\u0434\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u043e\u043d\u0430 \u0438\u0445 \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0432\u043e where \u0438\u043b\u0438 \u0436\u0435 \u043f\u043e\u0434\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u044b\u0432\u0430\u044f \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 &#8212; \u043e\u0442 \u044d\u0442\u043e\u0433\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438)<\/p>\n<\/li>\n<li>\n<p>\u0421\u0438\u0441\u0442\u0435\u043c\u0430 (\u0443\u0436\u0435 \u0441\u0432\u043e\u0438\u043c\u0438 \u0441\u0438\u043b\u0430\u043c\u0438) \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u043c\u0435\u0440\u044b \u0432 \u0440\u0430\u0437\u0440\u0435\u0437\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432<\/p>\n<\/li>\n<\/ol>\n<h2>\u041f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f<\/h2>\n<p>\u041f\u043e\u043a\u0430 \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e, \u043d\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0443\u0441\u043b\u043e\u0436\u043d\u0438\u043c. \u0412\u0435\u0440\u043d\u0435\u0435 \u0434\u0430\u0436\u0435 \u043d\u0435 \u0442\u0430\u043a &#8212; \u0432 \u0436\u0438\u0437\u043d\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0431\u0438\u0430\u0439\u0449\u0438\u043a\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0442\u043e\u0442 \u043d\u0435\u043b\u043e\u0432\u043a\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443 \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \/ \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430\u0445 \u0411\u0414. \u0412 \u044d\u043f\u043e\u0445\u0443 OBIEE \u043c\u044b \u0434\u0435\u043b\u0430\u043b\u0438 \u044d\u0442\u043e \u043d\u0430 pipelined-\u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 Oracle, \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0436\u0435 \u044d\u043f\u043e\u0445\u0443 &#8230; &#8212; \u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c! \u041d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0447\u0442\u043e \u043d\u0430\u0434\u043e, \u043f\u043e\u0442\u043e\u043c &#8212; \u0437\u0430\u0447\u0435\u043c \u043d\u0430\u0434\u043e:<\/p>\n<ul>\n<li>\n<p>\u0427\u0442\u043e\u0431\u044b \u0432\u0432\u043e\u0434\u0438\u043c\u044b\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0432\u0435\u043b\u0438 \u0441\u0435\u0431\u044f \u043a\u0430\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0442.\u0435. \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0445 (\u0432 \u043d\u0438\u0445) \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0430\u00a0\u0442\u0430\u043a\u0436\u0435:<\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e: \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u043c\u043e\u0433\u043b\u0438 \u0432\u0435\u0441\u0442\u0438 \u0441\u0435\u0431\u044f \u0438 \u00ab\u043a\u0430\u043a \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u043c\u0435\u0441\u0442\u0435\u00bb,\u00a0\u043b\u0438\u0431\u043e\u00a0\u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0430\u043a\u00a0\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0431\u0435\u0437\u00a0\u043f\u043e\u0434\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u043a\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u043f\u043e\u00a0\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c<\/p>\n<\/li>\n<\/ul>\n<h3>\u041f\u0440\u0438\u043c\u0435\u0440 1. \u0420\u0430\u0441\u0447\u0435\u0442 \u0434\u043e\u043b\u0435\u0439<\/h3>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u00a0\u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c, \u0442\u0430\u043a \u043f\u043e\u043f\u0440\u043e\u0449\u0435. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0443\u00a0\u043d\u0430\u0441 \u0435\u0441\u0442\u044c (\u0442\u0430\u0431\u043b\u0438\u0446\u0430) \u00ab\u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u043a\u0438\u00bb (\u0421\u0417), \u0443\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0441\u0442\u044c (\u043f\u043e\u043b\u0435 \u0432\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u0435) \u00ab\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u0440\u0443\u0433\u043e\u0432 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u0438\u044f\u00bb, \u0438 \u0438\u0445 \u0430\u043d\u0430\u043b\u0438\u0437 \u0432\u0435\u0434\u0435\u0442\u0441\u044f \u0432\u00a0\u0440\u0430\u0437\u0440\u0435\u0437\u0435 \u0440\u0435\u0433\u0438\u043e\u043d\u043e\u0432. \u041f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u043e\u043b\u044e \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0421\u0417 \u0432\u00a0\u043e\u0431\u0449\u0435\u043c \u0447\u0438\u0441\u043b\u0435 \u0432\u00a0\u0440\u0430\u0437\u0440\u0435\u0437\u0435 \u043a\u0440\u0443\u0433\u043e\u0432. \u041a\u0430\u043a\u00a0\u0431\u0443\u0434\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c:<\/p>\n<ol>\n<li>\n<p>\u0412\u044b\u0431\u0435\u0440\u0435\u043c \u0432\u0441\u0435 \u0421\u0417 \u0437\u0430 \u043f\u0435\u0440\u0438\u043e\u0434 (\u043f\u0435\u0440\u0438\u043e\u0434 &#8212; \u044d\u0442\u043e \u0444\u0438\u043b\u044c\u0442\u0440 = \u0434\u0432\u0435 \u0434\u0430\u0442\u044b)<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u043b\u043e\u0436\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0421\u0417 \u043f\u043e \u0440\u0435\u0433\u0438\u043e\u043d\u0430\u043c \u0438 \u043f\u043e \u043a\u0440\u0443\u0433\u0430\u043c \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u0438\u044f<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434\u0435\u043b\u0438\u043c \u0447\u0438\u0441\u043b\u043e \u043f\u043e \u0440\u0435\u0433\u0438\u043e\u043d\u0443 \u0438 \u043a\u0440\u0443\u0433\u0443 \u043d\u0430 \u043e\u0431\u0449\u0435\u0435 \u0447\u0438\u0441\u043b\u043e (\u0438 \u0443\u043c\u043d\u043e\u0436\u0438\u043c \u043d\u0430 100%)<\/p>\n<\/li>\n<\/ol>\n<p><em>&#171;\u042d\u0442\u043e, \u0432 \u0446\u0435\u043b\u043e\u043c, \u043c\u043e\u0436\u043d\u043e \u0438 \u043d\u0430 \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u0430\u0445 \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0443\u043f\u0435\u0440\u0441\u0435\u0442\u0430 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0437\u0430\u0447\u0435\u043c \u0442\u0443\u0442 \u0447\u0442\u043e \u0442\u043e \u043c\u0443\u0434\u0440\u0438\u0442\u044c?&#187;,<\/em>\u00a0<em>\u2014<\/em>\u00a0 \u0441\u043f\u0440\u043e\u0441\u0438\u0442 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c. <\/p>\n<p>\u0423\u0441\u043b\u043e\u0436\u043d\u0438\u043c &#8212; \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u044b\u0431\u0440\u0430\u043b \u0442\u043e\u043b\u044c\u043a\u043e 2 \u0440\u0435\u0433\u0438\u043e\u043d\u0430 &#8212; <strong>\u0423\u0440\u0430\u043b<\/strong> \u0438 <strong>\u042e\u0433<\/strong>, \u043d\u043e \u0440\u0430\u0441\u0447\u0435\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c &#8212; \u043f\u043e \u0432\u0441\u0435\u043c \u0440\u0435\u0433\u0438\u043e\u043d\u0430\u043c. \u0422.\u0435. \u0434\u043e\u043b\u044f \u0423\u0440\u0430\u043b\u0430 = [\u0427\u0438\u0441\u043b\u043e \u043f\u043e \u0423\u0440\u0430\u043b\u0443] \/ [\u0427\u0438\u0441\u043b\u043e \u043f\u043e \u0432\u0441\u0435\u043c \u0440\u0435\u0433\u0438\u043e\u043d\u0430\u043c] * 100%. \u0410 \u0435\u0441\u043b\u0438 \u0438\u0434\u0442\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0434\u043e\u0440\u043e\u0433\u043e\u0439 &#8212; \u0442\u043e \u0437\u0430 &#171;\u043f\u043e\u043b\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043c&#187; \u0441\u0443\u043f\u0435\u0440\u0441\u0435\u0442 \u0431\u0443\u0434\u0435\u0442 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u043d\u043d\u043e\u0435 &#8212; \u0442.\u0435. \u0442\u043e\u043b\u044c\u043a\u043e \u0423\u0440\u0430\u043b \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u042e\u0433 \u0438, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c, \u0437\u0430 \u043f\u043e\u043b\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043c \u043e\u043d \u043a\u0430\u043a \u0440\u0430\u0437 \u0432\u043e\u0437\u044c\u043c\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u044d\u0442\u0438\u043c \u0434\u0432\u0443\u043c \u0440\u0435\u0433\u0438\u043e\u043d\u0430\u043c, \u0447\u0442\u043e \u043d\u0430\u043c \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u043d\u0430\u0434\u043e.<\/p>\n<p>\u041e\u043a\u0435\u0439, \u0438 \u043a\u0430\u043a?<\/p>\n<p>\u0410 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e, \u0432 \u0446\u0435\u043b\u043e\u043c, \u043d\u043e \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e. \u041d\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u043e \u044d\u0442\u043e \u0438 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f &#8212; \u043c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043f\u0440\u043e \u0411\u0414 PostgreSQL, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0435\u0441\u0442\u044c \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0449\u044c &#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 &#171;\u0440\u0435\u0437\u0430\u043b\u0442\u0441\u0435\u0442&#187; (\u0442.\u0435. \u043d\u0430\u0431\u043e\u0440 \u0441\u0442\u0440\u043e\u043a). <\/p>\n<p>\u0427\u0435\u043c \u043e\u043d\u0438 \u043b\u0443\u0447\u0448\u0435 \u0442\u0430\u0431\u043b\u0438\u0446 \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0439? \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e &#8212; \u0432 \u043d\u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0430 \u043e\u043d\u0438 \u0443\u0447\u0442\u0443\u0442 \u043b\u043e\u0433\u0438\u043a\u0443 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u043d\u0435\u0433\u043e.<\/p>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u043d\u0430\u043c \u0441\u0443\u043f\u0435\u0440\u0441\u0435\u0442 &#8212; \u044d\u0442\u043e <a href=\"https:\/\/jinja.palletsprojects.com\/\">\u0448\u0430\u0431\u043b\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 jinja<\/a><\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0433\u0443\u0433\u043b\u0438\u043c.<br \/><a href=\"https:\/\/superset.apache.org\/docs\/installation\/sql-templating\/\">\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f<\/a> \u0432 \u0446\u0435\u043b\u043e\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0435\u043f\u043b\u043e\u0445\u0430\u044f, \u043d\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u0443\u0445\u043e\u0432\u0430\u0442\u0430, \u043d\u0435 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0441 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0430\u0442\u044c (\u043f\u0440\u0438 \u044d\u0442\u043e\u043c, \u043a\u0430\u043a \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0435\u0441\u0442\u044c \u0438 \u043d\u0435\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438).<br \/>\u0415\u0441\u0442\u044c <a href=\"https:\/\/preset.io\/blog\/intro-jinja-templating-apache-superset\/\">\u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 <\/a>\u043d\u0430 \u0441\u0430\u0439\u0442\u0435\u00a0<a href=\"http:\/\/preset.io\/\">preset.io<\/a> \u0442\u043e\u0436\u0435 \u043f\u043e\u0447\u0438\u0442\u0430\u0435\u043c.<br \/>\u0415\u0441\u0442\u044c <a href=\"https:\/\/superset-bi.ru\/examples-of-using-jinja-templates-in-apache-superset\/\">\u043a\u043e\u0435-\u0447\u0442\u043e \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c<\/a>, \u043d\u043e \u0442\u043e\u0436\u0435 \u043d\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e, \u043f\u0440\u0438\u0447\u0435\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c, \u043d\u043e \u0442\u043e\u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0430 \u0435\u0441\u0442\u044c <a href=\"https:\/\/developers.sber.ru\/docs\/ru\/sdp\/sdpanalytics\/jinia-template\">\u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a> (\u043e\u0442 \u0421\u0431\u0435\u0440\u0430). \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0437\u0434\u043d\u0435\u0435 \u043d\u0430\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c <a href=\"https:\/\/bilab.ru\/vivod-raznih-polei-dataseta-v-apache-superset\">\u043d\u0430 \u044d\u0442\u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b<\/a>, \u0435\u0441\u043b\u0438 \u0431\u044b \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0440\u0430\u043d\u044c\u0448\u0435 &#8212; \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438 \u0441\u0442\u0430\u0442\u044c\u044e \u043d\u0435 \u043f\u0440\u0438\u0448\u043e\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c, \u043d\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0443\u0436 \u043f\u043e\u0437\u0434\u043d\u043e \ud83d\ude09<\/p>\n<p>\u041b\u0430\u0434\u043d\u043e, \u043d\u0430\u0447\u043d\u0435\u043c \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c. \u041d\u043e \u043d\u0430\u0447\u043d\u0435\u043c \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b PostgreSQL. \u041d\u0430\u043f\u0438\u0448\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b &#8212; \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0440\u0430\u0437\u0443 \u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c, \u0447\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0443\u043b\u044c\u0442\u0438\u0432\u044b\u0431\u043e\u0440 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 &#8212; \u0438 \u044d\u0442\u043e \u043d\u0430\u0434\u043e \u0443\u0447\u0435\u0441\u0442\u044c, \u043d\u043e \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u044d\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0434\u0438\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 &#8212; \u0441\u0442\u0440\u043e\u043a\u0430, \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043d\u0430\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f\u043c\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043a (\u0432\u044b\u0431\u0435\u0440\u0435\u043c \u0440\u0435\u0434\u043a\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b): &#171;\u042e\u0433~\u0421\u0438\u0431\u0438\u0440\u044c~\u0423\u0440\u0430\u043b&#187; (\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u0440\u0435\u0433\u0438\u043e\u043d\u043e\u0432), \u0438\u043b\u0438 1~2~4~10 (\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u0440\u0443\u0433\u043e\u0432 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u0438\u044f &#8212; \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0432 \u0441\u0442\u0440\u043e\u043a\u0430-\u0446\u0435\u043b\u043e\u0435).<\/p>\n<details class=\"spoiler\">\n<summary>\u0418\u0442\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u043e\u0439:<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"sql\">CREATE OR REPLACE FUNCTION user_plotn.f_get_test_fraction(p_cycles text, p_regions text)  RETURNS TABLE(val numeric, int_cycle integer, region text, this_sum numeric, total_sum numeric, frac_sum numeric)  LANGUAGE plpgsql  SECURITY DEFINER AS $function$ declare l_regions text[]; declare l_cycles text[]; begin          -- \u041f\u043e\u043b\u0443\u0447\u0438\u043c \u0438\u0437 \u0441\u0442\u0440\u043e\u043a \u0432\u0438\u0434\u0430 \"\u042e\u0433~\u0421\u0438\u0431\u0438\u0440\u044c~\u0426\u0435\u043d\u0442\u0440\" \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439     l_cycles := string_to_array(p_cycles, '~');     l_regions := string_to_array(p_regions, '~');     -- \u0415\u0441\u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0443\u0441\u0442\u044b\u0435 - \u0432\u0441\u0442\u0430\u0432\u0438\u043c \u043e\u0434\u043d\u043e \"\u0441\u043b\u0443\u0436\u0435\u0431\u043d\u043e\u0435\" \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u044b     if coalesce(array_length(l_cycles, 1), 0) = 0 then       l_cycles := array_append(l_cycles, '-1');     end if;     if coalesce(array_length(l_regions, 1), 0) = 0 then       l_regions := array_append(l_regions, '###');     end if;     return query     with filtered as (         select           tr.val,           tr.int_cycle,           tr.region         from           user_plotn.test_fraction tr          -- \u0417\u0434\u0435\u0441\u044c, \u043f\u043e \u0441\u0443\u0442\u0438 - \u043a\u0430\u043a \u0440\u0430\u0437 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0434\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u043a\u0430 \u043f\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c         join unnest(l_cycles) as cycles on cycles.cycles::int4=tr.int_cycle            -- \u042d\u0442\u043e\u0442 \u0431\u043b\u043e\u043a \u043a\u0430\u043a \u0440\u0430\u0437 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0443\u0441\u0442\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 - \u043c\u044b            -- \u0431\u0440\u0430\u043b\u0438 \u0432\u0441\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 - \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u043b\u044f \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u0435\u043b           or cycles.cycles::int4=-1         join unnest(l_regions) as regions on regions.regions=tr.region            -- \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u043b\u044f \u0441\u0442\u0440\u043e\u043a           or regions.regions='###'     ),     calculated as (     select        f.val,       f.int_cycle,       f.region,       (select sum(ff1.val) from filtered ff1          where ff1.int_cycle = f.int_cycle and ff1.region = f.region) as this_sum,       (select sum(ff.val) from filtered ff) as total_sum     from       filtered f     )     select        c.val,       c.int_cycle,       c.region,       c.this_sum,       c.total_sum,       case when c.total_sum > 0 then c.this_sum \/ c.total_sum else 0::numeric(15,2) end as frac_sum      from calculated c       ; end; $function$ ;  -- Permissions  ALTER FUNCTION user_plotn.f_get_test_fraction(text, text) OWNER TO b2g2_bi; GRANT ALL ON FUNCTION user_plotn.f_get_test_fraction(text, text) TO b2g2_bi; <\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u0430\u043d\u043d\u044b\u0445:<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"\">\n<div><figcaption>\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043f\u0443\u0441\u043a\u0430:<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"sql\">select * from user_plotn.f_get_test_fraction('1~2', '\u042e\u0433~\u0421\u0438\u0431\u0438\u0440\u044c');<\/code><\/pre>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0430\u0431\u043e\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0439\u0434\u0435\u043c \u0432 superset. \u041f\u0435\u0440\u0432\u044b\u043c \u0448\u0430\u0433\u043e\u043c \u043d\u0430\u0434\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 ENABLE_TEMPLATE_PROCESSING \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u044d\u0442\u043e\u0442 \u0448\u0430\u0433 \u0443 \u043d\u0430\u0441 \u0441\u0434\u0435\u043b\u0430\u043b \u0434\u0435\u0432\u043e\u043f\u0441-\u0438\u043d\u0436\u0435\u043d\u0435\u0440.<\/p>\n<p>\u0418\u0434\u0435\u043c \u0432 SQLLab, \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043e\u0442\u0442\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043d\u0430\u0448 \u0437\u0430\u043f\u0440\u043e\u0441 \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d\u044b. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 &#8212; \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0432 \u0441\u0443\u043f\u0435\u0440\u0441\u0435\u0442\u0435:<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0417\u0430\u043f\u0440\u043e\u0441 \u0432 SQLLab \u0432 \u0441\u0443\u043f\u0435\u0440\u0441\u0435\u0442\u0435<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432\u0441\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e-\u0434\u0443\u0440\u0430\u0446\u043a\u0438. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e &#171;\u043f\u0440\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435&#187; \u0432 \u0437\u0430\u043f\u0440\u043e\u0441 (\u0432 \u0448\u0430\u0431\u043b\u043e\u043d) \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f (\u0441\u043c. filter_values), \u043d\u043e \u043f\u0440\u0438 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432 SQLLab &#8212; \u043e\u043d\u0438 \u0435\u0449\u0435 \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0438 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0435 \u0441\u0435\u043a\u0446\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u0438\u0445 &#171;\u043e\u0431\u043e\u0439\u0442\u0438&#187;. \u0417\u0430\u0447\u0435\u043c? \u0412\u043e\u0442 \u043c\u043d\u0435 \u0441\u0430\u043c\u043e\u043c\u0443 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0437\u0430\u0447\u0435\u043c, \u043d\u043e \u0432\u0430\u043c \u0443\u0436\u0435 \u0434\u0430\u0436\u0435 \u043d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0440\u043e\u0441 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b\u0441\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e &#8212; \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u0442\u043e\u043c\u0443. <\/p>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0441\u043a\u0430\u0436\u0443 \u0437\u0430 \u044f\u0437\u044b\u043a \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445 jinja &#8212; \u0432\u0440\u043e\u0434\u0435 \u0431\u044b \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043e\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u043e\u0445\u043e\u0436\u0438\u043c \u043d\u0430 python, \u043d\u043e \u044d\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u0438\u0442\u043e\u043d. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u0435\u043b (|join). \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u043f\u043e\u0448\u043b\u0438 \u0433\u0443\u0433\u043b\u0438\u0442\u044c \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0438\u0442\u043e\u043d\u0435, \u043d\u043e \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442. <\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u043e\u0438\u0441\u043a \u0440\u0435\u0448\u0435\u043d\u0438\u044f<\/summary>\n<div class=\"spoiler__content\">\n<p>\u041b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u043e &#8212; \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u044d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043c\u044b \u0432\u0434\u0432\u043e\u0435\u043c \u0441 \u043d\u0430\u0448\u0438\u043c AI\/ML \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u043c \u0443\u0448\u043b\u0438 &#8212; \u044f \u0433\u0443\u0433\u043b\u0438\u0442\u044c, \u0430 \u043e\u043d &#8212; \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0443 \u043d\u0430\u0448\u0435\u0439 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u043d\u0435\u0439\u0440\u043e\u043d\u043a\u0438 &#171;\u0412\u0430\u0441\u0438\u043b\u0438\u0441\u0430&#187; (\u0420\u0422\u041a \u041d\u0435\u0439\u0440\u043e). \u041a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443 \u043f\u0440\u0438\u0448\u043b\u0438 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u043f\u0440\u0438\u0447\u0435\u043c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u043c\u0443.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0412\u0430\u0441\u0438\u043b\u0438\u0441\u0430 \u0437\u0430 \u0440\u0430\u0431\u043e\u0442\u043e\u0439<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/details>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u0432 \u043a\u043e\u0434\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0442\u0430\u043a\u0430\u044f &#171;\u043a\u043e\u043b\u0431\u0430\u0441\u0430&#187; \u0441 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c\u0438. \u041a\u0430\u043a \u043f\u043e \u043c\u043d\u0435 &#8212; \u0441\u0438\u043b\u044c\u043d\u043e \u043d\u0435\u0447\u0438\u0442\u0430\u0435\u043c\u043e, \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0443\u0439\u0442\u0438 \u0432 plpgsql (\u0445\u043e\u0442\u044f, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0438 \u0431\u0435\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043d\u043e \u043c\u043d\u0435 \u0442\u0430\u043a \u0443\u0434\u043e\u0431\u043d\u0435\u0435).<\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441, \u0432\u0438\u0434\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u0430\u0442\u0430\u0441\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0442\u043e\u043c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0434\u043b\u044f <em>\u0447\u0430\u0440\u0442\u043e\u0432<\/em> \u0438 <em>\u0434\u044d\u0448\u0431\u043e\u0440\u0434\u043e\u0432<\/em>. <\/p>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438, \u043f\u043e\u0448\u043b\u0438 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c &#8212; \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0447\u0430\u0440\u0442 \u0432 \u0432\u0438\u0434\u0435 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u043d\u0430 \u0435\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u044d\u0448\u0431\u043e\u0440\u0434, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u044b:<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0447\u0430\u0440\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0434\u044d\u0448\u0431\u043e\u0440\u0434\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u0420\u0435\u0437\u0443<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\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-359418","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/359418","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=359418"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/359418\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=359418"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=359418"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=359418"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}