{"id":471771,"date":"2025-08-23T15:06:52","date_gmt":"2025-08-23T15:06:52","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=471771"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=471771","title":{"rendered":"<span>\u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0410\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 Luxms BI<\/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 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430, \u0433\u0434\u0435 BI-\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0436\u0435\u0441\u0442\u043a\u043e \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u0442 \u0441\u0432\u044f\u0437\u0438, \u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u043c\u043e\u0434\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0430\u043c\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438 \u0441\u0432\u044f\u0437\u0438 \u043d\u0443\u0436\u043d\u044b \u043f\u043e\u0434 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0434\u044d\u0448\u043b\u0435\u0442, \u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u00ab\u043d\u0430 \u043b\u0435\u0442\u0443\u00bb. \u042d\u0442\u043e \u043d\u0430\u0448\u0430 \u043d\u043e\u0432\u0430\u044f \u0410\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445 Luxms BI (\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u043c\u043e\u0434\u0435\u043b\u0438, \u043a\u0430\u043a \u043e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u043a\u0430\u043a\u0438\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0434\u0430\u0435\u0442 <a href=\"https:\/\/habr.com\/ru\/companies\/luxms_bi\/articles\/937490\/\" rel=\"noopener noreferrer nofollow\">\u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>). \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442:<\/p>\n<ul>\n<li>\n<p>\u0411\u0435\u0437 \u043b\u0438\u0448\u043d\u0438\u0445 JOIN\u2019\u043e\u0432 \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0440\u043e\u0432\u043d\u043e \u043f\u043e\u0434 \u0437\u0430\u043f\u0440\u043e\u0441 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0415\u0449\u0435 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u2014 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0430 \u0431\u0430\u0437\u0443, \u043c\u0435\u043d\u044c\u0448\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439, \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c \u043f\u0440\u0438 \u0440\u043e\u0441\u0442\u0435 \u043e\u0431\u044a\u0435\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<\/li>\n<li>\n<p>Self-service \u2014 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c, \u0432 \u043a\u0430\u043a\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043d\u0443\u0436\u043d\u043e\u0435 \u043f\u043e\u043b\u0435, \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0430\u043c\u0430 \u043d\u0430\u0439\u0434\u0451\u0442 \u0438 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0442 \u0435\u0433\u043e.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u0431\u044b\u043b \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0441\u0438\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u043e\u0440\u043e\u043d Qlik, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043c\u0435\u043b \u00ab\u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c\u00bb \u0441\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u0440\u043e\u0437\u043d\u0435\u043d\u043d\u044b\u043c\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438. \u041c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u0442\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435 &#8212; \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0432\u044f\u0437\u0438, \u0443\u043c\u043d\u0443\u044e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u043e\u0434 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0433\u0438\u0431\u043a\u0438\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b. \u041f\u0440\u0438\u0447\u0451\u043c, \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u0440\u0435\u0434\u0438 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0445 BI-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u043c\u044b \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435, \u043a\u0442\u043e \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b \u043f\u043e-\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c\u0443.<\/p>\n<p>\u042f, \u041d\u0438\u043a\u043e\u043b\u0430\u0439 \u041f\u0430\u0432\u043b\u043e\u0432, \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u043f\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u0438 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c, \u043a\u0430\u043a \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430: \u043f\u043e\u0434\u043d\u0438\u043c\u0435\u043c ClickHouse \u0432 Docker, \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u0445\u0435\u043c\u0443 \u00ab\u0441\u043d\u0435\u0436\u0438\u043d\u043a\u0430\u00bb \u0441 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u0441\u043e\u0431\u0435\u0440\u0451\u043c \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043c \u0434\u044d\u0448\u0431\u043e\u0440\u0434 \u0441 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u043c\u0438 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430.<\/p>\n<h2>\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u0435\u0439\u0441\u0430  <\/h2>\n<p><strong>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0441\u0440\u0435\u0434\u044b  <\/strong><\/p>\n<ul>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Luxms BI, \u0432 \u043c\u043e\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u0435\u0440\u0441\u0438\u0438:\u00a0<\/p>\n<ul>\n<li>\n<p>luxmsbi-web \u2014 11.1.19<\/p>\n<\/li>\n<li>\n<p>luxmsbi-pg \u2014 11.1.3<\/p>\n<\/li>\n<li>\n<p>luxmsbi-appserver-mono \u2014 11.1.7<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c ClickHouse \u0432 Docker \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445  <\/strong><\/p>\n<ul>\n<li>\n<p>\u0412\u043d\u0443\u0442\u0440\u0438 ClickHouse \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0441\u0445\u0435\u043c\u0443 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0442\u0438\u043f\u0443 \u00ab\u0441\u043d\u0435\u0436\u0438\u043d\u043a\u0430\u00bb \u2014 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439.<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 (\u0434\u043e 30 \u0441\u0442\u0440\u043e\u043a \u0432 \u043a\u0430\u0436\u0434\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443).<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0431\u044a\u0451\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043a\u0435\u0439\u0441\u0435 \u043d\u0435 \u0432\u0430\u0436\u043d\u044b \u2014 \u0430\u043a\u0446\u0435\u043d\u0442 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<p><strong>\u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438  <\/strong><\/p>\n<ul>\n<li>\n<p>\u0412 Luxms BI \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u0432\u0441\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044f \u0441\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438.  <\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439  <\/strong><\/p>\n<ul>\n<li>\n<p>\u0420\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0434\u044d\u0448\u0431\u043e\u0440\u0434\u044b \u0441 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0435\u0442\u0440\u0438\u043a \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430.  <\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0410\u043d\u0430\u043b\u0438\u0437 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432  <\/strong><\/p>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0432\u043e\u0434\u0438\u043c \u043e\u0446\u0435\u043d\u043a\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u0438 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u043c \u0432\u044b\u0432\u043e\u0434\u044b \u043f\u043e \u043a\u0435\u0439\u0441\u0443.  <\/p>\n<\/li>\n<\/ul>\n<h2>\u0418\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0432 Clickhouse  <\/h2>\n<p>\u0412\u043d\u0443\u0442\u0440\u0438 clickhouse, \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445, \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438 \u0437\u0430\u043b\u044c\u0451\u043c \u0442\u0443\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0435. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 clickhouse \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0438\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 dbeaver.  <\/p>\n<p>\u0412\u0441\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0434\u0432\u0438\u0436\u043e\u043a MergeTree.<\/p>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043c\u0430\u0433\u0430\u0437\u0438\u043d: \u0444\u0430\u043a\u0442\u044b \u043f\u0440\u043e\u0434\u0430\u0436 (fact_sales) + \u043d\u0430\u0431\u043e\u0440 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439 (dim_*):<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<p>&#8212;\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445<\/p>\n<p>CREATE database adaptive_m;<\/p>\n<p>\u00a0<\/p>\n<p>&#8212; 1. \u041a\u043e\u0440\u043d\u0435\u0432\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0434\u0430\u0442<\/p>\n<p>CREATE TABLE IF NOT EXISTS dim_date<\/p>\n<p>(<\/p>\n<p>date_key \u00a0 UInt32,\u00a0 <em>&#8212; \u043a\u043b\u044e\u0447 \u0434\u0430\u0442\u044b (YYYYMMDD)<\/em><\/p>\n<p>date_value Date,\u00a0 \u00a0 <em>&#8212; \u0441\u0430\u043c\u0430 \u0434\u0430\u0442\u0430<\/em><\/p>\n<p>year \u00a0 \u00a0 \u00a0 UInt16,\u00a0 <em>&#8212; \u0433\u043e\u0434 (2024 \u0438 \u0442.\u0434.)<\/em><\/p>\n<p>quarter\u00a0 \u00a0 UInt8, \u00a0 <em>&#8212; \u043a\u0432\u0430\u0440\u0442\u0430\u043b 1-4<\/em><\/p>\n<p>month\u00a0 \u00a0 \u00a0 UInt8, \u00a0 <em>&#8212; \u043c\u0435\u0441\u044f\u0446 1-12<\/em><\/p>\n<p>week \u00a0 \u00a0 \u00a0 UInt8, \u00a0 <em>&#8212; \u043d\u043e\u043c\u0435\u0440 \u043d\u0435\u0434\u0435\u043b\u0438 \u0432 \u0433\u043e\u0434\u0443<\/em><\/p>\n<p>day\u00a0 \u00a0 \u00a0 \u00a0 UInt8, \u00a0 <em>&#8212; \u0434\u0435\u043d\u044c \u043c\u0435\u0441\u044f\u0446\u0430 1-31<\/em><\/p>\n<p>day_of_weekUInt8, \u00a0 <em>&#8212; \u0434\u0435\u043d\u044c \u043d\u0435\u0434\u0435\u043b\u0438 1=\u043f\u043d, 7=\u0432\u0441<\/em><\/p>\n<p>is_weekend UInt8\u00a0 \u00a0 <em>&#8212; \u043f\u0440\u0438\u0437\u043d\u0430\u043a \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e (1=\u0434\u0430, 0=\u043d\u0435\u0442)<\/em><\/p>\n<p>)<\/p>\n<p>\u00a0ENGINE = MergeTree()<\/p>\n<p>\u00a0ORDER BY date_key;<\/p>\n<p>\u00a0<\/p>\n<p>&#8212; 2. \u0422\u043e\u0432\u0430\u0440\u044b<\/p>\n<p>CREATE TABLE IF NOT EXISTS dim_product<\/p>\n<p>(<\/p>\n<p>product_key\u00a0 UInt32,\u00a0 \u00a0 <em>&#8212; \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043b\u044e\u0447 \u0442\u043e\u0432\u0430\u0440\u0430<\/em><\/p>\n<p>product_id \u00a0 UInt32,\u00a0 \u00a0 <em>&#8212; \u0431\u0438\u0437\u043d\u0435\u0441-ID \u0442\u043e\u0432\u0430\u0440\u0430<\/em><\/p>\n<p>product_name String,\u00a0 \u00a0 <em>&#8212; \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u0432\u0430\u0440\u0430<\/em><\/p>\n<p>category_key UInt32,\u00a0 \u00a0 <em>&#8212; \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044e (FK \u2192 dim_category)<\/em><\/p>\n<p>brand_keyUInt32,\u00a0 \u00a0 <em>&#8212; \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0431\u0440\u0435\u043d\u0434 (FK \u2192 dim_brand)<\/em><\/p>\n<p>unit_price \u00a0 Decimal(10,2)\u00a0 <em>&#8212; \u0431\u0430\u0437\u043e\u0432\u0430\u044f \u0446\u0435\u043d\u0430 \u0442\u043e\u0432\u0430\u0440\u0430<\/em><\/p>\n<p>)<\/p>\n<p>\u00a0ENGINE = MergeTree()<\/p>\n<p>\u00a0ORDER BY product_key;<\/p>\n<p>\u00a0<\/p>\n<p>&#8212; 3. \u041a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438<\/p>\n<p>CREATE TABLE IF NOT EXISTS dim_category<\/p>\n<p>(<\/p>\n<p>category_key\u00a0 \u00a0 UInt32, <em>&#8212; \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043b\u044e\u0447 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438<\/em><\/p>\n<p>category_id \u00a0 \u00a0 UInt32, <em>&#8212; \u0431\u0438\u0437\u043d\u0435\u0441-ID \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438<\/em><\/p>\n<p>category_name \u00a0 String, <em>&#8212; \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 \u0442\u043e\u0432\u0430\u0440\u0430<\/em><\/p>\n<p>parent_category_key UInt32\u00a0 <em>&#8212; \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0443\u044e \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044e (0 \u0435\u0441\u043b\u0438 \u043a\u043e\u0440\u0435\u043d\u044c)<\/em><\/p>\n<p>)<\/p>\n<p>\u00a0ENGINE = MergeTree()<\/p>\n<p>\u00a0ORDER BY category_key;<\/p>\n<p>\u00a0<\/p>\n<p>&#8212; 4. \u0411\u0440\u0435\u043d\u0434\u044b<\/p>\n<p>CREATE TABLE IF NOT EXISTS dim_brand<\/p>\n<p>(<\/p>\n<p>brand_key \u00a0 UInt32, \u00a0 \u00a0 <em>&#8212; \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043b\u044e\u0447 \u0431\u0440\u0435\u043d\u0434\u0430<\/em><\/p>\n<p>brand_idUInt32, \u00a0 \u00a0 <em>&#8212; \u0431\u0438\u0437\u043d\u0435\u0441-ID \u0431\u0440\u0435\u043d\u0434\u0430<\/em><\/p>\n<p>brand_name\u00a0 String, \u00a0 \u00a0 <em>&#8212; \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0431\u0440\u0435\u043d\u0434\u0430<\/em><\/p>\n<p>country_key UInt32\u00a0 \u00a0 \u00a0 <em>&#8212; \u0441\u0442\u0440\u0430\u043d\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0431\u0440\u0435\u043d\u0434\u0430 (FK \u2192 dim_country)<\/em><\/p>\n<p>)<\/p>\n<p>\u00a0ENGINE = MergeTree()<\/p>\n<p>\u00a0ORDER BY brand_key;<\/p>\n<p>\u00a0<\/p>\n<p>&#8212; 5. \u0421\u0442\u0440\u0430\u043d\u044b<\/p>\n<p>CREATE TABLE IF NOT EXISTS dim_country<\/p>\n<p>(<\/p>\n<p>country_key\u00a0 UInt32,\u00a0 \u00a0 <em>&#8212; \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043b\u044e\u0447 \u0441\u0442\u0440\u0430\u043d\u044b<\/em><\/p>\n<p>country_code FixedString(2),<em>&#8212; \u0434\u0432\u0443\u0445\u0431\u0443\u043a\u0432\u0435\u043d\u043d\u044b\u0439 ISO-\u043a\u043e\u0434<\/em><\/p>\n<p>country_name String \u00a0 \u00a0 <em>&#8212; \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u044b<\/em><\/p>\n<p>)<\/p>\n<p>\u00a0ENGINE = MergeTree()<\/p>\n<p>\u00a0ORDER BY country_key;<\/p>\n<p>\u00a0<\/p>\n<p>&#8212; 6. \u041f\u043e\u043a\u0443\u043f\u0430\u0442\u0435\u043b\u0438<\/p>\n<p>CREATE TABLE IF NOT EXISTS dim_customer<\/p>\n<p>(<\/p>\n<p>customer_key\u00a0 UInt32, \u00a0 <em>&#8212; \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043b\u044e\u0447 \u043a\u043b\u0438\u0435\u043d\u0442\u0430<\/em><\/p>\n<p>customer_id \u00a0 UInt32, \u00a0 <em>&#8212; \u0431\u0438\u0437\u043d\u0435\u0441-ID \u043a\u043b\u0438\u0435\u043d\u0442\u0430<\/em><\/p>\n<p>full_name \u00a0 \u00a0 String, \u00a0 <em>&#8212; \u0424\u0418\u041e \/ \u043f\u043e\u043b\u043d\u043e\u0435 \u0438\u043c\u044f<\/em><\/p>\n<p>email \u00a0 \u00a0 \u00a0 \u00a0 String, \u00a0 <em>&#8212; \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430\u044f \u043f\u043e\u0447\u0442\u0430<\/em><\/p>\n<p>city_key\u00a0 \u00a0 \u00a0 UInt32, \u00a0 <em>&#8212; \u0433\u043e\u0440\u043e\u0434 \u043f\u0440\u043e\u0436\u0438\u0432\u0430\u043d\u0438\u044f (FK \u2192 dim_city)<\/em><\/p>\n<p>registration_date Date\u00a0 <em>&#8212; \u0434\u0430\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0432 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0435<\/em><\/p>\n<p>)<\/p>\n<p>\u00a0ENGINE = MergeTree()<\/p>\n<p>\u00a0ORDER BY customer_key;<\/p>\n<p>\u00a0<\/p>\n<p>&#8212; 7. \u0413\u043e\u0440\u043e\u0434\u0430<\/p>\n<p>CREATE TABLE IF NOT EXISTS dim_city<\/p>\n<p>(<\/p>\n<p>city_keyUInt32, \u00a0 \u00a0 <em>&#8212; \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043b\u044e\u0447 \u0433\u043e\u0440\u043e\u0434\u0430<\/em><\/p>\n<p>city_id UInt32, \u00a0 \u00a0 <em>&#8212; \u0431\u0438\u0437\u043d\u0435\u0441-ID \u0433\u043e\u0440\u043e\u0434\u0430<\/em><\/p>\n<p>city_name \u00a0 String, \u00a0 \u00a0 <em>&#8212; \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0433\u043e\u0440\u043e\u0434\u0430<\/em><\/p>\n<p>country_key UInt32\u00a0 \u00a0 \u00a0 <em>&#8212; \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 dim_country<\/em><\/p>\n<p>)<\/p>\n<p>\u00a0ENGINE = MergeTree()<\/p>\n<p>\u00a0ORDER BY city_key;<\/p>\n<p>&#8212; 8. \u0421\u043a\u043b\u0430\u0434\u044b<\/p>\n<p>CREATE TABLE IF NOT EXISTS dim_warehouse<\/p>\n<p>(<\/p>\n<p>warehouse_key \u00a0 UInt32, <em>&#8212; \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043b\u044e\u0447 \u0441\u043a\u043b\u0430\u0434\u0430<\/em><\/p>\n<p>warehouse_idUInt32, <em>&#8212; \u0431\u0438\u0437\u043d\u0435\u0441-ID \u0441\u043a\u043b\u0430\u0434\u0430<\/em><\/p>\n<p>warehouse_name\u00a0 String, <em>&#8212; \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u043a\u043b\u0430\u0434\u0430<\/em><\/p>\n<p>city_key\u00a0 \u00a0 UInt32\u00a0 <em>&#8212; \u0433\u043e\u0440\u043e\u0434 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f (FK \u2192 dim_city)<\/em><\/p>\n<p>)<\/p>\n<p>\u00a0ENGINE = MergeTree()<\/p>\n<p>\u00a0ORDER BY warehouse_key;<\/p>\n<p>\u00a0<\/p>\n<p>&#8212; 9. \u041f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0438<\/p>\n<p>CREATE TABLE IF NOT EXISTS dim_supplier<\/p>\n<p>(<\/p>\n<p>supplier_key \u00a0 UInt32, <em>&#8212; \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043b\u044e\u0447 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0430<\/em><\/p>\n<p>supplier_idUInt32, <em>&#8212; \u0431\u0438\u0437\u043d\u0435\u0441-ID \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0430<\/em><\/p>\n<p>supplier_name\u00a0 String, <em>&#8212; \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0430<\/em><\/p>\n<p>city_key \u00a0 UInt32\u00a0 <em>&#8212; \u0433\u043e\u0440\u043e\u0434 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f (FK \u2192 dim_city)<\/em><\/p>\n<p>)<\/p>\n<p>\u00a0ENGINE = MergeTree()<\/p>\n<p>\u00a0ORDER BY supplier_key;<\/p>\n<p>\u00a0<\/p>\n<p>&#8212; 10. \u0424\u0430\u043a\u0442 \u043f\u0440\u043e\u0434\u0430\u0436<\/p>\n<p>CREATE TABLE IF NOT EXISTS fact_sales<\/p>\n<p>(<\/p>\n<p>sale_key \u00a0 UInt64,\u00a0 <em>&#8212; \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u043f\u0440\u043e\u0434\u0430\u0436\u0438<\/em><\/p>\n<p>date_key \u00a0 UInt32,\u00a0 <em>&#8212; \u0434\u0435\u043d\u044c \u043f\u0440\u043e\u0434\u0430\u0436\u0438 (FK \u2192 dim_date)<\/em><\/p>\n<p>product_keyUInt32,\u00a0 <em>&#8212; \u0442\u043e\u0432\u0430\u0440 (FK \u2192 dim_product)<\/em><\/p>\n<p>customer_key \u00a0 UInt32,\u00a0 <em>&#8212; \u043f\u043e\u043a\u0443\u043f\u0430\u0442\u0435\u043b\u044c (FK \u2192 dim_customer)<\/em><\/p>\n<p>warehouse_key\u00a0 UInt32,\u00a0 <em>&#8212; \u0441\u043a\u043b\u0430\u0434 \u043e\u0442\u0433\u0440\u0443\u0437\u043a\u0438 (FK \u2192 dim_warehouse)<\/em><\/p>\n<p>supplier_key \u00a0 UInt32,\u00a0 <em>&#8212; \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a (FK \u2192 dim_supplier)<\/em><\/p>\n<p>quantity \u00a0 UInt32,\u00a0 <em>&#8212; \u043f\u0440\u043e\u0434\u0430\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e<\/em><\/p>\n<p>gross_amount \u00a0 Decimal(12,2),<em>&#8212; \u0432\u044b\u0440\u0443\u0447\u043a\u0430 \u0434\u043e \u0441\u043a\u0438\u0434\u043e\u043a<\/em><\/p>\n<p>discount_amount Decimal(12,2),<em>&#8212; \u0441\u0443\u043c\u043c\u0430 \u0441\u043a\u0438\u0434\u043a\u0438<\/em><\/p>\n<p>net_amount Decimal(12,2) <em>&#8212; \u0432\u044b\u0440\u0443\u0447\u043a\u0430 \u043f\u043e\u0441\u043b\u0435 \u0441\u043a\u0438\u0434\u043e\u043a<\/em><\/p>\n<p>)<\/p>\n<p>\u00a0ENGINE = MergeTree()<\/p>\n<p>\u00a0ORDER BY (date_key, product_key, customer_key);<\/p>\n<\/div>\n<\/details>\n<p>\u0417\u0430\u043b\u0438\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. \u0414\u0430\u043d\u043d\u044b\u0445 \u043d\u0435\u043c\u043d\u043e\u0433\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u044b INSERT INTO \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<p>&#8212;dim_date<\/p>\n<p>INSERT INTO dim_date<\/p>\n<p>(date_key, date_value, year, quarter, month, week, day, day_of_week, is_weekend)<\/p>\n<p>VALUES<\/p>\n<p>(20240101,&#8217;2024-01-01&#8242;,2024,1,1,1,1,1,1),<\/p>\n<p>(20240102,&#8217;2024-01-02&#8242;,2024,1,1,1,2,2,0),<\/p>\n<p>(20240103,&#8217;2024-01-03&#8242;,2024,1,1,1,3,3,0),<\/p>\n<p>(20240104,&#8217;2024-01-04&#8242;,2024,1,1,1,4,4,0),<\/p>\n<p>(20240105,&#8217;2024-01-05&#8242;,2024,1,1,1,5,5,0),<\/p>\n<p>(20240106,&#8217;2024-01-06&#8242;,2024,1,1,1,6,6,1),<\/p>\n<p>(20240107,&#8217;2024-01-07&#8242;,2024,1,1,1,7,7,1),<\/p>\n<p>(20240108,&#8217;2024-01-08&#8242;,2024,1,1,2,8,1,0),<\/p>\n<p>(20240109,&#8217;2024-01-09&#8242;,2024,1,1,2,9,2,0),<\/p>\n<p>(20240110,&#8217;2024-01-10&#8242;,2024,1,1,2,10,3,0),<\/p>\n<p>(20240111,&#8217;2024-01-11&#8242;,2024,1,1,2,11,4,0),<\/p>\n<p>(20240112,&#8217;2024-01-12&#8242;,2024,1,1,2,12,5,0),<\/p>\n<p>(20240113,&#8217;2024-01-13&#8242;,2024,1,1,2,13,6,1),<\/p>\n<p>(20240114,&#8217;2024-01-14&#8242;,2024,1,1,2,14,7,1),<\/p>\n<p>(20240115,&#8217;2024-01-15&#8242;,2024,1,1,3,15,1,0),<\/p>\n<p>(20240116,&#8217;2024-01-16&#8242;,2024,1,1,3,16,2,0),<\/p>\n<p>(20240117,&#8217;2024-01-17&#8242;,2024,1,1,3,17,3,0),<\/p>\n<p>(20240118,&#8217;2024-01-18&#8242;,2024,1,1,3,18,4,0),<\/p>\n<p>(20240119,&#8217;2024-01-19&#8242;,2024,1,1,3,19,5,0),<\/p>\n<p>(20240120,&#8217;2024-01-20&#8242;,2024,1,1,3,20,6,1),<\/p>\n<p>(20240121,&#8217;2024-01-21&#8242;,2024,1,1,3,21,7,1),<\/p>\n<p>(20240122,&#8217;2024-01-22&#8242;,2024,1,1,4,22,1,0),<\/p>\n<p>(20240123,&#8217;2024-01-23&#8242;,2024,1,1,4,23,2,0),<\/p>\n<p>(20240124,&#8217;2024-01-24&#8242;,2024,1,1,4,24,3,0),<\/p>\n<p>(20240125,&#8217;2024-01-25&#8242;,2024,1,1,4,25,4,0),<\/p>\n<p>(20240126,&#8217;2024-01-26&#8242;,2024,1,1,4,26,5,0),<\/p>\n<p>(20240127,&#8217;2024-01-27&#8242;,2024,1,1,4,27,6,1),<\/p>\n<p>(20240128,&#8217;2024-01-28&#8242;,2024,1,1,4,28,7,1),<\/p>\n<p>(20240129,&#8217;2024-01-29&#8242;,2024,1,1,5,29,1,0),<\/p>\n<p>(20240130,&#8217;2024-01-30&#8242;,2024,1,1,5,30,2,0);<\/p>\n<p>\u00a0<\/p>\n<p>&#8212;dim_country<\/p>\n<p>INSERT INTO dim_country<\/p>\n<p>(country_key, country_code, country_name)<\/p>\n<p>VALUES<\/p>\n<p>(1,&#8217;US&#8217;,&#8217;United States&#8217;),<\/p>\n<p>(2,&#8217;DE&#8217;,&#8217;Germany&#8217;),<\/p>\n<p>(3,&#8217;CN&#8217;,&#8217;China&#8217;),<\/p>\n<p>(4,&#8217;RU&#8217;,&#8217;Russia&#8217;),<\/p>\n<p>(5,&#8217;FR&#8217;,&#8217;France&#8217;),<\/p>\n<p>(6,&#8217;JP&#8217;,&#8217;Japan&#8217;),<\/p>\n<p>(7,&#8217;IN&#8217;,&#8217;India&#8217;),<\/p>\n<p>(8,&#8217;BR&#8217;,&#8217;Brazil&#8217;),<\/p>\n<p>(9,&#8217;CA&#8217;,&#8217;Canada&#8217;),<\/p>\n<p>(10,&#8217;MX&#8217;,&#8217;Mexico&#8217;),<\/p>\n<p>(11,&#8217;IT&#8217;,&#8217;Italy&#8217;),<\/p>\n<p>(12,&#8217;ES&#8217;,&#8217;Spain&#8217;),<\/p>\n<p>(13,&#8217;KR&#8217;,&#8217;South Korea&#8217;),<\/p>\n<p>(14,&#8217;NL&#8217;,&#8217;Netherlands&#8217;),<\/p>\n<p>(15,&#8217;SE&#8217;,&#8217;Sweden&#8217;),<\/p>\n<p>(16,&#8217;AU&#8217;,&#8217;Australia&#8217;),<\/p>\n<p>(17,&#8217;CH&#8217;,&#8217;Switzerland&#8217;),<\/p>\n<p>(18,&#8217;AT&#8217;,&#8217;Austria&#8217;),<\/p>\n<p>(19,&#8217;BE&#8217;,&#8217;Belgium&#8217;),<\/p>\n<p>(20,&#8217;DK&#8217;,&#8217;Denmark&#8217;),<\/p>\n<p>(21,&#8217;NO&#8217;,&#8217;Norway&#8217;),<\/p>\n<p>(22,&#8217;FI&#8217;,&#8217;Finland&#8217;),<\/p>\n<p>(23,&#8217;PL&#8217;,&#8217;Poland&#8217;),<\/p>\n<p>(24,&#8217;CZ&#8217;,&#8217;Czechia&#8217;),<\/p>\n<p>(25,&#8217;TR&#8217;,&#8217;Turkey&#8217;),<\/p>\n<p>(26,&#8217;ZA&#8217;,&#8217;South Africa&#8217;),<\/p>\n<p>(27,&#8217;SG&#8217;,&#8217;Singapore&#8217;),<\/p>\n<p>(28,&#8217;MY&#8217;,&#8217;Malaysia&#8217;),<\/p>\n<p>(29,&#8217;TH&#8217;,&#8217;Thailand&#8217;),<\/p>\n<p>(30,&#8217;VN&#8217;,&#8217;Vietnam&#8217;);<\/p>\n<p>\u00a0<\/p>\n<p>&#8212;dim_city<\/p>\n<p>INSERT INTO dim_city<\/p>\n<p>(city_key, city_id, city_name, country_key)<\/p>\n<p>VALUES<\/p>\n<p>(1,101,&#8217;New York&#8217;,1),<\/p>\n<p>(2,102,&#8217;Los Angeles&#8217;,1),<\/p>\n<p>(3,103,&#8217;Chicago&#8217;,1),<\/p>\n<p>(4,104,&#8217;Berlin&#8217;,2),<\/p>\n<p>(5,105,&#8217;Munich&#8217;,2),<\/p>\n<p>(6,106,&#8217;Hamburg&#8217;,2),<\/p>\n<p>(7,107,&#8217;Shanghai&#8217;,3),<\/p>\n<p>(8,108,&#8217;Beijing&#8217;,3),<\/p>\n<p>(9,109,&#8217;Shenzhen&#8217;,3),<\/p>\n<p>(10,110,&#8217;Moscow&#8217;,4),<\/p>\n<p>(11,111,&#8217;St Petersburg&#8217;,4),<\/p>\n<p>(12,112,&#8217;Paris&#8217;,5),<\/p>\n<p>(13,113,&#8217;Lyon&#8217;,5),<\/p>\n<p>(14,114,&#8217;Tokyo&#8217;,6),<\/p>\n<p>(15,115,&#8217;Osaka&#8217;,6),<\/p>\n<p>(16,116,&#8217;Delhi&#8217;,7),<\/p>\n<p>(17,117,&#8217;Mumbai&#8217;,7),<\/p>\n<p>(18,118,&#8217;S\u00e3o Paulo&#8217;,8),<\/p>\n<p>(19,119,&#8217;Rio de Janeiro&#8217;,8),<\/p>\n<p>(20,120,&#8217;Toronto&#8217;,9),<\/p>\n<p>(21,121,&#8217;Vancouver&#8217;,9),<\/p>\n<p>(22,122,&#8217;Mexico City&#8217;,10),<\/p>\n<p>(23,123,&#8217;Milan&#8217;,11),<\/p>\n<p>(24,124,&#8217;Rome&#8217;,11),<\/p>\n<p>(25,125,&#8217;Madrid&#8217;,12),<\/p>\n<p>(26,126,&#8217;Barcelona&#8217;,12),<\/p>\n<p>(27,127,&#8217;Seoul&#8217;,13),<\/p>\n<p>(28,128,&#8217;Busan&#8217;,13),<\/p>\n<p>(29,129,&#8217;Amsterdam&#8217;,14),<\/p>\n<p>(30,130,&#8217;Stockholm&#8217;,15);<\/p>\n<p>\u00a0<\/p>\n<p>&#8212;dim_brand<\/p>\n<p>INSERT INTO dim_brand<\/p>\n<p>(brand_key, brand_id, brand_name, country_key)<\/p>\n<p>VALUES<\/p>\n<p>(1,201,&#8217;Apple&#8217;,1),<\/p>\n<p>(2,202,&#8217;Samsung&#8217;,13),<\/p>\n<p>(3,203,&#8217;BMW&#8217;,2),<\/p>\n<p>(4,204,&#8217;Xiaomi&#8217;,3),<\/p>\n<p>(5,205,&#8217;Sony&#8217;,6),<\/p>\n<p>(6,206,&#8217;LG&#8217;,13),<\/p>\n<p>(7,207,&#8217;Huawei&#8217;,3),<\/p>\n<p>(8,208,&#8217;Dell&#8217;,1),<\/p>\n<p>(9,209,&#8217;HP&#8217;,1),<\/p>\n<p>(10,210,&#8217;Tesla&#8217;,1),<\/p>\n<p>(11,211,&#8217;Mercedes-Benz&#8217;,2),<\/p>\n<p>(12,212,&#8217;Audi&#8217;,2),<\/p>\n<p>(13,213,&#8217;Nike&#8217;,1),<\/p>\n<p>(14,214,&#8217;Adidas&#8217;,2),<\/p>\n<p>(15,215,&#8217;Puma&#8217;,2),<\/p>\n<p>(16,216,&#8217;Zara&#8217;,12),<\/p>\n<p>(17,217,&#8217;H&amp;M&#8217;,15),<\/p>\n<p>(18,218,&#8217;Uniqlo&#8217;,6),<\/p>\n<p>(19,219,&#8217;Toyota&#8217;,6),<\/p>\n<p>(20,220,&#8217;Volkswagen&#8217;,2),<\/p>\n<p>(21,221,&#8217;Ford&#8217;,1),<\/p>\n<p>(22,222,&#8217;GM&#8217;,1),<\/p>\n<p>(23,223,&#8217;Hyundai&#8217;,13),<\/p>\n<p>(24,224,&#8217;Kia&#8217;,13),<\/p>\n<p>(25,225,&#8217;Nestl\u00e9&#8217;,17),<\/p>\n<p>(26,226,&#8217;Coca-Cola&#8217;,1),<\/p>\n<p>(27,227,&#8217;PepsiCo&#8217;,1),<\/p>\n<p>(28,228,&#8217;L`Oreal&#8217;,5),<\/p>\n<p>(29,229,&#8217;Colgate&#8217;,1),<\/p>\n<p>(30,230,&#8217;Heineken&#8217;,14);<\/p>\n<p>\u00a0<\/p>\n<p>&#8212;dim_category<\/p>\n<p>INSERT INTO dim_category<\/p>\n<p>(category_key, category_id, category_name, parent_category_key)<\/p>\n<p>VALUES<\/p>\n<p>(1,301,&#8217;Electronics&#8217;,0),<\/p>\n<p>(2,302,&#8217;Smartphones&#8217;,1),<\/p>\n<p>(3,303,&#8217;Laptops&#8217;,1),<\/p>\n<p>(4,304,&#8217;Automotive&#8217;,0),<\/p>\n<p>(5,305,&#8217;Electric Cars&#8217;,4),<\/p>\n<p>(6,306,&#8217;Fashion&#8217;,0),<\/p>\n<p>(7,307,&#8217;Clothing&#8217;,6),<\/p>\n<p>(8,308,&#8217;Footwear&#8217;,6),<\/p>\n<p>(9,309,&#8217;Home Appliances&#8217;,1),<\/p>\n<p>(10,310,&#8217;TVs&#8217;,1),<\/p>\n<p>(11,311,&#8217;Audio&#8217;,1),<\/p>\n<p>(12,312,&#8217;Books&#8217;,0),<\/p>\n<p>(13,313,&#8217;Fiction&#8217;,12),<\/p>\n<p>(14,314,&#8217;Non-fiction&#8217;,12),<\/p>\n<p>(15,315,&#8217;Sports&#8217;,0),<\/p>\n<p>(16,316,&#8217;Fitness Equipment&#8217;,15),<\/p>\n<p>(17,317,&#8217;Beauty&#8217;,0),<\/p>\n<p>(18,318,&#8217;Skincare&#8217;,17),<\/p>\n<p>(19,319,&#8217;Makeup&#8217;,17),<\/p>\n<p>(20,320,&#8217;Toys&#8217;,0),<\/p>\n<p>(21,321,&#8217;Outdoor&#8217;,15),<\/p>\n<p>(22,322,&#8217;Camping&#8217;,21),<\/p>\n<p>(23,323,&#8217;Travel&#8217;,0),<\/p>\n<p>(24,324,&#8217;Luggage&#8217;,23),<\/p>\n<p>(25,325,&#8217;Food &amp; Beverage&#8217;,0),<\/p>\n<p>(26,326,&#8217;Snacks&#8217;,25),<\/p>\n<p>(27,327,&#8217;Dairy&#8217;,25),<\/p>\n<p>(28,328,&#8217;Furniture&#8217;,0),<\/p>\n<p>(29,329,&#8217;Office Chairs&#8217;,28),<\/p>\n<p>(30,330,&#8217;Desks&#8217;,28);<\/p>\n<p>\u00a0<\/p>\n<p>&#8212;dim_product<\/p>\n<p>INSERT INTO dim_product<\/p>\n<p>(product_key, product_id, product_name, category_key, brand_key, unit_price)<\/p>\n<p>VALUES<\/p>\n<p>(1,401,&#8217;iPhone 15&#8242;,2,1,999.00),<\/p>\n<p>(2,402,&#8217;Galaxy S24&#8242;,2,2,899.00),<\/p>\n<p>(3,403,&#8217;MacBook Air 13&#8242;,3,1,1299.00),<\/p>\n<p>(4,404,&#8217;Model 3 Standard&#8217;,5,10,42990.00),<\/p>\n<p>(5,405,&#8217;Redmi Note 13&#8242;,2,4,399.00),<\/p>\n<p>(6,406,&#8217;Sony WH-1000XM5&#8242;,11,5,399.99),<\/p>\n<p>(7,407,&#8217;LG OLED55C3&#8242;,10,6,1499.00),<\/p>\n<p>(8,408,&#8217;Dell XPS 15&#8242;,3,8,1899.00),<\/p>\n<p>(9,409,&#8217;HP Pavilion&#8217;,3,9,799.00),<\/p>\n<p>(10,410,&#8217;Tesla Model Y&#8217;,5,10,52990.00),<\/p>\n<p>(11,411,&#8217;Mercedes EQE&#8217;,5,11,74900.00),<\/p>\n<p>(12,412,&#8217;Audi Q8 e-tron&#8217;,5,12,72900.00),<\/p>\n<p>(13,413,&#8217;Nike Air Max&#8217;,8,13,139.99),<\/p>\n<p>(14,414,&#8217;Adidas Ultraboost&#8217;,8,14,180.00),<\/p>\n<p>(15,415,&#8217;Puma RS-X&#8217;,8,15,110.00),<\/p>\n<p>(16,416,&#8217;Zara T-shirt&#8217;,7,16,19.99),<\/p>\n<p>(17,417,&#8217;H&amp;M Hoodie&#8217;,7,17,39.99),<\/p>\n<p>(18,418,&#8217;Uniqlo Jeans&#8217;,7,18,49.90),<\/p>\n<p>(19,419,&#8217;Toyota Camry&#8217;,4,19,25900.00),<\/p>\n<p>(20,420,&#8217;VW Golf&#8217;,4,20,24000.00),<\/p>\n<p>(21,421,&#8217;Ford Mustang&#8217;,4,21,27000.00),<\/p>\n<p>(22,422,&#8217;Hyundai Ioniq 5&#8242;,5,23,45900.00),<\/p>\n<p>(23,423,&#8217;Kia EV6&#8242;,5,24,47900.00),<\/p>\n<p>(24,424,&#8217;Nestl\u00e9 KitKat&#8217;,26,25,1.49),<\/p>\n<p>(25,425,&#8217;Coca-Cola 1L&#8217;,26,26,1.19),<\/p>\n<p>(26,426,&#8217;Pepsi 1L&#8217;,26,27,1.19),<\/p>\n<p>(27,427,&#8217;Lipstick Matte&#8217;,19,28,12.99),<\/p>\n<p>(28,428,&#8217;Office Chair Ergo&#8217;,29,8,249.00),<\/p>\n<p>(29,429,&#8217;Standing Desk&#8217;,30,8,399.00),<\/p>\n<p>(30,430,&#8217;Camping Tent&#8217;,22,15,199.00);<\/p>\n<p>\u00a0<\/p>\n<p>&#8212;dim_customer<\/p>\n<p>INSERT INTO dim_customer<\/p>\n<p>(customer_key, customer_id, full_name, email, city_key, registration_date)<\/p>\n<p>VALUES<\/p>\n<p>(1,501,&#8217;John Doe&#8217;,&#8217;<a href=\"mailto:john.doe@mail.com\" rel=\"noopener noreferrer nofollow\">john.doe@mail.com<\/a>&#8216;,1,&#8217;2023-01-10&#8217;),<\/p>\n<p>(2,502,&#8217;Anna M\u00fcller&#8217;,&#8217;<a href=\"mailto:anna.mueller@mail.de\" rel=\"noopener noreferrer nofollow\">anna.mueller@mail.de<\/a>&#8216;,4,&#8217;2022-08-15&#8217;),<\/p>\n<p>(3,503,&#8217;Li Wei&#8217;,&#8217;<a href=\"mailto:li.wei@mail.cn\" rel=\"noopener noreferrer nofollow\">li.wei@mail.cn<\/a>&#8216;,7,&#8217;2024-03-20&#8217;),<\/p>\n<p>(4,504,&#8217;Petr Ivanov&#8217;,&#8217;<a href=\"mailto:petr.ivanov@mail.ru\" rel=\"noopener noreferrer nofollow\">petr.ivanov@mail.ru<\/a>&#8216;,10,&#8217;2021-06-05&#8217;),<\/p>\n<p>(5,505,&#8217;Maria Garcia&#8217;,&#8217;<a href=\"mailto:maria.garcia@mail.es\" rel=\"noopener noreferrer nofollow\">maria.garcia@mail.es<\/a>&#8216;,25,&#8217;2023-05-12&#8217;),<\/p>\n<p>(6,506,&#8217;Jean Dupont&#8217;,&#8217;<a href=\"mailto:jean.dupont@mail.fr\" rel=\"noopener noreferrer nofollow\">jean.dupont@mail.fr<\/a>&#8216;,12,&#8217;2022-11-30&#8217;),<\/p>\n<p>(7,507,&#8217;Yuki Sato&#8217;,&#8217;<a href=\"mailto:yuki.sato@mail.jp\" rel=\"noopener noreferrer nofollow\">yuki.sato@mail.jp<\/a>&#8216;,14,&#8217;2023-09-01&#8217;),<\/p>\n<p>(8,508,&#8217;Priya Sharma&#8217;,&#8217;<a href=\"mailto:priya.sharma@mail.in\" rel=\"noopener noreferrer nofollow\">priya.sharma@mail.in<\/a>&#8216;,16,&#8217;2024-02-18&#8217;),<\/p>\n<p>(9,509,&#8217;Carlos Silva&#8217;,&#8217;<a href=\"mailto:carlos.silva@mail.br\" rel=\"noopener noreferrer nofollow\">carlos.silva@mail.br<\/a>&#8216;,18,&#8217;2021-12-03&#8217;),<\/p>\n<p>(10,510,&#8217;Emily Clark&#8217;,&#8217;<a href=\"mailto:emily.clark@mail.ca\" rel=\"noopener noreferrer nofollow\">emily.clark@mail.ca<\/a>&#8216;,20,&#8217;2023-07-22&#8217;),<\/p>\n<p>(11,511,&#8217;Luis Hernandez&#8217;,&#8217;<a href=\"mailto:luis.hernandez@mail.mx\" rel=\"noopener noreferrer nofollow\">luis.hernandez@mail.mx<\/a>&#8216;,22,&#8217;2022-04-11&#8217;),<\/p>\n<p>(12,512,&#8217;Laura Rossi&#8217;,&#8217;<a href=\"mailto:laura.rossi@mail.it\" rel=\"noopener noreferrer nofollow\">laura.rossi@mail.it<\/a>&#8216;,23,&#8217;2023-03-14&#8217;),<\/p>\n<p>(13,513,&#8217;Erik Janssen&#8217;,&#8217;<a href=\"mailto:erik.janssen@mail.nl\" rel=\"noopener noreferrer nofollow\">erik.janssen@mail.nl<\/a>&#8216;,29,&#8217;2024-01-05&#8217;),<\/p>\n<p>(14,514,&#8217;Sven Andersson&#8217;,&#8217;<a href=\"mailto:sven.andersson@mail.se\" rel=\"noopener noreferrer nofollow\">sven.andersson@mail.se<\/a>&#8216;,30,&#8217;2021-10-09&#8217;),<\/p>\n<p>(15,515,&#8217;Kenji Tanaka&#8217;,&#8217;<a href=\"mailto:kenji.tanaka@mail.jp\" rel=\"noopener noreferrer nofollow\">kenji.tanaka@mail.jp<\/a>&#8216;,15,&#8217;2022-06-27&#8217;),<\/p>\n<p>(16,516,&#8217;Olivia Smith&#8217;,&#8217;<a href=\"mailto:olivia.smith@mail.com\" rel=\"noopener noreferrer nofollow\">olivia.smith@mail.com<\/a>&#8216;,2,&#8217;2023-08-19&#8217;),<\/p>\n<p>(17,517,&#8217;Raj Patel&#8217;,&#8217;<a href=\"mailto:raj.patel@mail.in\" rel=\"noopener noreferrer nofollow\">raj.patel@mail.in<\/a>&#8216;,17,&#8217;2024-04-30&#8217;),<\/p>\n<p>(18,518,&#8217;Sophie Laurent&#8217;,&#8217;<a href=\"mailto:sophie.laurent@mail.fr\" rel=\"noopener noreferrer nofollow\">sophie.laurent@mail.fr<\/a>&#8216;,13,&#8217;2022-12-11&#8217;),<\/p>\n<p>(19,519,&#8217;Lucas Oliveira&#8217;,&#8217;<a href=\"mailto:lucas.oliveira@mail.br\" rel=\"noopener noreferrer nofollow\">lucas.oliveira@mail.br<\/a>&#8216;,19,&#8217;2023-01-25&#8217;),<\/p>\n<p>(20,520,&#8217;Isabella Wong&#8217;,&#8217;<a href=\"mailto:isabella.wong@mail.sg\" rel=\"noopener noreferrer nofollow\">isabella.wong@mail.sg<\/a>&#8216;,27,&#8217;2022-09-13&#8217;),<\/p>\n<p>(21,521,&#8217;Noah Andersen&#8217;,&#8217;<a href=\"mailto:noah.andersen@mail.dk\" rel=\"noopener noreferrer nofollow\">noah.andersen@mail.dk<\/a>&#8216;,20,&#8217;2023-06-08&#8217;),<\/p>\n<p>(22,522,&#8217;Mia M\u00fcller&#8217;,&#8217;<a href=\"mailto:mia.mueller@mail.de\" rel=\"noopener noreferrer nofollow\">mia.mueller@mail.de<\/a>&#8216;,5,&#8217;2024-05-02&#8217;),<\/p>\n<p>(23,523,&#8217;Leo Martin&#8217;,&#8217;<a href=\"mailto:leo.martin@mail.fr\" rel=\"noopener noreferrer nofollow\">leo.martin@mail.fr<\/a>&#8216;,13,&#8217;2021-05-30&#8217;),<\/p>\n<p>(24,524,&#8217;Zoe Kim&#8217;,&#8217;<a href=\"mailto:zoe.kim@mail.kr\" rel=\"noopener noreferrer nofollow\">zoe.kim@mail.kr<\/a>&#8216;,28,&#8217;2023-10-14&#8217;),<\/p>\n<p>(25,525,&#8217;Ethan Brown&#8217;,&#8217;<a href=\"mailto:ethan.brown@mail.com\" rel=\"noopener noreferrer nofollow\">ethan.brown@mail.com<\/a>&#8216;,3,&#8217;2022-07-17&#8217;),<\/p>\n<p>(26,526,&#8217;Chloe Dubois&#8217;,&#8217;<a href=\"mailto:chloe.dubois@mail.fr\" rel=\"noopener noreferrer nofollow\">chloe.dubois@mail.fr<\/a>&#8216;,12,&#8217;2023-11-06&#8217;),<\/p>\n<p>(27,527,&#8217;William Jones&#8217;,&#8217;<a href=\"mailto:william.jones@mail.ca\" rel=\"noopener noreferrer nofollow\">william.jones@mail.ca<\/a>&#8216;,21,&#8217;2024-03-09&#8217;),<\/p>\n<p>(28,528,&#8217;Grace Lee&#8217;,&#8217;<a href=\"mailto:grace.lee@mail.my\" rel=\"noopener noreferrer nofollow\">grace.lee@mail.my<\/a>&#8216;,28,&#8217;2022-02-28&#8217;),<\/p>\n<p>(29,529,&#8217;Oliver Wilson&#8217;,&#8217;<a href=\"mailto:oliver.wilson@mail.au\" rel=\"noopener noreferrer nofollow\">oliver.wilson@mail.au<\/a>&#8216;,16,&#8217;2023-04-22&#8217;),<\/p>\n<p>(30,530,&#8217;Ava Johnson&#8217;,&#8217;<a href=\"mailto:ava.johnson@mail.com\" rel=\"noopener noreferrer nofollow\">ava.johnson@mail.com<\/a>&#8216;,2,&#8217;2021-11-11&#8217;);<\/p>\n<p>\u00a0<\/p>\n<p>&#8212;dim_warehouse<\/p>\n<p>INSERT INTO dim_warehouse<\/p>\n<p>(warehouse_key, warehouse_id, warehouse_name, city_key)<\/p>\n<p>VALUES<\/p>\n<p>(1,601,&#8217;WH-New York&#8217;,1),<\/p>\n<p>(2,602,&#8217;WH-Los Angeles&#8217;,2),<\/p>\n<p>(3,603,&#8217;WH-Chicago&#8217;,3),<\/p>\n<p>(4,604,&#8217;WH-Berlin&#8217;,4),<\/p>\n<p>(5,605,&#8217;WH-Munich&#8217;,5),<\/p>\n<p>(6,606,&#8217;WH-Shanghai&#8217;,7),<\/p>\n<p>(7,607,&#8217;WH-Beijing&#8217;,8),<\/p>\n<p>(8,608,&#8217;WH-Shenzhen&#8217;,9),<\/p>\n<p>(9,609,&#8217;WH-Moscow&#8217;,10),<\/p>\n<p>(10,610,&#8217;WH-St Petersburg&#8217;,11),<\/p>\n<p>(11,611,&#8217;WH-Paris&#8217;,12),<\/p>\n<p>(12,612,&#8217;WH-Lyon&#8217;,13),<\/p>\n<p>(13,613,&#8217;WH-Tokyo&#8217;,14),<\/p>\n<p>(14,614,&#8217;WH-Osaka&#8217;,15),<\/p>\n<p>(15,615,&#8217;WH-Delhi&#8217;,16),<\/p>\n<p>(16,616,&#8217;WH-Mumbai&#8217;,17),<\/p>\n<p>(17,617,&#8217;WH-S\u00e3o Paulo&#8217;,18),<\/p>\n<p>(18,618,&#8217;WH-Rio de Janeiro&#8217;,19),<\/p>\n<p>(19,619,&#8217;WH-Toronto&#8217;,20),<\/p>\n<p>(20,620,&#8217;WH-Vancouver&#8217;,21),<\/p>\n<p>(21,621,&#8217;WH-Mexico City&#8217;,22),<\/p>\n<p>(22,622,&#8217;WH-Milan&#8217;,23),<\/p>\n<p>(23,623,&#8217;WH-Rome&#8217;,24),<\/p>\n<p>(24,624,&#8217;WH-Madrid&#8217;,25),<\/p>\n<p>(25,625,&#8217;WH-Barcelona&#8217;,26),<\/p>\n<p>(26,626,&#8217;WH-Seoul&#8217;,27),<\/p>\n<p>(27,627,&#8217;WH-Busan&#8217;,28),<\/p>\n<p>(28,628,&#8217;WH-Amsterdam&#8217;,29),<\/p>\n<p>(29,629,&#8217;WH-Stockholm&#8217;,30),<\/p>\n<p>(30,630,&#8217;WH-Copenhagen&#8217;,20);<\/p>\n<p>\u00a0<\/p>\n<p>&#8212;dim_supplier<\/p>\n<p>INSERT INTO dim_supplier<\/p>\n<p>(supplier_key, supplier_id, supplier_name, city_key)<\/p>\n<p>VALUES<\/p>\n<p>(1,701,&#8217;TechParts USA&#8217;,1),<\/p>\n<p>(2,702,&#8217;EuroElectronics&#8217;,4),<\/p>\n<p>(3,703,&#8217;AsiaGear&#8217;,7),<\/p>\n<p>(4,704,&#8217;AutoSupply RU&#8217;,10),<\/p>\n<p>(5,705,&#8217;Fashion Wholesale FR&#8217;,12),<\/p>\n<p>(6,706,&#8217;Tokyo Components&#8217;,14),<\/p>\n<p>(7,707,&#8217;Mumbai Traders&#8217;,17),<\/p>\n<p>(8,708,&#8217;Brasil Auto Parts&#8217;,18),<\/p>\n<p>(9,709,&#8217;Canadian Goods&#8217;,20),<\/p>\n<p>(10,710,&#8217;Mexico Imports&#8217;,22),<\/p>\n<p>(11,711,&#8217;Milan Fashion House&#8217;,23),<\/p>\n<p>(12,712,&#8217;Madrid Distribution&#8217;,25),<\/p>\n<p>(13,713,&#8217;Seoul Electronics&#8217;,27),<\/p>\n<p>(14,714,&#8217;Amsterdam Supply&#8217;,29),<\/p>\n<p>(15,715,&#8217;Nordic Tools&#8217;,30),<\/p>\n<p>(16,716,&#8217;Shanghai Motors&#8217;,9),<\/p>\n<p>(17,717,&#8217;Beijing Chips&#8217;,8),<\/p>\n<p>(18,718,&#8217;Shenzhen Devices&#8217;,9),<\/p>\n<p>(19,719,&#8217;Berlin Logistics&#8217;,4),<\/p>\n<p>(20,720,&#8217;Munich Spare Parts&#8217;,5),<\/p>\n<p>(21,721,&#8217;Paris Sourcing&#8217;,12),<\/p>\n<p>(22,722,&#8217;London Exports&#8217;,1),<\/p>\n<p>(23,723,&#8217;Singapore Trade&#8217;,27),<\/p>\n<p>(24,724,&#8217;Kuala Lumpur Hub&#8217;,28),<\/p>\n<p>(25,725,&#8217;Bangkok Suppliers&#8217;,29),<\/p>\n<p>(26,726,&#8217;Johannesburg Parts&#8217;,26),<\/p>\n<p>(27,727,&#8217;Sydney Components&#8217;,16),<\/p>\n<p>(28,728,&#8217;Vienna Auto&#8217;,18),<\/p>\n<p>(29,729,&#8217;Zurich Electronics&#8217;,17),<\/p>\n<p>(30,730,&#8217;Warsaw Wholesale&#8217;,23);<\/p>\n<p>\u00a0<\/p>\n<p>&#8212;fact_sales<\/p>\n<p>INSERT INTO fact_sales<\/p>\n<p>(sale_key, date_key, product_key, customer_key, warehouse_key, supplier_key, quantity, gross_amount, discount_amount, net_amount)<\/p>\n<p>VALUES<\/p>\n<p>(1,20240101,1,1,1,1,2,1998.00,100.00,1898.00),<\/p>\n<p>(2,20240101,2,2,4,2,1,899.00,0.00,899.00),<\/p>\n<p>(3,20240102,3,3,6,3,1,1299.00,99.00,1200.00),<\/p>\n<p>(4,20240102,4,4,9,4,1,42990.00,2000.00,40990.00),<\/p>\n<p>(5,20240103,5,5,11,5,3,1197.00,100.00,1097.00),<\/p>\n<p>(6,20240103,6,6,13,6,1,399.99,20.00,379.99),<\/p>\n<p>(7,20240104,7,7,15,7,1,1499.00,150.00,1349.00),<\/p>\n<p>(8,20240104,8,8,16,8,1,1899.00,0.00,1899.00),<\/p>\n<p>(9,20240105,9,9,17,9,2,1598.00,100.00,1498.00),<\/p>\n<p>(10,20240105,10,10,19,10,1,52990.00,3000.00,49990.00),<\/p>\n<p>(11,20240106,11,11,21,11,1,74900.00,5000.00,69900.00),<\/p>\n<p>(12,20240106,12,12,23,12,1,72900.00,4000.00,68900.00),<\/p>\n<p>(13,20240107,13,13,24,13,2,279.98,20.00,259.98),<\/p>\n<p>(14,20240107,14,14,26,14,1,180.00,10.00,170.00),<\/p>\n<p>(15,20240108,15,15,27,15,1,110.00,5.00,105.00),<\/p>\n<p>(16,20240108,16,16,1,1,3,59.97,3.00,56.97),<\/p>\n<p>(17,20240109,17,17,3,16,2,79.98,4.00,75.98),<\/p>\n<p>(18,20240109,18,18,5,17,1,49.90,0.00,49.90),<\/p>\n<p>(19,20240110,19,19,7,18,1,25900.00,2000.00,23900.00),<\/p>\n<p>(20,20240110,20,20,8,19,1,24000.00,1500.00,22500.00),<\/p>\n<p>(21,20240111,21,21,10,20,1,27000.00,1000.00,26000.00),<\/p>\n<p>(22,20240111,22,22,12,21,1,45900.00,3000.00,42900.00),<\/p>\n<p>(23,20240112,23,23,14,22,1,47900.00,2500.00,45400.00),<\/p>\n<p>(24,20240112,24,24,18,23,5,7.45,0.45,7.00),<\/p>\n<p>(25,20240113,25,25,20,24,10,11.90,0.90,11.00),<\/p>\n<p>(26,20240113,26,26,22,25,8,9.52,0.52,9.00),<\/p>\n<p>(27,20240114,27,27,25,26,3,38.97,2.97,36.00),<\/p>\n<p>(28,20240114,28,28,28,27,1,249.00,25.00,224.00),<\/p>\n<p>(29,20240115,29,29,30,28,1,399.00,40.00,359.00),<\/p>\n<p>(30,20240115,30,30,2,29,1,199.00,10.00,189.00);<\/p>\n<\/div>\n<\/details>\n<h2>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438  <\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0432 Clickhouse, \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Luxms BI. \u0415\u0441\u043b\u0438 \u0432\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440 Clickhouse \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 SSL \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 ssl=true.   <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6ef\/40f\/ebf\/6ef40febf4a3a26d02027882c533f0ee.png\" alt=\"\u0420\u0438\u0441.1. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 Clickhouse  \" title=\"\u0420\u0438\u0441.1. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 Clickhouse  \" width=\"1600\" height=\"542\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/6ef\/40f\/ebf\/6ef40febf4a3a26d02027882c533f0ee.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6ef\/40f\/ebf\/6ef40febf4a3a26d02027882c533f0ee.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441.1. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 Clickhouse  <\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u0443\u0431\u043e\u0432, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 Clickhouse. \u0412\u044b\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0435\u043c \u0432\u0441\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0434\u043b\u044f \u00ab\u0441\u043d\u0435\u0436\u0438\u043d\u043a\u0438\u00bb \u043d\u0430 \u043b\u0438\u0441\u0442\u0438\u043a \u0432 \u043a\u043b\u0435\u0442\u043e\u0447\u043a\u0443. (\u0441\u043c. \u0420\u0438\u0441.2)  <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/241\/b1c\/b0d\/241b1cb0da018f3c17bef2323a55b20d.png\" alt=\"\u0420\u0438\u0441.2. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u0422\u0430\u0431\u043b\u0438\u0446\u044b \u043d\u0430 \u043b\u0438\u0441\u0442\u0438\u043a\u0435 \u0432 \u043a\u043b\u0435\u0442\u043e\u0447\u043a\u0443  \" title=\"\u0420\u0438\u0441.2. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u0422\u0430\u0431\u043b\u0438\u0446\u044b \u043d\u0430 \u043b\u0438\u0441\u0442\u0438\u043a\u0435 \u0432 \u043a\u043b\u0435\u0442\u043e\u0447\u043a\u0443  \" width=\"1600\" height=\"833\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/241\/b1c\/b0d\/241b1cb0da018f3c17bef2323a55b20d.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/241\/b1c\/b0d\/241b1cb0da018f3c17bef2323a55b20d.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441.2. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u0422\u0430\u0431\u043b\u0438\u0446\u044b \u043d\u0430 \u043b\u0438\u0441\u0442\u0438\u043a\u0435 \u0432 \u043a\u043b\u0435\u0442\u043e\u0447\u043a\u0443  <\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0441\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438. \u0421\u0432\u044f\u0437\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0442\u0440\u0430\u043d\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0442\u044c id \u043f\u043e\u043a\u0443\u043f\u043e\u043a \u0438 id \u0433\u043e\u0440\u043e\u0434\u0430. \u0422\u0430\u043a \u0447\u0442\u043e \u0442\u0443\u0442 \u043d\u0430\u0434\u043e \u0431\u044b\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c. (\u0441\u043c. \u0420\u0438\u0441.3)  <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/efe\/5ad\/925\/efe5ad9250d8c96115dd53f382806ffc.png\" alt=\"\u0420\u0438\u0441.3. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0432\u044f\u0437\u0435\u0439 \u00ab\u0441\u043d\u0435\u0436\u0438\u043d\u043a\u0430\u00bb  \" title=\"\u0420\u0438\u0441.3. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0432\u044f\u0437\u0435\u0439 \u00ab\u0441\u043d\u0435\u0436\u0438\u043d\u043a\u0430\u00bb  \" width=\"1600\" height=\"833\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/efe\/5ad\/925\/efe5ad9250d8c96115dd53f382806ffc.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/efe\/5ad\/925\/efe5ad9250d8c96115dd53f382806ffc.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441.3. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0432\u044f\u0437\u0435\u0439 \u00ab\u0441\u043d\u0435\u0436\u0438\u043d\u043a\u0430\u00bb  <\/figcaption><\/div>\n<\/figure>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432 \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043c\u043e\u0434\u0435\u043b\u044c\u044e, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u0432\u0435\u0441\u0442\u0438 \u043c\u044b\u0448\u043a\u0443 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0444\u0430\u043a\u0442\u043e\u0432, \u043d\u0430\u0436\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0443\u044e \u043a\u043d\u043e\u043f\u043a\u0443 \u043c\u044b\u0448\u0438 \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0424\u0430\u043a\u0442\u044b. (\u0441\u043c. \u0420\u0438\u0441.4)  <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/965\/270\/65f\/96527065fb936008f04d536c4cdca635.png\" alt=\"\u0420\u0438\u0441.4. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u0438\u0437 \u043a\u0443\u0431\u043e\u0432\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438  \" title=\"\u0420\u0438\u0441.4. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u0438\u0437 \u043a\u0443\u0431\u043e\u0432\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438  \" width=\"1600\" height=\"840\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/965\/270\/65f\/96527065fb936008f04d536c4cdca635.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/965\/270\/65f\/96527065fb936008f04d536c4cdca635.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441.4. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u0438\u0437 \u043a\u0443\u0431\u043e\u0432\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438  <\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0444\u0430\u043a\u0442\u043e\u0432 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0438\u043b\u0430\u0441\u044c \u0432 \u043a\u0443\u0431\u0438\u043a. \u042d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043a \u0440\u0435\u0436\u0438\u043c\u0443 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. (\u0441\u043c. \u0420\u0438\u0441.5)  <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/049\/fdc\/5b8\/049fdc5b81184e8c5d82a0720902cb4f.png\" alt=\"\u0420\u0438\u0441.5. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438  \" title=\"\u0420\u0438\u0441.5. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438  \" width=\"1600\" height=\"840\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/049\/fdc\/5b8\/049fdc5b81184e8c5d82a0720902cb4f.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/049\/fdc\/5b8\/049fdc5b81184e8c5d82a0720902cb4f.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441.5. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438  <\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438) \u043d\u0430\u0437\u043e\u0432\u0451\u043c \u0432\u0441\u0435 \u043f\u043e\u043b\u044f \u0440\u0443\u0441\u0441\u043a\u0438\u043c\u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u043c\u0438. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043f\u0435\u0440\u0435\u0434 \u0440\u044f\u0434\u043e\u0432\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u043d\u0435 \u0432\u0441\u0442\u0430\u043d\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441\u0430, \u0430 \u0438\u0437 \u043a\u0430\u043a\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043c\u043d\u0435 \u0432\u0437\u044f\u0442\u044c \u0438 \u0432\u044b\u0442\u0430\u0449\u0438\u0442\u044c \u043f\u043e\u043b\u0435 \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0417\u0434\u0435\u0441\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u043f\u043e\u043b\u044f \u0438\u0437 \u0434\u0432\u0443\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u043a\u0430\u043a \u0431\u044b \u0441\u043e\u043b\u044c\u044e\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e, \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u043e\u0442\u0431\u0435\u0440\u0443\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043d\u0443\u0436\u043d\u043e\u0435 \u0438 \u0432\u044b\u0442\u0430\u0449\u0430\u0442 \u0435\u0433\u043e \u043d\u0430 \u0434\u044d\u0448. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u043f\u0440\u043e\u0449\u0435 \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u043e \u0432\u0441\u0435\u0445 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u0445 \u043c\u043e\u0434\u0435\u043b\u0438, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u044b \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c, \u0447\u0442\u043e \u0443\u0441\u043a\u043e\u0440\u0438\u0442 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 \u043d\u0430 \u0434\u044d\u0448\u0431\u043e\u0440\u0434\u0435. (\u0441\u043c. \u0420\u0438\u0441.6)  <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d0d\/6ca\/26f\/d0d6ca26fda0d06ae4110a0b1b7fcfb6.png\" alt=\"\u0420\u0438\u0441.6. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u0435\u0439 \u0432 \u0440\u0443\u0441\u0441\u043a\u0438\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f  \" title=\"\u0420\u0438\u0441.6. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u0435\u0439 \u0432 \u0440\u0443\u0441\u0441\u043a\u0438\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f  \" width=\"1600\" height=\"840\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/d0d\/6ca\/26f\/d0d6ca26fda0d06ae4110a0b1b7fcfb6.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d0d\/6ca\/26f\/d0d6ca26fda0d06ae4110a0b1b7fcfb6.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441.6. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u0435\u0439 \u0432 \u0440\u0443\u0441\u0441\u043a\u0438\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f  <\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u0430\u043a \u0438\u0442\u043e\u0433, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043c\u043e\u0434\u0435\u043b\u044c, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u0443\u044e \u043d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 7.  <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e23\/9ae\/554\/e239ae5542734f1a2daed90733f6b97d.png\" alt=\"\u0420\u0438\u0441.7. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u0418\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c  \" title=\"\u0420\u0438\u0441.7. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u0418\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c  \" width=\"1523\" height=\"721\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/e23\/9ae\/554\/e239ae5542734f1a2daed90733f6b97d.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e23\/9ae\/554\/e239ae5542734f1a2daed90733f6b97d.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441.7. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u0418\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c  <\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 \u043a\u0443\u0431\u0430\u043c\u0438, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u043e\u043b\u0435\u0439. \u041d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 8 \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0430\u043d\u0430\u043b\u0438\u0437\u0430, \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043e 3 \u0438\u0437 44 \u043f\u043e\u043b\u044f. \u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0441\u0430\u043c\u043e\u043c\u0443 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0442\u0438\u043f, \u0435\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u043d\u0430\u0431\u043e\u0440 \u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. (\u0441\u043c. \u0420\u0438\u0441.9)  <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6b2\/3cc\/80f\/6b23cc80f76b98f7a47dbac2bc63364a.png\" alt=\"\u0420\u0438\u0441.8. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u043e\u043b\u0435\u0439  \" title=\"\u0420\u0438\u0441.8. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u043e\u043b\u0435\u0439  \" width=\"1600\" height=\"840\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/6b2\/3cc\/80f\/6b23cc80f76b98f7a47dbac2bc63364a.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6b2\/3cc\/80f\/6b23cc80f76b98f7a47dbac2bc63364a.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441.8. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u043e\u043b\u0435\u0439  <\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/cdc\/450\/357\/cdc4503576ad2590884e47c7db0976a7.png\" alt=\"\u0420\u0438\u0441.9. \u0418\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c. \u0412\u044b\u0431\u043e\u0440 \u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439  \" title=\"\u0420\u0438\u0441.9. \u0418\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c. \u0412\u044b\u0431\u043e\u0440 \u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439  \" width=\"1600\" height=\"842\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/cdc\/450\/357\/cdc4503576ad2590884e47c7db0976a7.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/cdc\/450\/357\/cdc4503576ad2590884e47c7db0976a7.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441.9. \u0418\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c. \u0412\u044b\u0431\u043e\u0440 \u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439  <\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0443 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438, \u043a\u0430\u043a \u0432\u043e\u0434\u0438\u0442\u0441\u044f, \u0441\u0430\u043c\u043e\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0435 =) : \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u0440\u0438\u0434\u0443\u043c\u044b\u0432\u0430\u0435\u043c \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u043e\u0435 \u043d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0432\u043f\u0435\u0440\u0451\u0434 \u0442\u0432\u043e\u0440\u0438\u0442\u044c \u0434\u044d\u0448\u0431\u043e\u0440\u0434! (\u0441\u043c. \u0420\u0438\u0441.10)  <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/704\/7d3\/323\/7047d332337a86c281096dbaaae5fe36.png\" alt=\"\u0420\u0438\u0441.10. \u0418\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c. \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435  \" title=\"\u0420\u0438\u0441.10. \u0418\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c. \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435  \" width=\"1600\" height=\"842\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/704\/7d3\/323\/7047d332337a86c281096dbaaae5fe36.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/704\/7d3\/323\/7047d332337a86c281096dbaaae5fe36.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441.10. \u0418\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c. \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435  <\/figcaption><\/div>\n<\/figure>\n<h2>\u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0434\u044d\u0448\u0431\u043e\u0440\u0434\u0430  <\/h2>\n<p>\u042f \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b \u0431\u043b\u043e\u043a \u0441\u043e \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0430\u043c\u0438, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043f\u0435\u0440\u0432\u044b\u0439 \u0430\u0442\u043b\u0430\u0441, \u0442.\u043a. \u043c\u043d\u043e\u0433\u0438\u0435 \u0443\u0436\u0435 \u0432 \u043a\u0443\u0440\u0441\u0435, \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u0436\u0435 \u043d\u0435\u0442 \u0438 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u043c\u0438\u043b\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0441\u0438\u043c \u043d\u0430 \u043d\u0430\u0448\u0435 <a href=\"https:\/\/luxmsbi.ru\/services\/education\/\" rel=\"noopener noreferrer nofollow\">\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u043a\u0443\u0440\u0441\u0435 \u00ab\u041e\u0441\u043d\u043e\u0432\u044b \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 Luxms BI\u00bb<\/a>, \u0438\u043b\u0438 \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0439\u0442\u0435\u0441\u044c \u043a <a href=\"https:\/\/t.me\/luxms_community\" rel=\"noopener noreferrer nofollow\">\u043d\u0430\u0448\u0435\u043c\u0443 \u043a\u043e\u043c\u044c\u044e\u043d\u0438\u0442\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c<\/a>.<\/p>\n<p>\u041f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u044d\u0448\u043b\u0435\u0442\u0430 \u00ab\u0420\u0430\u0434\u0430\u0440\u00bb \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u00ab\u0412\u044b\u0440\u0443\u0447\u043a\u0430 \u043f\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c\u00bb. \u041c\u044b \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0420\u0430\u0434\u0430\u0440 \u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u0448\u0443 \u043c\u043e\u0434\u0435\u043b\u044c \u0441 \u043d\u0435\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u00ab\u041c\u043e\u0434\u0435\u043b\u044c \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043c\u0430\u0433\u0430\u0437\u0438\u043d: \u0444\u0430\u043a\u0442\u044b \u043f\u0440\u043e\u0434\u0430\u0436 (fact_sales) + \u043d\u0430\u0431\u043e\u0440 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439 (dim_*).\u00bb (\u0441\u043c. \u0420\u0438\u0441.11)<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8cb\/43d\/5a6\/8cb43d5a6a28c4d597ecc428419c6e63.png\" alt=\"\u0420\u0438\u0441.11. \u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u044d\u0448\u043b\u0435\u0442\u0430. \u0412\u044b\u0431\u043e\u0440 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430  \" title=\"\u0420\u0438\u0441.11. \u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u044d\u0448\u043b\u0435\u0442\u0430. \u0412\u044b\u0431\u043e\u0440 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430  \" width=\"1600\" height=\"850\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/8cb\/43d\/5a6\/8cb43d5a6a28c4d597ecc428419c6e63.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8cb\/43d\/5a6\/8cb43d5a6a28c4d597ecc428419c6e63.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441.11. \u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u044d\u0448\u043b\u0435\u0442\u0430. \u0412\u044b\u0431\u043e\u0440 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430  <\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0440\u0430 \u0432\u044b\u0431\u0440\u0430\u0442\u044c, \u0430 \u0447\u0442\u043e \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0432\u0438\u0434\u0435\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043d\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u0435, \u043f\u0443\u0441\u0442\u044c \u0431\u0443\u0434\u0443\u0442 \u0421\u0443\u043c\u043c\u044b \u0432\u044b\u0440\u0443\u0447\u0435\u043a \u043f\u043e\u0441\u043b\u0435 \u0441\u043a\u0438\u0434\u043a\u0438, \u0434\u043e \u0441\u043a\u0438\u0434\u043e\u043a \u0438 \u0441\u043a\u0438\u0434\u043a\u0438 \u0432 \u0440\u0430\u0437\u0440\u0435\u0437\u0435 \u0424\u0418\u041e\/ \u043f\u043e\u043b\u043d\u043e\u0435 \u0438\u043c\u044f . (\u0441\u043c. \u0420\u0438\u0441.12 \u0438 13)  <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/833\/829\/3af\/8338293af33710925d7cfa2ad5d284c8.png\" alt=\"\u0420\u0438\u0441.12. \u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u044d\u0448\u043b\u0435\u0442\u0430. \u0412\u044b\u0431\u043e\u0440 \u043f\u043e\u043b\u0435\u0439 \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f  \" title=\"\u0420\u0438\u0441.12. \u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u044d\u0448\u043b\u0435\u0442\u0430. \u0412\u044b\u0431\u043e\u0440 \u043f\u043e\u043b\u0435\u0439 \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f  \" width=\"1600\" height=\"850\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/833\/829\/3af\/8338293af33710925d7cfa2ad5d284c8.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/833\/829\/3af\/8338293af33710925d7cfa2ad5d284c8.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441.12. \u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u044d\u0448\u043b\u0435\u0442\u0430. \u0412\u044b\u0431\u043e\u0440 \u043f\u043e\u043b\u0435\u0439 \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f  <\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ef3\/173\/6c5\/ef31736c50392d20bb3da191375d3373.png\" alt=\"\u0420\u0438\u0441.13. \u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u044d\u0448\u043b\u0435\u0442\u0430. \u0412\u044b\u0431\u043e\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u0438  \" title=\"\u0420\u0438\u0441.13. \u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u044d\u0448\u043b\u0435\u0442\u0430. \u0412\u044b\u0431\u043e\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u0438  \" width=\"1600\" height=\"850\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/ef3\/173\/6c5\/ef31736c50392d20bb3da191375d3373.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ef3\/173\/6c5\/ef31736c50392d20bb3da191375d3373.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441.13. \u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u044d\u0448\u043b\u0435\u0442\u0430. \u0412\u044b\u0431\u043e\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u0438  <\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0441\u0442\u0440\u043e\u0438\u043c \u0431\u044b\u0441\u0442\u0440\u0435\u043d\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0437\u0430 \u0434\u0440\u0443\u0433\u0438\u043c \u0434\u044d\u0448\u043b\u0435\u0442\u044b \u0438 \u043d\u0430\u0441\u043b\u0430\u0436\u0434\u0430\u0435\u043c\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u043d\u0430 \u0420\u0438\u0441.14.  <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/252\/54b\/e0f\/25254be0f53791f1845b50c0ad8d15d7.png\" alt=\"\u0420\u0438\u0441.14. \u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0434\u044d\u0448\u0431\u043e\u0440\u0434 \u0441 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\u043c\u0438  \" title=\"\u0420\u0438\u0441.14. \u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0434\u044d\u0448\u0431\u043e\u0440\u0434 \u0441 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\u043c\u0438  \" width=\"1600\" height=\"855\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/252\/54b\/e0f\/25254be0f53791f1845b50c0ad8d15d7.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/252\/54b\/e0f\/25254be0f53791f1845b50c0ad8d15d7.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441.14. \u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0434\u044d\u0448\u0431\u043e\u0440\u0434 \u0441 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\u043c\u0438  <\/figcaption><\/div>\n<\/figure>\n<h2>\u0412\u044b\u0432\u043e\u0434\u044b  <\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043e \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430\u0445, \u043f\u043e \u043d\u0430\u0447\u0430\u043b\u0443 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0438\u0445 \u043d\u0435\u043c\u043d\u043e\u0433\u043e, \u043d\u043e \u043e\u043d\u0438 \u043e\u0449\u0443\u0442\u0438\u043c\u044b \u0438 \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0438\u0432\u0430\u044e\u0442 \u0432 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u043a\u043b\u044e\u0447\u0435. \u041f\u043e\u044f\u0441\u043d\u044e.<\/p>\n<p>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0441\u0442\u0430\u043b\u043e \u043b\u0435\u0433\u0447\u0435 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0432\u0430\u0448\u0435\u0439 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438: \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0435 \u043d\u0430\u0434\u043e \u0434\u0435\u043b\u0430\u0442\u044c 10 \u043a\u0443\u0431\u043e\u0432 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u044b\u0445 \u0438\u0437 10 \u0434\u044d\u0448\u043b\u0435\u0442\u043e\u0432 \u0438\u043b\u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0442\u044f\u0436\u0451\u043b\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0438 \u0438\u0437 \u043d\u0435\u0433\u043e \u0442\u0430\u0449\u0438\u0442\u044c \u043f\u043e\u043b\u044f \u0434\u043b\u044f 10 \u0434\u044d\u0448\u043b\u0435\u0442\u043e\u0432. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u043c\u043e\u0434\u0435\u043b\u044c \u0438\u0437 10 \u0442\u0430\u0431\u043b\u0438\u0446, \u043e\u0444\u043e\u0440\u043c\u0438\u0442\u044c \u0435\u0451 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c \u0434\u043b\u044f \u043b\u044e\u0434\u0435\u0439 \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043e \u0432\u0441\u0435\u0445 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\u0445. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0434\u0443\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u0438 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u0441\u0432\u044f\u0437\u0435\u0439 \u043f\u043e\u0434 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438 \u0432\u0430\u0448\u0435\u0439 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<p>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c\u0441\u044f, \u0438\u0437 \u043a\u0430\u043a\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432\u0437\u044f\u0442\u044c \u043e\u0434\u043d\u043e \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0435 \u043f\u043e\u043b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431 \u043e\u0434\u043d\u043e\u043c \u0438 \u0442\u043e\u043c \u0436\u0435. \u0410 \u044d\u0442\u043e \u043d\u0435\u0441\u043e\u043c\u043d\u0435\u043d\u043d\u043e \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0434\u044d\u0448\u0431\u043e\u0440\u0434\u043e\u0432.<\/p>\n<p>\u0414\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0444\u0430\u043a\u0442\u043e\u0432 \u0438 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0438 \u0434\u043b\u044f \u043d\u0435\u0451. \u0410\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0445\u0435\u043c\u044b \u201c\u0417\u0432\u0435\u0437\u0434\u0430\u201d \u0438 \u201c\u0441\u043d\u0435\u0436\u0438\u043d\u043a\u0430\u201d.\u00a0<\/p>\n<p>\u0410 \u0434\u043b\u044f \u0433\u0440\u0430\u043c\u043e\u0442\u043d\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u0432 \u0431\u0430\u0437\u0435, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0443\u0436\u043d\u044b \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u0434\u0430\u0442\u0430-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u044b =)<\/p>\n<p>\u0423\u0441\u043f\u0435\u0445\u043e\u0432 \u0432\u0430\u043c \u0438 \u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043a\u0430\u043a \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u0435\u0448\u0430\u044e\u0442 \u0437\u0430\u0434\u0430\u0447\u0438 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438\u043b\u0438 \u0435\u0441\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043f\u043e Luxms BI &#8212; \u0437\u0430\u0445\u043e\u0434\u0438\u0442\u0435 \u0432 <a href=\"https:\/\/t.me\/luxms_community\" rel=\"noopener noreferrer nofollow\">\u043d\u0430\u0448\u0435 \u043a\u043e\u043c\u044c\u044e\u043d\u0438\u0442\u0438 \u0432 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u0435<\/a>, \u0442\u0430\u043c \u043e\u0431\u0449\u0430\u0435\u043c\u0441\u044f, \u0434\u0435\u043b\u0438\u043c\u0441\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u0438\u0437\u043e\u0439 \u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u043c \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443 =)<\/p>\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\/937508\/\"> https:\/\/habr.com\/ru\/articles\/937508\/<\/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 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430, \u0433\u0434\u0435 BI-\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0436\u0435\u0441\u0442\u043a\u043e \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u0442 \u0441\u0432\u044f\u0437\u0438, \u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u043c\u043e\u0434\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0430\u043c\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438 \u0441\u0432\u044f\u0437\u0438 \u043d\u0443\u0436\u043d\u044b \u043f\u043e\u0434 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0434\u044d\u0448\u043b\u0435\u0442, \u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u00ab\u043d\u0430 \u043b\u0435\u0442\u0443\u00bb. \u042d\u0442\u043e \u043d\u0430\u0448\u0430 \u043d\u043e\u0432\u0430\u044f \u0410\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445 Luxms BI (\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u043c\u043e\u0434\u0435\u043b\u0438, \u043a\u0430\u043a \u043e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u043a\u0430\u043a\u0438\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0434\u0430\u0435\u0442 <a href=\"https:\/\/habr.com\/ru\/companies\/luxms_bi\/articles\/937490\/\" rel=\"noopener noreferrer nofollow\">\u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>). \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442:<\/p>\n<ul>\n<li>\n<p>\u0411\u0435\u0437 \u043b\u0438\u0448\u043d\u0438\u0445 JOIN\u2019\u043e\u0432 \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0440\u043e\u0432\u043d\u043e \u043f\u043e\u0434 \u0437\u0430\u043f\u0440\u043e\u0441 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0415\u0449\u0435 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u2014 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0430 \u0431\u0430\u0437\u0443, \u043c\u0435\u043d\u044c\u0448\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439, \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c \u043f\u0440\u0438 \u0440\u043e\u0441\u0442\u0435 \u043e\u0431\u044a\u0435\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<\/li>\n<li>\n<p>Self-service \u2014 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c, \u0432 \u043a\u0430\u043a\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043d\u0443\u0436\u043d\u043e\u0435 \u043f\u043e\u043b\u0435, \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0430\u043c\u0430 \u043d\u0430\u0439\u0434\u0451\u0442 \u0438 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0442 \u0435\u0433\u043e.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u0431\u044b\u043b \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0441\u0438\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u043e\u0440\u043e\u043d Qlik, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043c\u0435\u043b \u00ab\u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c\u00bb \u0441\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u0440\u043e\u0437\u043d\u0435\u043d\u043d\u044b\u043c\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438. \u041c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u0442\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435 &#8212; \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0432\u044f\u0437\u0438, \u0443\u043c\u043d\u0443\u044e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u043e\u0434 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0433\u0438\u0431\u043a\u0438\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u044b. \u041f\u0440\u0438\u0447\u0451\u043c, \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u0440\u0435\u0434\u0438 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0445 BI-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u043c\u044b \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435, \u043a\u0442\u043e \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b \u043f\u043e-\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c\u0443.<\/p>\n<p>\u042f, \u041d\u0438\u043a\u043e\u043b\u0430\u0439 \u041f\u0430\u0432\u043b\u043e\u0432, \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u043f\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u0438 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c, \u043a\u0430\u043a \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430: \u043f\u043e\u0434\u043d\u0438\u043c\u0435\u043c ClickHouse \u0432 Docker, \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u0445\u0435\u043c\u0443 \u00ab\u0441\u043d\u0435\u0436\u0438\u043d\u043a\u0430\u00bb \u0441 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u0441\u043e\u0431\u0435\u0440\u0451\u043c \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043c \u0434\u044d\u0448\u0431\u043e\u0440\u0434 \u0441 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u043c\u0438 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430.<\/p>\n<h2>\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u0435\u0439\u0441\u0430  <\/h2>\n<p><strong>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0441\u0440\u0435\u0434\u044b  <\/strong><\/p>\n<ul>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Luxms BI, \u0432 \u043c\u043e\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u0435\u0440\u0441\u0438\u0438:\u00a0<\/p>\n<ul>\n<li>\n<p>luxmsbi-web \u2014 11.1.19<\/p>\n<\/li>\n<li>\n<p>luxmsbi-pg \u2014 11.1.3<\/p>\n<\/li>\n<li>\n<p>luxmsbi-appserver-mono \u2014 11.1.7<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c ClickHouse \u0432 Docker \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445  <\/strong><\/p>\n<ul>\n<li>\n<p>\u0412\u043d\u0443\u0442\u0440\u0438 ClickHouse \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0441\u0445\u0435\u043c\u0443 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0442\u0438\u043f\u0443 \u00ab\u0441\u043d\u0435\u0436\u0438\u043d\u043a\u0430\u00bb \u2014 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439.<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 (\u0434\u043e 30 \u0441\u0442\u0440\u043e\u043a \u0432 \u043a\u0430\u0436\u0434\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443).<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0431\u044a\u0451\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043a\u0435\u0439\u0441\u0435 \u043d\u0435 \u0432\u0430\u0436\u043d\u044b \u2014 \u0430\u043a\u0446\u0435\u043d\u0442 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<p><strong>\u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438  <\/strong><\/p>\n<ul>\n<li>\n<p>\u0412 Luxms BI \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u0432\u0441\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044f \u0441\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438.  <\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439  <\/strong><\/p>\n<ul>\n<li>\n<p>\u0420\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0434\u044d\u0448\u0431\u043e\u0440\u0434\u044b \u0441 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0435\u0442\u0440\u0438\u043a \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430.  <\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0410\u043d\u0430\u043b\u0438\u0437 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432  <\/strong><\/p>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0432\u043e\u0434\u0438\u043c \u043e\u0446\u0435\u043d\u043a\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u0438 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u043c \u0432\u044b\u0432\u043e\u0434\u044b \u043f\u043e \u043a\u0435\u0439\u0441\u0443.  <\/p>\n<\/li>\n<\/ul>\n<h2>\u0418\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0432 Clickhouse  <\/h2>\n<p>\u0412\u043d\u0443\u0442\u0440\u0438 clickhouse, \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445, \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438 \u0437\u0430\u043b\u044c\u0451\u043c \u0442\u0443\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0435. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 clickhouse \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0438\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 dbeaver.  <\/p>\n<p>\u0412\u0441\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0434\u0432\u0438\u0436\u043e\u043a MergeTree.<\/p>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043c\u0430\u0433\u0430\u0437\u0438\u043d: \u0444\u0430\u043a\u0442\u044b \u043f\u0440\u043e\u0434\u0430\u0436 (fact_sales) + \u043d\u0430\u0431\u043e\u0440 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439 (dim_*):<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<p>&#8212;\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445<\/p>\n<p>CREATE database adaptive_m;<\/p>\n<p>\u00a0<\/p>\n<p>&#8212; 1. \u041a\u043e\u0440\u043d\u0435\u0432\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0434\u0430\u0442<\/p>\n<p>CREATE TABLE IF NOT EXISTS dim_date<\/p>\n<p>(<\/p>\n<p>date_key \u00a0 UInt32,\u00a0 <em>&#8212; \u043a\u043b\u044e\u0447 \u0434\u0430\u0442\u044b (YYYYMMDD)<\/em><\/p>\n<p>date_value Date,\u00a0 \u00a0 <em>&#8212; \u0441\u0430\u043c\u0430 \u0434\u0430\u0442\u0430<\/em><\/p>\n<p>year \u00a0 \u00a0 \u00a0 UInt16,\u00a0 <em>&#8212; \u0433\u043e\u0434 (2024 \u0438 \u0442.\u0434.)<\/em><\/p>\n<p>quarter\u00a0 \u00a0 UInt8, \u00a0 <em>&#8212; \u043a\u0432\u0430\u0440\u0442\u0430\u043b 1-4<\/em><\/p>\n<p>month\u00a0 \u00a0 \u00a0 UInt8, \u00a0 <em>&#8212; \u043c\u0435\u0441\u044f\u0446 1-12<\/em><\/p>\n<p>week \u00a0 \u00a0 \u00a0 UInt8, \u00a0 <em>&#8212; \u043d\u043e\u043c\u0435\u0440 \u043d\u0435\u0434\u0435\u043b\u0438 \u0432 \u0433\u043e\u0434\u0443<\/em><\/p>\n<p>day\u00a0 \u00a0 \u00a0 \u00a0 UInt8, \u00a0 <em>&#8212; \u0434\u0435\u043d\u044c \u043c\u0435\u0441\u044f\u0446\u0430 1-31<\/em><\/p>\n<p>day_of_weekUInt8, \u00a0 <em>&#8212; \u0434\u0435\u043d\u044c \u043d\u0435\u0434\u0435\u043b\u0438 1=\u043f\u043d, 7=\u0432\u0441<\/em><\/p>\n<p>is_weekend UInt8\u00a0 \u00a0 <em>&#8212; \u043f\u0440\u0438\u0437\u043d\u0430\u043a \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e (1=\u0434\u0430, 0=\u043d\u0435\u0442)<\/em><\/p>\n<p>)<\/p>\n<p>\u00a0ENGINE = MergeTree()<\/p>\n<p>\u00a0ORDER BY date_key;<\/p>\n<p>\u00a0<\/p>\n<p>&#8212; 2. \u0422\u043e\u0432\u0430\u0440\u044b<\/p>\n<p>CREATE TABLE IF NOT EXISTS dim_product<\/p>\n<p>(<\/p>\n<p>product_key\u00a0 UInt32,\u00a0 \u00a0 <em>&#8212; \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043b\u044e\u0447 \u0442\u043e\u0432\u0430\u0440\u0430<\/em><\/p>\n<p>product_id \u00a0 UInt32,\u00a0 \u00a0 <em>&#8212; \u0431\u0438\u0437\u043d\u0435\u0441-ID \u0442\u043e\u0432\u0430\u0440\u0430<\/em><\/p>\n<p>product_name String,\u00a0 \u00a0 <em>&#8212; \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u0432\u0430\u0440\u0430<\/em><\/p>\n<p>category_key UInt32,\u00a0 \u00a0 <em>&#8212; \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044e (FK \u2192 dim_category)<\/em><\/p>\n<p>brand_keyUInt32,\u00a0 \u00a0 <em>&#8212; \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0431\u0440\u0435\u043d\u0434 (FK \u2192 dim_brand)<\/em><\/p>\n<p>unit_price \u00a0 Decimal(10,2)\u00a0 <em>&#8212; \u0431\u0430\u0437\u043e\u0432\u0430\u044f \u0446\u0435\u043d\u0430 \u0442\u043e\u0432\u0430\u0440\u0430<\/em><\/p>\n<p>)<\/p>\n<p>\u00a0ENGINE = MergeTree()<\/p>\n<p>\u00a0ORDER BY product_key;<\/p>\n<p>\u00a0<\/p>\n<p>&#8212; 3. \u041a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438<\/p>\n<p>CREATE TABLE IF NOT EXISTS dim_category<\/p>\n<p>(<\/p>\n<p>category_key\u00a0 \u00a0 UInt32, <em>&#8212; \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043b\u044e\u0447 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438<\/em><\/p>\n<p>category_id \u00a0 \u00a0 UInt32, <em>&#8212; \u0431\u0438\u0437\u043d\u0435\u0441-ID \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438<\/em><\/p>\n<p>category_name \u00a0 String, <em>&#8212; \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 \u0442\u043e\u0432\u0430\u0440\u0430<\/em><\/p>\n<p>parent_category_key UInt32\u00a0 <em>&#8212; \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0443\u044e \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044e (0 \u0435\u0441\u043b\u0438 \u043a\u043e\u0440\u0435\u043d\u044c)<\/em><\/p>\n<p>)<\/p>\n<p>\u00a0ENGINE = MergeTree()<\/p>\n<p>\u00a0ORDER BY category_key;<\/p>\n<p>\u00a0<\/p>\n<p>&#8212; 4. \u0411\u0440\u0435\u043d\u0434\u044b<\/p>\n<p>CREATE TABLE IF NOT EXISTS dim_brand<\/p>\n<p>(<\/p>\n<p>brand_key \u00a0 UInt32, \u00a0 \u00a0 <em>&#8212; \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043b\u044e\u0447 \u0431\u0440\u0435\u043d\u0434\u0430<\/em><\/p>\n<p>brand_idUInt32, \u00a0 \u00a0 <em>&#8212; \u0431\u0438\u0437\u043d\u0435\u0441-ID \u0431\u0440\u0435\u043d\u0434\u0430<\/em><\/p>\n<p>brand_name\u00a0 String, \u00a0 \u00a0 <em>&#8212; \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0431\u0440\u0435\u043d\u0434\u0430<\/em><\/p>\n<p>country_key UInt32\u00a0 \u00a0 \u00a0 <em>&#8212; \u0441\u0442\u0440\u0430\u043d\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0431\u0440\u0435\u043d\u0434\u0430 (FK \u2192 dim_country)<\/em><\/p>\n<p>)<\/p>\n<p>\u00a0ENGINE = MergeTree()<\/p>\n<p>\u00a0ORDER BY brand_key;<\/p>\n<p>\u00a0<\/p>\n<p>&#8212; 5. \u0421\u0442\u0440\u0430\u043d\u044b<\/p>\n<p>CREATE TABLE IF NOT EXISTS dim_country<\/p>\n<p>(<\/p>\n<p>country_key\u00a0 UInt32,\u00a0 \u00a0 <em>&#8212; \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043b\u044e\u0447 \u0441\u0442\u0440\u0430\u043d\u044b<\/em><\/p>\n<p>country_code FixedString(2),<em>&#8212; \u0434\u0432\u0443\u0445\u0431\u0443\u043a\u0432\u0435\u043d\u043d\u044b\u0439 ISO-\u043a\u043e\u0434<\/em><\/p>\n<p>country_name String \u00a0 \u00a0 <em>&#8212; \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u044b<\/em><\/p>\n<p>)<\/p>\n<p>\u00a0ENGINE = MergeTree()<\/p>\n<p>\u00a0ORDER BY country_key;<\/p>\n<p>\u00a0<\/p>\n<p>&#8212; 6. \u041f\u043e\u043a\u0443\u043f\u0430\u0442\u0435\u043b\u0438<\/p>\n<p>CREATE TABLE IF NOT EXISTS dim_customer<\/p>\n<p>(<\/p>\n<p>customer_key\u00a0 UInt32, \u00a0 <em>&#8212; \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043b\u044e\u0447 \u043a\u043b\u0438\u0435\u043d\u0442\u0430<\/em><\/p>\n<p>customer_id \u00a0 UInt32, \u00a0 <em>&#8212; \u0431\u0438\u0437\u043d\u0435\u0441-ID \u043a\u043b\u0438\u0435\u043d\u0442\u0430<\/em><\/p>\n<p>full_name \u00a0 \u00a0 String, \u00a0 <em>&#8212; \u0424\u0418\u041e \/ \u043f\u043e\u043b\u043d\u043e\u0435 \u0438\u043c\u044f<\/em><\/p>\n<p>email \u00a0 \u00a0 \u00a0 \u00a0 String, \u00a0 <em>&#8212; \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430\u044f \u043f\u043e\u0447\u0442\u0430<\/em><\/p>\n<p>city_key\u00a0 \u00a0 \u00a0 UInt32, \u00a0 <em>&#8212; \u0433\u043e\u0440\u043e\u0434 \u043f\u0440\u043e\u0436\u0438\u0432\u0430\u043d\u0438\u044f (FK \u2192 dim_city)<\/em><\/p>\n<p>registration_date Date\u00a0 <em>&#8212; \u0434\u0430\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0432 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0435<\/em><\/p>\n<p>)<\/p>\n<p>\u00a0ENGINE = MergeTree()<\/p>\n<p>\u00a0ORDER BY customer_key;<\/p>\n<p>\u00a0<\/p>\n<p>&#8212; 7. \u0413\u043e\u0440\u043e\u0434\u0430<\/p>\n<p>CREATE TABLE IF NOT EXISTS dim_city<\/p>\n<p>(<\/p>\n<p>city_keyUInt32, \u00a0 \u00a0 <em>&#8212; \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043b\u044e\u0447 \u0433\u043e\u0440\u043e\u0434\u0430<\/em><\/p>\n<p>city_id UInt32, \u00a0 \u00a0 <em>&#8212; \u0431\u0438\u0437\u043d\u0435\u0441-ID \u0433\u043e\u0440\u043e\u0434\u0430<\/em><\/p>\n<p>city_name \u00a0 String, \u00a0 \u00a0 <em>&#8212; \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0433\u043e\u0440\u043e\u0434\u0430<\/em><\/p>\n<p>country_key UInt32\u00a0 \u00a0 \u00a0 <em>&#8212; \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 dim_country<\/em><\/p>\n<p>)<\/p>\n<p>\u00a0ENGINE = MergeTree()<\/p>\n<p>\u00a0ORDER BY city_key;<\/p>\n<p>&#8212; 8. \u0421\u043a\u043b\u0430\u0434\u044b<\/p>\n<p>CREATE TABLE IF NOT EXISTS dim_warehouse<\/p>\n<p>(<\/p>\n<p>warehouse_key \u00a0 UInt32, <em>&#8212; \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043b\u044e\u0447 \u0441\u043a\u043b\u0430\u0434\u0430<\/em><\/p>\n<p>warehouse_idUInt32, <em>&#8212; \u0431\u0438\u0437\u043d\u0435\u0441-ID \u0441\u043a\u043b\u0430\u0434\u0430<\/em><\/p>\n<p>warehouse_name\u00a0 String, <em>&#8212; \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u043a\u043b\u0430\u0434\u0430<\/em><\/p>\n<p>city_key\u00a0 \u00a0 UInt32\u00a0 <em>&#8212; \u0433\u043e\u0440\u043e\u0434 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f (FK \u2192 dim_city)<\/em><\/p>\n<p>)<\/p>\n<p>\u00a0ENGINE = MergeTree()<\/p>\n<p>\u00a0ORDER BY warehouse_key;<\/p>\n<p>\u00a0<\/p>\n<p>&#8212; 9. \u041f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0438<\/p>\n<p>CREATE TABLE IF NOT EXISTS dim_supplier<\/p>\n<p>(<\/p>\n<p>supplier_key \u00a0 UInt32, <em>&#8212; \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043b\u044e\u0447 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0430<\/em><\/p>\n<p>supplier_idUInt32, <em>&#8212; \u0431\u0438\u0437\u043d\u0435\u0441-ID \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0430<\/em><\/p>\n<p>supplier_name\u00a0 String, <em>&#8212; \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0430<\/em><\/p>\n<p>city_key \u00a0 UInt32\u00a0 <em>&#8212; \u0433\u043e\u0440\u043e\u0434 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f (FK \u2192 dim_city)<\/em><\/p>\n<p>)<\/p>\n<p>\u00a0ENGINE = MergeTree()<\/p>\n<p>\u00a0ORDER BY supplier_key;<\/p>\n<p>\u00a0<\/p>\n<p>&#8212; 10. \u0424\u0430\u043a\u0442 \u043f\u0440\u043e\u0434\u0430\u0436<\/p>\n<p>CREATE TABLE IF NOT EXISTS fact_sales<\/p>\n<p>(<\/p>\n<p>sale_key \u00a0 UInt64,\u00a0 <em>&#8212; \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u043f\u0440\u043e\u0434\u0430\u0436\u0438<\/em><\/p>\n<p>date_key \u00a0 UInt32,\u00a0 <em>&#8212; \u0434\u0435\u043d\u044c \u043f\u0440\u043e\u0434\u0430\u0436\u0438 (FK \u2192 dim_date)<\/em><\/p>\n<p>product_keyUInt32,\u00a0 <em>&#8212; \u0442\u043e\u0432\u0430\u0440 (FK \u2192 dim_product)<\/em><\/p>\n<p>customer_key \u00a0 UInt32,\u00a0 <em>&#8212; \u043f\u043e\u043a\u0443\u043f\u0430\u0442\u0435\u043b\u044c (FK \u2192 dim_customer)<\/em><\/p>\n<p>warehouse_key\u00a0 UInt32,\u00a0 <em>&#8212; \u0441\u043a\u043b\u0430\u0434 \u043e\u0442\u0433\u0440\u0443\u0437\u043a\u0438 (FK \u2192 dim_warehouse)<\/em><\/p>\n<p>supplier_key \u00a0 UInt32,\u00a0 <em>&#8212; \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a (FK \u2192 dim_supplier)<\/em><\/p>\n<p>quantity \u00a0 UInt32,\u00a0 <em>&#8212; \u043f\u0440\u043e\u0434\u0430\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e<\/em><\/p>\n<p>gross_amount \u00a0 Decimal(12,2),<em>&#8212; \u0432\u044b\u0440\u0443\u0447\u043a\u0430 \u0434\u043e \u0441\u043a\u0438\u0434\u043e\u043a<\/em><\/p>\n<p>discount_amount Decimal(12,2),<em>&#8212; \u0441\u0443\u043c\u043c\u0430 \u0441\u043a\u0438\u0434\u043a\u0438<\/em><\/p>\n<p>net_amount Decimal(12,2) <em>&#8212; \u0432\u044b\u0440\u0443\u0447\u043a\u0430 \u043f\u043e\u0441\u043b\u0435 \u0441\u043a\u0438\u0434\u043e\u043a<\/em><\/p>\n<p>)<\/p>\n<p>\u00a0ENGINE = MergeTree()<\/p>\n<p>\u00a0ORDER BY (date_key, product_key, customer_key);<\/p>\n<\/div>\n<\/details>\n<p>\u0417\u0430\u043b\u0438\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. \u0414\u0430\u043d\u043d\u044b\u0445 \u043d\u0435\u043c\u043d\u043e\u0433\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u044b INSERT INTO \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<p>&#8212;dim_date<\/p>\n<p>INSERT INTO dim_date<\/p>\n<p>(date_key, date_value, year, quarter, month, week, day, day_of_week, is_weekend)<\/p>\n<p>VALUES<\/p>\n<p>(20240101,&#8217;2024-01-01&#8242;,2024,1,1,1,1,1,1),<\/p>\n<p>(20240102,&#8217;2024-01-02&#8242;,2024,1,1,1,2,2,0),<\/p>\n<p>(20240103,&#8217;2024-01-03&#8242;,2024,1,1,1,3,3,0),<\/p>\n<p>(20240104,&#8217;2024-01-04&#8242;,2024,1,1,1,4,4,0),<\/p>\n<p>(20240105,&#8217;2024-01-05&#8242;,2024,1,1,1,5,5,0),<\/p>\n<p>(20240106,&#8217;2024-01-06&#8242;,2024,1,1,1,6,6,1),<\/p>\n<p>(20240107,&#8217;2024-01-07&#8242;,2024,1,1,1,7,7,1),<\/p>\n<p>(20240108,&#8217;2024-01-08&#8242;,2024,1,1,2,8,1,0),<\/p>\n<p>(20240109,&#8217;2024-01-09&#8242;,2024,1,1,2,9,2,0),<\/p>\n<p>(20240110,&#8217;2024-01-10&#8242;,2024,1,1,2,10,3,0),<\/p>\n<p>(20240111,&#8217;2024-01-11&#8242;,2024,1,1,2,11,4,0),<\/p>\n<p>(20240112,&#8217;2024-01-12&#8242;,2024,1,1,2,12,5,0),<\/p>\n<p>(20240113,&#8217;2024-01-13&#8242;,2024,1,1,2,13,6,1),<\/p>\n<p>(20240114,&#8217;2024-01-14&#8242;,2024,1,1,2,14,7,1),<\/p>\n<p>(20240115,&#8217;2024-01-15&#8242;,2024,1,1,3,15,1,0),<\/p>\n<p>(20240116,&#8217;2024-01-16&#8242;,2024,1,1,3,16,2,0),<\/p>\n<p>(20240117,&#8217;2024-01-17&#8242;,2024,1,1,3,17,3,0),<\/p>\n<p>(20240118,&#8217;2024-01-18&#8242;,2024,1,1,3,18,4,0),<\/p>\n<p>(20240119,&#8217;2024-01-19&#8242;,2024,1,1,3,19,5,0),<\/p>\n<p>(20240120,&#8217;2024-01-20&#8242;,2024,1,1,3,20,6,1),<\/p>\n<p>(20240121,&#8217;2024-01-21&#8242;,2024,1,1,3,21,7,1),<\/p>\n<p>(20240122,&#8217;2024-01-22&#8242;,2024,1,1,4,22,1,0),<\/p>\n<p>(20240123,&#8217;2024-01-23&#8242;,2024,1,1,4,23,2,0),<\/p>\n<p>(20240124,&#8217;2024-01-24&#8242;,2024,1,1,4,24,3,0),<\/p>\n<p>(20240125,&#8217;2024-01-25&#8242;,2024,1,1,4,25,4,0),<\/p>\n<p>(20240126,&#8217;2024-01-26&#8242;,2024,1,1,4,26,5,0),<\/p>\n<p>(20240127,&#8217;2024-01-27&#8242;,2024,1,1,4,27,6,1),<\/p>\n<p>(20240128,&#8217;2024-01-28&#8242;,2024,1,1,4,28,7,1),<\/p>\n<p>(20240129,&#8217;2024-01-29&#8242;,2024,1,1,5,29,1,0),<\/p>\n<p>(20240130,&#8217;2024-01-30&#8242;,2024,1,1,5,30,2,0);<\/p>\n<p>\u00a0<\/p>\n<p>&#8212;dim_country<\/p>\n<p>INSERT INTO dim_country<\/p>\n<p>(country_key, country_code, country_name)<\/p>\n<p>VALUES<\/p>\n<p>(1,&#8217;US&#8217;,&#8217;United States&#8217;),<\/p>\n<p>(2,&#8217;DE&#8217;,&#8217;Germany&#8217;),<\/p>\n<p>(3,&#8217;CN&#8217;,&#8217;China&#8217;),<\/p>\n<p>(4,&#8217;RU&#8217;,&#8217;Russia&#8217;),<\/p>\n<p>(5,&#8217;FR&#8217;,&#8217;France&#8217;),<\/p>\n<p>(6,&#8217;JP&#8217;,&#8217;Japan&#8217;),<\/p>\n<p>(7,&#8217;IN&#8217;,&#8217;India&#8217;),<\/p>\n<p>(8,&#8217;BR&#8217;,&#8217;Brazil&#8217;),<\/p>\n<p>(9,&#8217;CA&#8217;,&#8217;Canada&#8217;),<\/p>\n<p>(10,&#8217;MX&#8217;,&#8217;Mexico&#8217;),<\/p>\n<p>(11,&#8217;IT&#8217;,&#8217;Italy&#8217;),<\/p>\n<p>(12,&#8217;ES&#8217;,&#8217;Spain&#8217;),<\/p>\n<p>(13,&#8217;KR&#8217;,&#8217;South Korea&#8217;),<\/p>\n<p>(14,&#8217;NL&#8217;,&#8217;Netherlands&#8217;),<\/p>\n<p>(15,&#8217;SE&#8217;,&#8217;Sweden&#8217;),<\/p>\n<p>(16,&#8217;AU&#8217;,&#8217;Australia&#8217;),<\/p>\n<p>(17,&#8217;CH&#8217;,&#8217;Switzerland&#8217;),<\/p>\n<p>(18,&#8217;AT&#8217;,&#8217;Austria&#8217;),<\/p>\n<p>(19,&#8217;BE&#8217;,&#8217;Belgium&#8217;),<\/p>\n<p>(20,&#8217;DK&#8217;,&#8217;Denmark&#8217;),<\/p>\n<p>(21,&#8217;NO&#8217;,&#8217;Norway&#8217;),<\/p>\n<p>(22,&#8217;FI&#8217;,&#8217;Finland&#8217;),<\/p>\n<p>(23,&#8217;PL&#8217;,&#8217;Poland&#8217;),<\/p>\n<p>(24,&#8217;CZ&#8217;,&#8217;Czechia&#8217;),<\/p>\n<p>(25,&#8217;TR&#8217;,&#8217;Turkey&#8217;),<\/p>\n<p>(26,&#8217;ZA&#8217;,&#8217;South Africa&#8217;),<\/p>\n<p>(27,&#8217;SG&#8217;,&#8217;Singapore&#8217;),<\/p>\n<p>(28,&#8217;MY&#8217;,&#8217;Malaysia&#8217;),<\/p>\n<p>(29,&#8217;TH&#8217;,&#8217;Thailand&#8217;),<\/p>\n<p>(30,&#8217;VN&#8217;,&#8217;Vietnam&#8217;);<\/p>\n<p>\u00a0<\/p>\n<p>&#8212;dim_city<\/p>\n<p>INSERT INTO dim_city<\/p>\n<p>(city_key, city_id, city_name, country_key)<\/p>\n<p>VALUES<\/p>\n<p>(1,101,&#8217;New York&#8217;,1),<\/p>\n<p>(2,102,&#8217;Los Angeles&#8217;,1),<\/p>\n<p>(3,103,&#8217;Chicago&#8217;,1),<\/p>\n<p>(4,104,&#8217;Berlin&#8217;,2),<\/p>\n<p>(5,105,&#8217;Munich&#8217;,2),<\/p>\n<p>(6,106,&#8217;Hamburg&#8217;,2),<\/p>\n<p>(7,107,&#8217;Shanghai&#8217;,3),<\/p>\n<p>(8,108,&#8217;Beijing&#8217;,3),<\/p>\n<p>(9,109,&#8217;Shenzhen&#8217;,3),<\/p>\n<p>(10,110,&#8217;Moscow&#8217;,4),<\/p>\n<p>(11,111,&#8217;St Petersburg&#8217;,4),<\/p>\n<p>(12,112,&#8217;Paris&#8217;,5),<\/p>\n<p>(13,113,&#8217;Lyon&#8217;,5),<\/p>\n<p>(14,114,&#8217;Tokyo&#8217;,6),<\/p>\n<p>(15,115,&#8217;Osaka&#8217;,6),<\/p>\n<p>(16,116,&#8217;Delhi&#8217;,7),<\/p>\n<p>(17,117,&#8217;Mumbai&#8217;,7),<\/p>\n<p>(18,118,&#8217;S\u00e3o Paulo&#8217;,8),<\/p>\n<p>(19,119,&#8217;Rio de Janeiro&#8217;,8),<\/p>\n<p>(20,120,&#8217;Toronto&#8217;,9),<\/p>\n<p>(21,121,&#8217;Vancouver&#8217;,9),<\/p>\n<p>(22,122,&#8217;Mexico City&#8217;,10),<\/p>\n<p>(23,123,&#8217;Milan&#8217;,11),<\/p>\n<p>(24,124,&#8217;Rome&#8217;,11),<\/p>\n<p>(25,125,&#8217;Madrid&#8217;,12),<\/p>\n<p>(26,126,&#8217;Barcelona&#8217;,12),<\/p>\n<p>(27,127,&#8217;Seoul&#8217;,13),<\/p>\n<p>(28,128,&#8217;Busan&#8217;,13),<\/p>\n<p>(29,129,&#8217;Amsterdam&#8217;,14),<\/p>\n<p>(30,130,&#8217;Stockholm&#8217;,15);<\/p>\n<p>\u00a0<\/p>\n<p>&#8212;dim_brand<\/p>\n<p>INSERT INTO dim_brand<\/p>\n<p>(brand_key, brand_id, brand_name, country_key)<\/p>\n<p>VALUES<\/p>\n<p>(1,201,&#8217;Apple&#8217;,1),<\/p>\n<p>(2,202,&#8217;Samsung&#8217;,13),<\/p>\n<p>(3,203,&#8217;BMW&#8217;,2),<\/p>\n<p>(4,204,&#8217;Xiaomi&#8217;,3),<\/p>\n<p>(5,205,&#8217;Sony&#8217;,6),<\/p>\n<p>(6,206,&#8217;LG&#8217;,13),<\/p>\n<p>(7,207,&#8217;Huawei&#8217;,3),<\/p>\n<p>(8,208,&#8217;Dell&#8217;,1),<\/p>\n<p>(9,209,&#8217;HP&#8217;,1),<\/p>\n<p>(10,210,&#8217;Tesla&#8217;,1),<\/p>\n<p>(11,211,&#8217;Mercedes-Benz&#8217;,2),<\/p>\n<p>(12,212,&#8217;Audi&#8217;,2),<\/p>\n<p>(13,213,&#8217;Nike&#8217;,1),<\/p>\n<p>(14,214,&#8217;Adidas&#8217;,2),<\/p>\n<p>(15,215,&#8217;Puma&#8217;,2),<\/p>\n<p>(16,216,&#8217;Zara&#8217;,12),<\/p>\n<p>(17,217,&#8217;H&amp;M&#8217;,15),<\/p>\n<p>(18,218,&#8217;Uniqlo&#8217;,6),<\/p>\n<p>(19,219,&#8217;Toyota&#8217;,6),<\/p>\n<p>(20,220,&#8217;Volkswagen&#8217;,2),<\/p>\n<p>(21,221,&#8217;Ford&#8217;,1),<\/p>\n<p>(22,222,&#8217;GM&#8217;,1),<\/p>\n<p>(23,223,&#8217;Hyundai&#8217;,13),<\/p>\n<p>(24,224,&#8217;Kia&#8217;,13),<\/p>\n<p>(25,225,&#8217;Nestl\u00e9&#8217;,17),<\/p>\n<p>(26,226,&#8217;Coca-Cola&#8217;,1),<\/p>\n<p>(27,227,&#8217;PepsiCo&#8217;,1),<\/p>\n<p>(28,228,&#8217;L`Oreal&#8217;,5),<\/p>\n<p>(29,229,&#8217;Colgate&#8217;,1),<\/p>\n<p>(30,230,&#8217;Heineken&#8217;,14);<\/p>\n<p>\u00a0<\/p>\n<p>&#8212;dim_category<\/p>\n<p>INSERT INTO dim_category<\/p>\n<p>(category_key, category_id, category_name, parent_category_key)<\/p>\n<p>VALUES<\/p>\n<p>(1,301,&#8217;Electronics&#8217;,0),<\/p>\n<p>(2,302,&#8217;Smartphones&#8217;,1),<\/p>\n<p>(3,303,&#8217;Laptops&#8217;,1),<\/p>\n<p>(4,304,&#8217;Automotive&#8217;,0),<\/p>\n<p>(5,305,&#8217;Electric Cars&#8217;,4),<\/p>\n<p>(6,306,&#8217;Fashion&#8217;,0),<\/p>\n<p>(7,307,&#8217;Clothing&#8217;,6),<\/p>\n<p>(8,308,&#8217;Footwear&#8217;,6),<\/p>\n<p>(9,309,&#8217;Home Appliances&#8217;,1),<\/p>\n<p>(10,310,&#8217;TVs&#8217;,1),<\/p>\n<p>(11,311,&#8217;Audio&#8217;,1),<\/p>\n<p>(12,312,&#8217;Books&#8217;,0),<\/p>\n<\/div>\n<\/details>\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-471771","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/471771","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=471771"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/471771\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=471771"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=471771"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=471771"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}