{"id":187782,"date":"2013-07-25T10:27:02","date_gmt":"2013-07-25T06:27:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=187782"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=187782","title":{"rendered":"<span class=\"post_title\">\u0417\u0430\u043f\u0443\u0441\u043a OLAP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0430 \u0431\u0430\u0437\u0435 Pentaho \u043f\u043e \u0448\u0430\u0433\u0430\u043c<\/span>"},"content":{"rendered":"<div class=\"content html_format\"> \t\t\t<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/d5d\/3f7\/08e\/d5d3f708e728c78bf8f9eafc78f3b803.jpg\" align=\"right\"\/><br \/>  \u0418\u0442\u0430\u043a, \u0434\u043e\u0440\u043e\u0433\u0438\u0435 \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435, \u0445\u043e\u0447\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0432\u0430\u0448\u0435 \u043e\u0431\u043e\u0437\u0440\u0435\u043d\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e, \u043a\u0430\u043a \u043d\u0430\u043c \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c OLAP-\u0441\u0435\u0440\u0432\u0435\u0440 \u0432 \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438. \u0428\u0430\u0433 \u0437\u0430 \u0448\u0430\u0433\u043e\u043c \u043c\u044b \u043f\u0440\u043e\u0439\u0434\u0435\u043c \u043f\u043e \u043f\u0443\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u043d\u0430\u043c\u0438 \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043d, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 Pentaho \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0435\u0439 olap-\u043a\u0443\u0431\u0430 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043c\u043d\u043e\u0433\u043e\u0435 \u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0443\u043c\u0431\u0443\u0440\u043d\u044b\u043c\/\u043d\u0435\u0442\u043e\u0447\u043d\u044b\u043c\/\u043d\u0435\u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c, \u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0441\u043c\u043e\u0436\u0435\u0442 \u043b\u0438 Pentaho \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430\u0448\u0443 \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443, \u0443 \u043d\u0430\u0441 \u043d\u0435 \u0431\u044b\u043b\u043e \u0438 \u0442\u0430\u043a\u043e\u0433\u043e\u2026<br \/>  <a name=\"habracut\"><\/a><br \/>  \u0412\u0435\u0441\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e\u0434\u043d\u044f\u0442\u0438\u044f OLAP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u044f \u0440\u0430\u0437\u0431\u0438\u043b \u043d\u0430 3 \u0447\u0430\u0441\u0442\u0438:  <\/p>\n<ul>\n<li><a href=\"#part1\">\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Pentaho BI Server<\/a><\/li>\n<li><a href=\"#part2\">\u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0442\u0430\u0431\u043b\u0438\u0446 \u0444\u0430\u043a\u0442\u043e\u0432 \u0438 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439<\/a><\/li>\n<li><a href=\"#part3\">\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043a\u0443\u0431\u0430 \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0435\u0433\u043e \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435<\/a><\/li>\n<\/ul>\n<h3><a name=\"part1\"><\/a>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Pentaho BI Server<\/h3>\n<p>  \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c <a href=\"http:\/\/www.oracle.com\/technetwork\/java\/javase\/downloads\/index.html\">JDK<\/a>.<\/p>\n<p>  \u0412\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f:  <\/p>\n<pre><code>JAVA_HOME=c:\\Program Files\\Java\\jdk1.7.0_15 JRE_HOME=c:\\Program Files\\Java\\jdk1.7.0_15\\jre PENTAHO_JAVA_HOME=c:\\Program Files\\Java\\jdk1.7.0_15 <\/code><\/pre>\n<p>  \u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0441\u0432\u0435\u0436\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Pentaho Business Intelligence (<a href=\"http:\/\/sourceforge.net\/projects\/pentaho\/files\/Business%20Intelligence%20Server\/4.8.0-stable\/\">biserver-ce-4.8.0-stable.zip<\/a>). \u042f \u0437\u0430\u043b\u0438\u043b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0430\u0440\u0445\u0438\u0432\u0430 (\u043f\u0430\u043f\u043a\u0438 <em>administration-console<\/em> \u0438 <em>biserver-ce<\/em>) \u0432 \u043f\u0430\u043f\u043a\u0443 <em>c:\\Pentaho<\/em>. \u0418\u0442\u0430\u043a, \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u2014 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u043b\u0438, \u043d\u043e \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u043e\u043a\u0430 \u0435\u0449\u0435 \u043d\u0435 \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d. \u042d\u0442\u0438\u043c \u043c\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u0438 \u0437\u0430\u0439\u043c\u0435\u043c\u0441\u044f\u2026<\/p>\n<p>  \u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c MySQL-\u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440 \u0434\u043b\u044f Java (<a href=\"http:\/\/www.mysql.com\/downloads\/connector\/j\/\">mysql-connector-java-5.1.23-bin.jar<\/a>). \u0417\u0430\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u0432 \u043f\u0430\u043f\u043a\u0443 <em>c:\\Pentaho\\biserver-ce\\tomcat\\lib<\/em>.<\/p>\n<p>  \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e Pentaho \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u0432\u0438\u0436\u043e\u043a HSQLDB, \u0442.\u0435. \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0438 \u0445\u0440\u0430\u043d\u0438\u0442 \u0432\u0441\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u0443\u044e \u0431\u0430\u0437\u0443 sampledata. \u042d\u0442\u043e \u0435\u0449\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 (\u0442\u0430\u043a\u0438\u0445, \u043a\u0430\u043a \u0434\u0435\u043c\u043e), \u043d\u043e \u0434\u043b\u044f \u0431\u043e\u0435\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\u044b\u0447\u043d\u043e \u0434\u0432\u0438\u0436\u043e\u043a \u043c\u0435\u043d\u044f\u044e\u0442 \u043d\u0430 MySQL \u0438\u043b\u0438 Oracle, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440. \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c MySQL.<\/p>\n<p>  \u0417\u0430\u043b\u0438\u0432\u0430\u0435\u043c \u0432 MySQL \u0431\u0430\u0437\u044b hibernate \u0438 quartz. \u041e\u0431\u0435 \u043e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043d\u0443\u0436\u0434\u044b Pentaho. \u041a\u0430\u0447\u0430\u0435\u043c <a href=\"https:\/\/docs.google.com\/file\/d\/0B9Jmocc0fj_EN2MyZjc4ZjEtNzFkNC00NzIzLTljZTctZjIzZWQ1NjU3MzJk\/edit?hl=en&amp;pli=1\">\u043e\u0442\u0441\u044e\u0434\u0430<\/a> \u0444\u0430\u0439\u043b\u044b <em>1_create_repository_mysql.sql<\/em> \u0438 <em>2_create_quartz_mysql.sql<\/em>. \u0418\u043c\u043f\u043e\u0440\u0442\u0438\u043c \u0438\u0445 \u0432 MySQL.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0448 MySQL-\u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u043a\u0430\u043a \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 Pentaho. \u041f\u043e\u0434\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u043c Pentaho-\u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 xml-\u043a\u0438:<\/p>\n<p>  1. <em>\\pentaho-solutions\\system\\applicationContext-spring-security-hibernate.properties<\/em><\/p>\n<p>  \u041c\u0435\u043d\u044f\u0435\u043c driver, url \u0438 dialect \u043d\u0430 <strong>com.mysql.jdbc.Driver<\/strong>, <strong>jdbc:mysql:\/\/localhost:3306\/hibernate<\/strong> \u0438 <strong>org.hibernate.dialect.MySQL5Dialect<\/strong> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.<\/p>\n<p>  2. <em>\\tomcat\\webapps\\pentaho\\META-INF\\context.xml<\/em><\/p>\n<p>  \u041c\u0435\u043d\u044f\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b driverClassName \u043d\u0430 <strong>com.mysql.jdbc.Driver<\/strong>, \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b url \u043d\u0430 <strong>jdbc:mysql:\/\/localhost:3306\/hibernate<\/strong> \u0438 <strong>jdbc:mysql:\/\/localhost:3306\/quartz<\/strong> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 2-\u0445 \u0441\u0435\u043a\u0446\u0438\u044f\u0445, \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b validationQuery \u043c\u0435\u043d\u044f\u0435\u043c \u043d\u0430 <strong>select 1<\/strong>.<\/p>\n<p>  3. <em>\\pentaho-solutions\\system\\hibernate\\hibernate-settings.xml<\/em><\/p>\n<p>  \u0412 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 &lt;config-file&gt; \u043c\u0435\u043d\u044f\u0435\u043c hsql.hibernate.cfg.xml \u043d\u0430 <strong>mysql5.hibernate.cfg.xml<\/strong>.<\/p>\n<p>  4. <em>\\pentaho-solutions\\system\\simple-jndi\\jdbc.properties<\/em><\/p>\n<p>  \u0423\u0434\u0430\u043b\u044f\u0435\u043c \u0432\u0435\u0441\u044c \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0439 \u0445\u043b\u0430\u043c \u043a\u0440\u043e\u043c\u0435 Hibernate \u0438 Quartz.<\/p>\n<p>  5. \u0421\u043d\u043e\u0441\u0438\u043c \u043f\u0430\u043f\u043a\u0438 <em>\\pentaho-solutions\\bi-developers<\/em>, <em>\\pentaho-solutions\\plugin-samples<\/em> \u0438 <em>\\pentaho-solutions\\steel-wheels<\/em>. \u042d\u0442\u043e \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442.<\/p>\n<p>  6. <em>\\tomcat\\webapps\\pentaho\\WEB-INF\\web.xml<\/em><\/p>\n<p>  \u0423\u0434\u0430\u043b\u044f\u0435\u043c \u0438\u043b\u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u043c \u0432\u0441\u0435 \u0441\u0435\u0440\u0432\u043b\u0435\u0442\u044b \u0441\u0435\u043a\u0446\u0438\u0439 <strong>[BEGIN SAMPLE SERVLETS]<\/strong> \u0438 <strong>[BEGIN SAMPLE SERVLET MAPPINGS]<\/strong>, \u043a\u0440\u043e\u043c\u0435 ThemeServlet. <\/p>\n<p>  \u0423\u0434\u0430\u043b\u044f\u0435\u043c \u0441\u0435\u043a\u0446\u0438\u0438 <strong>[BEGIN HSQLDB STARTER]<\/strong> \u0438 <strong>[BEGIN HSQLDB DATABASES]<\/strong>.<\/p>\n<p>  \u0423\u0434\u0430\u043b\u044f\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0438:  <\/p>\n<pre><code class=\"html\">&lt;filter-mapping&gt;     &lt;filter-name&gt;SystemStatusFilter&lt;\/filter-name&gt;     &lt;url-pattern&gt;\/*&lt;\/url-pattern&gt; &lt;\/filter-mapping&gt; <\/code><\/pre>\n<p>  7. \u0423\u0434\u0430\u043b\u044f\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 <em>\\data<\/em>. \u042d\u0442\u043e\u0442 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u0435\u0441\u0442\u043e\u0432\u0443\u044e \u0411\u0414, \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u044d\u0442\u043e\u0439 \u0411\u0414 \u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f Pentaho.<\/p>\n<p>  8. <em>\\pentaho-solutions\\system\\olap\\datasources.xml<\/em><\/p>\n<p>  \u0423\u0434\u0430\u043b\u044f\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u0441 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 SteelWheels \u0438 SampleData.<\/p>\n<p>  9. <em>\\pentaho-solutions\\system\\systemListeners.xml<\/em><\/p>\n<p>  \u0423\u0434\u0430\u043b\u044f\u0435\u043c \u0438\u043b\u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u043c \u0441\u0442\u0440\u043e\u043a\u0443:<\/p>\n<pre><code class=\"html\">&lt;bean id=&quot;pooledDataSourceSystemListener&quot; class=&quot;org.pentaho.platform.engine.services.connection.datasource.dbcp.PooledDatasourceSystemListener&quot; \/&gt; <\/code><\/pre>\n<p>  10. <em>\\tomcat\\webapps\\pentaho\\WEB-INF\\web.xml<\/em><\/p>\n<p>  \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043d\u0430\u0448 solution-path: <strong>c:\\Pentaho\\biserver-ce\\pentaho-solutions<\/strong>.<\/p>\n<p>  11. <em>\\system\\sessionStartupActions.xml<\/em><\/p>\n<p>  \u0417\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u043c \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u0438\u043c \u0432\u0441\u0435 \u0431\u043b\u043e\u043a\u0438 <code>&lt;bean&gt;...&lt;\/bean&gt;<\/code>.<\/p>\n<h5>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c web-\u043c\u043e\u0440\u0434\u0443 Pentaho<\/h5>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0432\u0441\u0435\u0445 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0439 \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0430\u043c\u0438, \u043c\u043e\u0436\u043d\u043e \u0443\u0436\u0435 \u0438 \u043f\u043e\u0434\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0447\u0435\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c. \u0418\u0434\u0435\u043c \u0432 \u043f\u0430\u043f\u043a\u0443 \u0441 \u043d\u0430\u0448\u0438\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c <strong>start-pentaho.bat<\/strong> \u0438\u043b\u0438 sh-\u0448\u043d\u0438\u043a, \u043a\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0432 \u0435\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435. \u041f\u043e \u0438\u0434\u0435\u0435, \u043d\u0438\u043a\u0430\u043a\u0438\u0445 ERROR\u2019\u043e\u0432 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0438\u043b\u0438 \u043b\u043e\u0433\u0430\u0445 \u0442\u043e\u043c\u043a\u0430\u0442\u0430 \u0431\u044b\u0442\u044c \u0443\u0436\u0435 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u0435\u0441\u043b\u0438 \u0432\u0441\u0435 \u043f\u0440\u043e\u0448\u043b\u043e \u0433\u043b\u0430\u0434\u043a\u043e, \u0442\u043e \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <code>http:\/\/localhost:8080<\/code> \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0441\u044f \u0444\u043e\u0440\u043c\u0430 \u0432\u0445\u043e\u0434\u0430:<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/872\/7db\/056\/8727db056a82407d059dab61ed17d98d.jpg\"\/><\/p>\n<p>  \u0412\u0432\u043e\u0434\u0438\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043b\u043e\u0433\u0438\u043d\/\u043f\u0430\u0440\u043e\u043b\u044c (<strong>joe\/password<\/strong>) \u0438 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u043c \u0432\u043d\u0443\u0442\u0440\u044c. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c olap-\u043a\u043b\u0438\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438 \u0431\u0443\u0434\u0435\u0442, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043d\u0430\u0448\u0438 \u043a \u043d\u0435\u043c\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u044b. \u0423 \u043f\u043b\u0430\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Pentaho \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0439 \u043a\u043b\u0438\u0435\u043d\u0442, \u0434\u043b\u044f CE \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d Saiku.<\/p>\n<p>  \u0417\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u043f\u0443\u043d\u043a\u0442 Pentaho Marketplace \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u043c\u0435\u043d\u044e, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c Saiku Analytics.<\/p>\n<p>  \u0422\u0443\u0442 \u043f\u043e\u043a\u0430 \u0432\u0441\u0451, \u043f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0438.<\/p>\n<h3><a name=\"part2\"><\/a>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0442\u0430\u0431\u043b\u0438\u0446 \u0444\u0430\u043a\u0442\u043e\u0432 \u0438 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439<\/h3>\n<p>  Pentaho \u2014 \u044d\u0442\u043e ROLAP-\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 OLAP, \u0442.\u0435. \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445, \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0441\u0435, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e, \u2014 \u044d\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b.<\/p>\n<p>  \u0421\u043a\u0430\u0436\u0443 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u0431\u044b\u043b\u0430 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430. \u0415\u0441\u0442\u044c \u0441\u0430\u0439\u0442, \u0435\u0441\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u044b \u0438 \u0435\u0441\u0442\u044c \u0442\u0438\u043a\u0435\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044d\u0442\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u043f\u0438\u0441\u0430\u0442\u044c. \u0415\u0449\u0435 \u0438 \u0441 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u043c\u0438, \u0434\u0430. \u0418 \u0432\u0441\u0435 \u044d\u0442\u0438 \u0442\u0438\u043a\u0435\u0442\u044b \u043d\u0430\u0448 \u0441\u0430\u043f\u043f\u043e\u0440\u0442 \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u0442 \u043f\u043e \u0440\u0430\u0437\u043d\u044b\u043c \u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430\u043c, \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c, \u0441\u0442\u0440\u0430\u043d\u0430\u043c. \u0418 \u0432\u043e\u0442 \u043d\u0430\u043c \u0431\u044b\u043b\u043e \u043d\u0443\u0436\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443\u0437\u043d\u0430\u0442\u044c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0438\u043a\u0435\u0442\u043e\u0432 \u043f\u043e \u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0435 \u00ab\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430\u00bb \u043f\u0440\u0438\u0448\u043b\u043e \u0441 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438\u0437 \u0413\u0435\u0440\u043c\u0430\u043d\u0438\u0438 \u0437\u0430 \u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u043c\u0435\u0441\u044f\u0446. \u0418 \u0432\u0441\u0435 \u044d\u0442\u043e \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u043f\u043e \u0430\u0434\u043c\u0438\u043d\u0430\u043c, \u0442.\u0435. \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u0442\u043e \u0438\u0437 \u0441\u0430\u043f\u043f\u043e\u0440\u0442\u0430 \u0438 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a\u0438\u0445 \u0442\u0438\u043a\u0435\u0442\u043e\u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0438 \u0442.\u0434. \u0438 \u0442.\u043f.<\/p>\n<p>  \u0412\u0441\u0435 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0441\u0440\u0435\u0437\u044b \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f OLAP \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c. \u041f\u0440\u043e \u0441\u0430\u043c OLAP \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0435 \u0441\u0442\u0430\u043d\u0443. \u0411\u0443\u0434\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u0447\u0442\u043e \u0441 \u043f\u043e\u043d\u044f\u0442\u0438\u044f\u043c\u0438 OLAP-\u043a\u0443\u0431\u0430, \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439 \u0438 \u043c\u0435\u0440 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u0437\u043d\u0430\u043a\u043e\u043c \u0438 \u0432 \u043e\u0431\u0449\u0438\u0445 \u0447\u0435\u0440\u0442\u0430\u0445 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u0435\u0431\u0435, \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0438 \u0441 \u0447\u0435\u043c \u044d\u0442\u043e \u0435\u0434\u044f\u0442.<\/p>\n<p>  \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443, \u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0441\u044c \u0441\u0432\u043e\u0438\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0441\u0430\u0439\u0442\u043e\u043c \u0441 \u0444\u0443\u0442\u0431\u043e\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u043e\u0439. \u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u044b \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e, \u043d\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0431\u0440\u0430\u0437\u0446\u0430 \u2014 \u0441\u0430\u043c\u043e\u0435 \u043e\u043d\u043e.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u0435\u0441\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0430 <strong>players<\/strong>. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043d\u0430\u0439\u0442\u0438 \u0432\u0441\u044f\u043a\u0443\u044e-\u0440\u0430\u0437\u043d\u0443\u044e \u043f\u043e\u043b\u0435\u0437\u043d\u0443\u044e \u0438 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443: \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0433\u0440\u043e\u043a\u043e\u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u044b, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0433\u0440\u043e\u043a\u043e\u0432 \u043f\u043e \u0430\u043c\u043f\u043b\u0443\u0430, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0438\u0433\u0440\u043e\u043a\u043e\u0432, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0445 \u043f\u043e\u043b\u0443\u0437\u0430\u0449\u0438\u0442\u043d\u0438\u043a\u043e\u0432 \u0432 \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0435 \u043e\u0442 30 \u0434\u043e 40 \u043b\u0435\u0442. \u041d\u0443 \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u0442\u0430\u043a\u043e\u0433\u043e\u2026<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043d\u0430 \u0447\u0435\u043c \u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f? \u0410, \u0442\u043e\u0447\u043d\u043e, \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0442\u0430\u0431\u043b\u0438\u0446. \u0422\u0443\u0442 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432: \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0441\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0440\u0443\u043a\u0430\u043c\u0438 \u0438 \u0433\u043e\u043b\u044b\u043c\u0438 SQL-\u043d\u0438\u043a\u0430\u043c\u0438 \u0438\u043b\u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0441\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u043e\u0439 <strong>Pentaho Data Integration<\/strong> (PDI, \u0442\u0430\u043a\u0436\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043a\u0430\u043a Kettle) \u2014 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u0430 Pentaho, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0439 \u0437\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 (ETL). \u041e\u043d\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0411\u0414 \u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0439\u043c\u044b \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u043d\u0430\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c <a href=\"http:\/\/sourceforge.net\/projects\/pentaho\/files\/Data%20Integration\/4.4.0-stable\/\">\u0435\u0451<\/a>. \u0417\u0430\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u043c mysql-\u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440 \u0432 \u043f\u0430\u043f\u043a\u0443 lib \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c PDI \u0447\u0435\u0440\u0435\u0437 <strong>Spoon.bat<\/strong>.<\/p>\n<p>  \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0431\u0435\u0440\u0435\u043c \u0441\u0435\u0440\u0434\u0446\u0435 \u043d\u0430\u0448\u0435\u0439 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u2014 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0438\u0433\u0440\u043e\u043a\u043e\u0432. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0435\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a-\u0442\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"sql\">CREATE TABLE IF NOT EXISTS `player` (   `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',   `name` varchar(40) DEFAULT NULL COMMENT '\u0418\u043c\u044f',   `patronymic` varchar(40) DEFAULT NULL COMMENT '\u041e\u0442\u0447\u0435\u0441\u0442\u0432\u043e',   `surname` varchar(40) DEFAULT NULL COMMENT '\u0424\u0430\u043c\u0438\u043b\u0438\u044f',   `full_name` varchar(255) DEFAULT NULL COMMENT '\u041f\u043e\u043b\u043d\u043e\u0435 \u0438\u043c\u044f',   `birth_date` date NOT NULL COMMENT '\u0414\u0430\u0442\u0430 \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f',   `death_date` date DEFAULT NULL COMMENT '\u0414\u0430\u0442\u0430 \u0441\u043c\u0435\u0440\u0442\u0438',   `main_country_id` int(11) unsigned NOT NULL COMMENT 'ID \u0441\u0442\u0440\u0430\u043d\u044b',   `birthplace` varchar(255) DEFAULT NULL COMMENT '\u041c\u0435\u0441\u0442\u043e \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f',   `height` tinyint(3) unsigned DEFAULT NULL COMMENT '\u0420\u043e\u0441\u0442',   `weight` tinyint(3) unsigned DEFAULT NULL COMMENT '\u0412\u0435\u0441',   `status` enum('active','inactive') NOT NULL DEFAULT 'active' COMMENT '\u0421\u0442\u0430\u0442\u0443\u0441 \u0438\u0433\u0440\u043e\u043a\u0430 - \u0438\u0433\u0440\u0430\u0435\u0442, \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b \u043a\u0430\u0440\u044c\u0435\u0440\u0443 \u0438 \u0442.\u0434.',   `has_career` enum('no','yes') NOT NULL DEFAULT 'no' COMMENT '\u0415\u0441\u0442\u044c \u043b\u0438 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u043f\u043e \u043a\u0430\u0440\u044c\u0435\u0440\u0435',   PRIMARY KEY (`id`),   KEY `name` (`name`),   KEY `surname` (`surname`),   KEY `birth_date` (`birth_date`),   KEY `death_date` (`death_date`),   KEY `has_stat` (`has_career`),   KEY `main_country_id` (`main_country_id`),   KEY `status` (`status`),   KEY `full_name_country_id` (`full_name_country_id`) ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='\u0418\u0433\u0440\u043e\u043a\u0438' AUTO_INCREMENT=1; <\/code><\/pre>\n<p>  \u0427\u0430\u0441\u0442\u044c \u043f\u043e\u043b\u0435\u0439 (name, surname, patronymic, full_name \u0438\u043b\u0438 birthplace, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440) \u0434\u043b\u044f \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u0430. \u041f\u043e\u043b\u044f \u0442\u0438\u043f\u0430 Enum (status, has_career) \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439, \u0430 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0430\u0439\u0434\u0438\u0448\u043d\u0438\u043a\u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043a\u043b\u044e\u0447\u0435\u0439.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/b94\/2b6\/ecd\/b942b6ecd12a3b7d097f16ef5301beff.png\"\/><\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c: <strong>File &gt; New &gt; Job<\/strong> (Ctrl+Alt+N). \u041e\u0442\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0447\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0437\u0430\u0434\u0430\u043d\u0438\u044f. \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0443 View, \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u043e\u0432\u043e\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u0411\u0414 (<strong>Database connections &gt; New<\/strong>): \u0432\u0431\u0438\u0432\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440, \u0411\u0414, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u0430\u0440\u043e\u043b\u044c, \u0434\u0430\u0435\u043c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044e \u043a\u0430\u043a\u043e\u0435-\u043d\u0438\u0431\u0443\u0434\u044c \u0438\u043c\u044f (\u0443 \u043c\u0435\u043d\u044f fbplayers) \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c (<em>c:\\Pentaho\\biserver-ce\\pentaho-solutions\\jobs\\fbplayers.kjb<\/em>).<\/p>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e (<strong>File &gt; New &gt; Transformation<\/strong>, Ctrl+N). \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0435\u0435 \u043f\u043e\u0434 \u0438\u043c\u0435\u043d\u0435\u043c <em>prepare_tables.ktr<\/em>. \u0422\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u043a\u0430\u043a \u0438 \u0441 \u0437\u0430\u0434\u0430\u043d\u0438\u0435\u043c (job), \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043e\u043d\u043d\u0435\u043a\u0442 \u043a \u0411\u0414 \u0434\u043b\u044f \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u0413\u043e\u0442\u043e\u0432\u043e.<\/p>\n<p>  \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0443 View \u0438 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b Input. \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 <strong>Data Grid<\/strong>. \u041e\u043d \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043f\u043e\u043b\u044f \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u0418\u0442\u0430\u043a, \u0432\u044b\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u043c Data Grid \u0432 \u0440\u0430\u0431\u043e\u0447\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0435\u0435 \u0434\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0432\u043e\u0439\u043d\u044b\u043c \u043a\u043b\u0438\u043a\u043e\u043c. \u0412\u0431\u0438\u0432\u0430\u0435\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0448\u0430\u0433\u0430 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 (<strong>Player Status<\/strong>), \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b (\u0432\u043a\u043b\u0430\u0434\u043a\u0430 Meta) \u0438 \u0441\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 (\u0432\u043a\u043b\u0430\u0434\u043a\u0430 Data). \u0412 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0438\u043c\u0435\u0435\u043c 2 \u043f\u043e\u043b\u044f: <\/p>\n<p>  1. Name \u2014 id, Type \u2014 Integer, Decimal \u2014 11<br \/>  2. Name \u2014 status, Type \u2014 String, Length \u2014 10.<\/p>\n<p>  \u0412\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 Data \u0432\u0431\u0438\u0432\u0430\u0435\u043c 2 \u0441\u0442\u0440\u043e\u043a\u0438: 1 \u2014 active, 2 \u2014 inactive.<\/p>\n<p>  \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u0440\u0430\u0437\u0434\u0435\u043b Output \u0438 \u0432\u044b\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u043c \u043e\u0442\u0442\u0443\u0434\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 Table Output. \u0414\u0432\u043e\u0439\u043d\u043e\u0439 \u0449\u0435\u043b\u0447\u043e\u043a, \u0437\u0430\u0434\u0430\u0435\u043c \u0438\u043c\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043a\u0430\u043a <strong>Player Status Dim<\/strong>. \u041a\u043e\u043d\u043d\u0435\u043a\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c\u0441\u044f \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u0435. \u0412 \u043f\u043e\u043b\u0435 Target Table \u043f\u0438\u0448\u0435\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0432 \u0411\u0414 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0438\u0433\u0440\u043e\u043a\u043e\u0432: player_status_dim. \u0421\u0442\u0430\u0432\u0438\u043c \u0447\u0435\u043a\u0431\u043e\u043a\u0441 Truncate Table. \u0421\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u043c \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b: \u0449\u0435\u043b\u043a\u0430\u0435\u043c \u043f\u043e Player Status \u0438 \u0441 \u0437\u0430\u0436\u0430\u0442\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 Shift \u0442\u044f\u043d\u0435\u043c \u043c\u044b\u0448\u044c \u043d\u0430 Player Status Dim. \u0421\u0432\u044f\u0437\u044c \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u0441\u0442\u0440\u0435\u043b\u043a\u0438, \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u044e\u0449\u0435\u0439 \u044d\u0442\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/d35\/10d\/4d7\/d3510d4d75471f5d97abbc0e378c8920.png\"\/><\/p>\n<p>  \u0422\u0430\u043a\u0443\u044e \u0436\u0435 \u0448\u0442\u0443\u043a\u0443 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0441 \u0444\u043b\u0430\u0436\u043a\u043e\u043c \u0434\u043b\u044f \u043a\u0430\u0440\u044c\u0435\u0440\u044b (<strong>Player Career<\/strong>):<\/p>\n<p>  1. Name \u2014 id, Type \u2014 Integer, Decimal \u2014 11<br \/>  2. Name \u2014 has_career, Type \u2014 String, Length \u2014 3.<\/p>\n<p>  \u0412\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 Data \u0432\u0431\u0438\u0432\u0430\u0435\u043c 2 \u0441\u0442\u0440\u043e\u043a\u0438: 1 \u2014 no, 2 \u2014 yes.<\/p>\n<p>  \u0422\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u044b\u0445\u043e\u0434\u043d\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 <strong>Player Career Dim<\/strong>.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/3cb\/cd3\/7b6\/3cbcd37b68f132c924a292e03ccea72f.png\"\/><\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b\u043d\u0435\u0441\u0435\u043c \u0434\u0430\u0442\u0443 \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0438\u0433\u0440\u043e\u043a\u0430 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439. \u041f\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u043c\u0443 \u0441\u0447\u0435\u0442\u0443, Pentaho \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u0442\u0443 \u043f\u0440\u044f\u043c\u043e \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0444\u0430\u043a\u0442\u043e\u0432, \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043c\u044b \u0442\u0430\u043a \u0438 \u0434\u0435\u043b\u0430\u043b\u0438 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043d\u0430\u0448\u0435\u0439 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438. \u041d\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c:<\/p>\n<p>  1. \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0437\u0431\u0438\u0442\u044c 2 \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0444\u0430\u043a\u0442\u043e\u0432 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0418\u0433\u0440\u043e\u043a\u0438 \u0438 \u0422\u0440\u0435\u043d\u0435\u0440\u044b) \u043f\u043e \u0434\u0430\u0442\u0435 \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f, \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u0449\u0435\u0435 \u0434\u043b\u044f \u043d\u0438\u0445 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435 (Dimension);<br \/>  2. \u043f\u0440\u0438 \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0438 \u0434\u0430\u0442\u044b, \u043b\u0435\u0436\u0430\u0449\u0435\u0439 \u0432 \u0441\u0430\u043c\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0444\u0430\u043a\u0442\u043e\u0432, \u043d\u0430 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u0447\u0430\u0441\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0442\u0438\u043f\u0430 extract \u0438\u043b\u0438 year (month, &#8230;) \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043a \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0433\u043e\u0434\u0430, \u043c\u0435\u0441\u044f\u0446\u0430 \u0438 \u0442.\u0434. \u0427\u0442\u043e \u043d\u0435 \u0430\u0439\u0441.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043f\u043e \u044d\u0442\u0438\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u043b\u0438 \u043d\u0430\u0448\u0443 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0438 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043e\u0441\u0442\u0430\u0432\u0438\u0432 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u0447\u0430\u0441\u044b. \u0414\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0442\u0430\u043a\u043e\u0439 \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442, \u0431\u0443\u0434\u0443\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0433\u043e\u0434\u0430, \u043c\u0435\u0441\u044f\u0446\u044b \u0438 \u0434\u043d\u0438.<\/p>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u043e\u0432\u0443\u044e \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e (<strong>initial_sql<\/strong>). \u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u043e \u043a\u043e\u043d\u043d\u0435\u043a\u0442. \u0418\u0437 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c <strong>Scripting &gt; Execute SQL Script<\/strong>. \u0412 \u043d\u0435\u0433\u043e \u043f\u0438\u0448\u0435\u043c \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u0434\u0430\u0442:<\/p>\n<pre><code class=\"sql\">DROP TABLE IF EXISTS `player_birth_date_dim`;  CREATE TABLE IF NOT EXISTS `player_birth_date_dim` (   `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',   `year` smallint(5) unsigned NOT NULL COMMENT '\u0413\u043e\u0434',   `month` tinyint(2) unsigned NOT NULL COMMENT '\u041c\u0435\u0441\u044f\u0446',   `day` tinyint(2) unsigned NOT NULL COMMENT '\u0414\u0435\u043d\u044c',   PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='\u0418\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438' AUTO_INCREMENT=1 ;  INSERT INTO `player_birth_date_dim` (SELECT DISTINCT NULL, YEAR(p.birth_date) as `year`, MONTH(p.birth_date) as `month`, DAY(p.birth_date) as `day` FROM (   SELECT DISTINCT birth_date FROM player ) AS p) <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/60c\/c39\/7e0\/60cc397e0c7c38bac284e134bc3567c9.png\"\/><\/p>\n<p>  \u0422\u0443\u0442 \u0436\u0435, \u0432 \u044d\u0442\u043e\u0439 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0435\u0449\u0435 2 SQL-\u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u2014 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b Player Career Dim \u0438 Player Status Dim:<\/p>\n<pre><code class=\"sql\">DROP TABLE IF EXISTS player_career_dim;  CREATE TABLE IF NOT EXISTS `player_career_dim` (   `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',   `has_\u0441areer` varchar(3) NOT NULL,   PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/b13\/a33\/2ca\/b13a332caf3b05a876fc0d96eb1e01ab.png\"\/><\/p>\n<pre><code class=\"sql\">DROP TABLE IF EXISTS player_status_dim;  CREATE TABLE IF NOT EXISTS `player_status_dim` (   `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',   `status` varchar(10) NOT NULL,   PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; <\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/27f\/dd4\/cc9\/27fdd4cc9a75d56c4af7b79db8188a0b.png\"\/><\/p>\n<p>  \u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0435\u043c \u043a \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043d\u0430\u0448\u0435\u0439 \u043c\u0438\u0441\u0441\u0438\u0438 \u2014 \u0441\u0431\u043e\u0440\u043a\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0444\u0430\u043a\u0442\u043e\u0432. \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e (<em>player_fact.ktr<\/em>). \u041f\u0440\u043e \u043a\u043e\u043d\u043d\u0435\u043a\u0442 \u043d\u0435 \u0437\u0430\u0431\u044b\u043b\u0438, \u043f\u0440\u0430\u0432\u0434\u0430? \u0418\u0437 \u0432\u043a\u043b\u0430\u0434\u043a\u0438 Input \u043a\u0438\u0434\u0430\u0435\u043c Table Input, \u0438\u0437 Output \u2014 Table Output \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u0412 Table Input \u043f\u0438\u0448\u0435\u043c \u043a\u043b\u0451\u0432\u044b\u0439 SQL-\u043d\u0438\u043a:<\/p>\n<pre><code class=\"sql\">SELECT p.id AS player_id, dd.id AS birth_date_id, p.main_country_id, p.height, p.weight, CASE p.status     WHEN 'active' THEN 1     WHEN 'inactive' THEN 2 END as status_id, CASE p.has_career     WHEN 'no' THEN 1     WHEN 'yes' THEN 2 END as has_career_id FROM player AS `p` INNER JOIN player_birth_date_dim AS dd ON YEAR(p.birth_date) = dd.`year` AND MONTH(p.birth_date) = dd.`month` AND DAY(p.birth_date) = dd.`day` <\/code><\/pre>\n<p>  \u0412 Table Output \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0438\u043c\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u2014 <strong>player_fact<\/strong>. \u0421\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u0443\u044e \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u0442\u0440\u0435\u043b\u043a\u043e\u0439.<\/p>\n<p>  \u041e\u043f\u044f\u0442\u044c \u0438\u0434\u0435\u043c \u0432 \u043d\u0430\u0448 job. \u0418\u0437 \u0432\u043a\u043b\u0430\u0434\u043a\u0438 General \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u043e\u0432\u0443\u044e \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e. \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0435\u0435, \u0434\u0430\u0435\u043c \u0438\u043c\u044f <strong>Prepare Tables<\/strong> \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u0443\u0442\u044c \u0434\u043e \u043d\u0430\u0448\u0435\u0439 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 <em>prepare_tables.ktr<\/em>.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/56e\/9f0\/052\/56e9f0052789d00fa9f46a4ef7f46cc0.png\"\/><\/p>\n<p>  \u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0434\u0435\u043b\u0430\u0435\u043c \u0441 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\u043c\u0438 <strong>Initial SQL<\/strong> \u0438 <strong>Player Fact<\/strong>.<\/p>\n<p>  \u0417\u0430\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u043c \u043d\u0430 \u0444\u043e\u0440\u043c\u0443 \u043a\u043d\u043e\u043f\u043a\u0443 Start \u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0438: <strong>Start &gt; Initial SQL &gt; Prepare Tables &gt; Load Player Fact<\/strong>.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/02d\/111\/e4f\/02d111e4f51d601b6d87e362e2232f68.png\"\/><\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u043d\u0438\u0435. \u0412 \u043f\u0430\u043d\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0436\u043c\u0430\u043a\u0430\u0435\u043c \u0437\u0435\u043b\u0435\u043d\u044b\u0439 \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a. \u0415\u0441\u043b\u0438 \u043d\u0430\u0448\u0438 \u0440\u0443\u043a\u0438 \u0431\u044b\u043b\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u044f\u043c\u044b, \u0442\u043e \u043e\u043a\u043e\u043b\u043e \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043d\u0430\u0448\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0437\u0435\u043b\u0435\u043d\u0443\u044e \u0433\u0430\u043b\u043e\u0447\u043a\u0443. \u041c\u043e\u0436\u043d\u043e \u0437\u0430\u0439\u0442\u0438 \u043d\u0430 \u0441\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u0431\u043b\u0438\u0447\u043a\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u044b. \u0415\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a, \u0442\u043e \u043b\u043e\u0433 \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u0432\u0441\u0435 \u043d\u0430\u0448\u0438 \u0433\u0440\u0435\u0448\u043a\u0438.<\/p>\n<h3><a name=\"part3\"><\/a>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043a\u0443\u0431\u0430 \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0435\u0433\u043e \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435<\/h3>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0437\u0430\u0439\u043c\u0435\u043c\u0441\u044f, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0438 OLAP-\u043e\u043c. \u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f olap-\u043a\u0443\u0431\u043e\u0432 \u0443 Pentaho \u0435\u0441\u0442\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u0430 <strong>Schema Workbench<\/strong>. \u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c, \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c, \u0437\u0430\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u043c mysql-\u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440 \u0432 \u043f\u0430\u043f\u043a\u0443 drivers, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c <strong>workbench.bat<\/strong>.<\/p>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u0436\u0435 \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u043c\u0435\u043d\u044e <strong>Options &gt; Connection<\/strong>. \u0412\u0432\u043e\u0434\u0438\u043c \u043d\u0430\u0448\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0411\u0414.<\/p>\n<p>  \u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0435\u043c: <strong>File &gt; New &gt; Schema<\/strong>. \u0421\u0440\u0430\u0437\u0443 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0441\u0445\u0435\u043c\u0443 (\u0443 \u043c\u0435\u043d\u044f <em>fbplayers.xml<\/em>). \u0417\u0430\u0434\u0430\u0434\u0438\u043c \u0438\u043c\u044f \u0441\u0445\u0435\u043c\u0435.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/bbf\/9e0\/72b\/bbf9e072b01b0e50a64c56b43c8afd89.png\"\/><\/p>\n<p>  \u0427\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u0441\u0445\u0435\u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u0443\u0431. \u041d\u0430\u0437\u043e\u0432\u0435\u043c \u0435\u0433\u043e \u0438\u043c\u0435\u043d\u0435\u043c \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438, \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u0442.\u0435. <strong>Player<\/strong>.<\/p>\n<p>  \u0412\u043d\u0443\u0442\u0440\u0438 \u043a\u0443\u0431\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0443 \u043d\u0430\u0441 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 \u0444\u0430\u043a\u0442\u043e\u0432: <strong>player_fact<\/strong>.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/797\/be7\/3c1\/797be73c16fc45d5e77d5e37302c6436.png\"\/><\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043a\u0443\u0431 Player, \u0442\u043e \u043a\u0440\u0430\u0441\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043a\u0430 \u0432\u043d\u0438\u0437\u0443 \u043f\u0440\u0430\u0432\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u043e\u0434\u0441\u043a\u0430\u0436\u0435\u0442 \u043d\u0430\u043c, \u0447\u0442\u043e \u0432 \u043a\u0443\u0431\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0437\u0430\u0434\u0430\u043d\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f (Dimensions), \u0442.\u0435. \u0442\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0441\u0440\u0435\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445. <\/p>\n<p>  \u0415\u0441\u0442\u044c 2 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0437\u0430\u0434\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435 \u043a\u0443\u0431\u0443: \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0433\u043e (\u0447\u0435\u0440\u0435\u0437 <strong>Add Dimension<\/strong>) \u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0445\u0435\u043c\u044b (Add Dimension \u0443 \u0441\u0445\u0435\u043c\u044b \u043f\u043b\u044e\u0441 <strong>Add Dimension Usage<\/strong> \u0443 \u0441\u0430\u043c\u043e\u0433\u043e \u043a\u0443\u0431\u0430). \u041c\u044b \u0432 \u0441\u0432\u043e\u0435\u0439 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u0442.\u043a. \u043e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0434\u043d\u043e \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043a \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c \u0444\u0430\u043a\u0442\u043e\u0432 \u0441\u0440\u0430\u0437\u0443 (\u043a \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043a\u0443\u0431\u0430\u043c). \u042d\u0442\u0438 \u043a\u0443\u0431\u044b \u043c\u044b \u043f\u043e\u0442\u043e\u043c \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u043b\u0438 \u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u0443\u0431, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u043e \u043d\u0430\u043c \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043a\u0443\u0431\u0430\u043c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e.<\/p>\n<p>  \u0412 \u043d\u0430\u0448\u0435\u043c \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0432\u0442\u043e\u0440\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c, \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u0443\u0431\u044b.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u0435\u0440\u0432\u043e\u0435 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435 (\u043f\u043e \u0441\u0442\u0440\u0430\u043d\u0435). \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435 \u0441\u0445\u0435\u043c\u044b, \u0434\u0430\u0435\u043c \u0435\u043c\u0443 \u0438\u043c\u044f <strong>Country<\/strong>. \u0412\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0433\u043e \u0443\u0436\u0435 \u0435\u0441\u0442\u044c 1 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044f, \u0435\u0439 \u0437\u0430\u0434\u0430\u0434\u0438\u043c \u0438\u043c\u044f <strong>Country_Hierarchy<\/strong>. \u0412 \u044d\u0442\u0443 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0445\u0440\u0430\u043d\u0438\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f Country, \u0442.\u0435. country.<\/p>\n<p>  \u042d\u0442\u043e \u043c\u043e\u044f \u043e\u0431\u044b\u0447\u043d\u0430\u044f mysql-\u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0441\u0442\u0440\u0430\u043d \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b:<\/p>\n<pre><code class=\"sql\">CREATE TABLE IF NOT EXISTS `country` (   `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',   `name` varchar(40) NOT NULL COMMENT '\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435',   `english_name` varchar(40) NOT NULL COMMENT '\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c',   `iso_alpha_3` varchar(3) NOT NULL COMMENT '\u0422\u0440\u0435\u0445\u0431\u0443\u043a\u0432\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 ISO 3166-1',   PRIMARY KEY (`id`),   KEY `name` (`name`),   KEY `england_name` (`english_name`) ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='\u0421\u0442\u0440\u0430\u043d\u044b' AUTO_INCREMENT=1 ; <\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044e 1 \u0443\u0440\u043e\u0432\u0435\u043d\u044c (Add Level). \u041d\u0430\u0437\u043e\u0432\u0435\u043c \u0435\u0433\u043e <strong>Country_Level<\/strong> \u0438 \u0441\u0432\u044f\u0436\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0444\u0430\u043a\u0442\u043e\u0432 \u0441 \u044d\u0442\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f: \u043f\u043e\u043b\u0435 table \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0432 country, column \u2014 \u0432 id, nameColumn \u2014 \u0432 name. \u0422.\u0435. \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043f\u0440\u0438 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 ID \u0441\u0442\u0440\u0430\u043d\u044b \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0444\u0430\u043a\u0442\u043e\u0432 ID \u0441\u0442\u0440\u0430\u043d\u044b \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b country \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0432\u0435\u0440\u043d\u0435\u0442\u0441\u044f \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u044b (\u0434\u043b\u044f \u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438). \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u043b\u044f \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043c\u043e\u0436\u043d\u043e \u0438 \u043d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/693\/f59\/bcb\/693f59bcb0fd890a4273bb1a653a63b3.png\"\/><\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u043a\u0443\u0431\u0443 Player \u0438 \u0437\u0430\u0434\u0430\u0442\u044c \u0435\u043c\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0435 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435 (\u0447\u0435\u0440\u0435\u0437 Add Dimension Usage). \u0417\u0430\u0434\u0430\u0435\u043c \u0438\u043c\u044f (Country), source \u2014 \u044d\u0442\u043e \u043d\u0430\u0448\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0435 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435 Country (\u0432 \u0432\u044b\u043f\u0430\u0434\u0430\u044e\u0449\u0435\u043c \u0441\u043f\u0438\u0441\u043a\u0435 \u043e\u043d\u043e \u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c), \u0430 \u043f\u043e\u043b\u0435 foreignKey \u2014 main_country_id, \u0442.\u0435. \u044d\u0442\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442 Pentaho, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u0432\u0438\u0434\u0438\u0442 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e main_country_id \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0444\u0430\u043a\u0442\u043e\u0432, \u043e\u043d \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f (Country) \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0441\u0442\u043e\u043b\u0431\u0446\u0443 (id) \u0438 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430 \u043c\u0435\u0441\u0442\u043e main_country_id \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 name. \u041a\u0430\u043a-\u0442\u043e \u0442\u0430\u043a\u2026<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/871\/dec\/2d3\/871dec2d38693b8086e14946d28eeae3.png\"\/><\/p>\n<p>  \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0443\u0431\u0438\u043a\u0443, \u0447\u0442\u043e \u043c\u044b \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0445\u043e\u0442\u0438\u043c \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c-\u0442\u043e )) \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043a\u0443\u0431 \u043c\u0435\u0440\u0443 (<strong>Add Measure<\/strong>). \u0417\u0430\u0434\u0430\u0434\u0438\u043c \u0435\u0439 \u0438\u043c\u044f PlayerCount, \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440 \u2014 distinct-count \u0438 \u043f\u043e\u043b\u0435, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0431\u0443\u0434\u0435\u043c \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u2014 player_id. \u0413\u043e\u0442\u043e\u0432\u043e!<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/e3b\/e9c\/165\/e3be9c1656b1be7c5c5929dc54618388.png\"\/><\/p>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c\u0441\u044f \u043d\u0430 \u044d\u0442\u043e\u043c \u043d\u0435\u043d\u0430\u0434\u043e\u043b\u0433\u043e \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0447\u0442\u043e \u043c\u044b \u0442\u0443\u0442 \u043d\u0430\u043a\u043e\u043b\u0434\u043e\u0432\u0430\u043b\u0438. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0432\u0435\u0431-\u043c\u043e\u0440\u0434\u0443 Pentaho: <code>http:\/\/localhost:8080\/pentaho<\/code> (\u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u043e start-pentaho.bat). \u0417\u0430\u0445\u043e\u0434\u0438\u043c \u0432 <strong>File &gt; Manage &gt; Data Sources<\/strong>. \u0416\u043c\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430. \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0442\u0438\u043f \u2014 Database Table(s). \u0421\u0430\u043c\u043e\u0435 \u0432\u0430\u0436\u043d\u043e\u0435, \u0447\u0442\u043e \u043d\u0430\u043c \u0442\u0443\u0442 \u043d\u0443\u0436\u043d\u043e \u2014 \u044d\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 (Connection). \u0417\u0430\u0434\u0430\u0435\u043c \u0438\u043c\u044f (Fbplayers) \u0438 \u0432\u0431\u0438\u0432\u0430\u0435\u043c \u043d\u0430\u0448\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0411\u0414. \u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f Connection\u2019\u0430, \u0436\u043c\u0435\u043c \u0432\u0435\u0437\u0434\u0435 Cancel, \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0430\u043c \u0442\u0443\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e.<\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 Pentaho: <strong>File &gt; Publish<\/strong>. \u0417\u0430\u0434\u0430\u0435\u043c \u0443\u0440\u043b: <code>http:\/\/localhost:8080\/pentaho<\/code> \u0438 \u0432\u0432\u043e\u0434\u0438\u043c \u043f\u0430\u0440\u043e\u043b\u044c \u043d\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e. \u042d\u0442\u043e\u0442 \u043f\u0430\u0440\u043e\u043b\u044c \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0438\u043a\u0435 <em>c:\\Pentaho\\biserver-ce\\pentaho-solutions\\system\\publisher_config.xml<\/em>. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u043e\u043b\u044c \u0432 123, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044e\u0437\u0435\u0440 \u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u2014 joe\/password. \u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e, \u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c\u0441\u044f \u043e\u043a\u043d\u043e \u0432\u044b\u0431\u043e\u0440\u0430 \u043f\u0430\u043f\u043a\u0438, \u043a\u0443\u0434\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043d\u0430\u0448\u0443 \u0441\u0445\u0435\u043c\u0443. \u0412\u0432\u043e\u0434\u0438\u043c \u0438\u043c\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u0448\u0430\u0433\u0435 (Fbplayers) \u0432 \u043f\u043e\u043b\u0435 \u00abPentaho or JNDI Source\u00bb. \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0430\u043f\u043a\u0443 <em>schema<\/em> \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0444\u0430\u0439\u043b \u0432 \u043d\u0435\u0435. \u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u043f\u0440\u043e\u0448\u043b\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e, \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0440\u0430\u0434\u043e\u0441\u0442\u043d\u043e\u0435 \u043e\u043a\u043e\u0448\u043a\u043e:<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/2a5\/426\/d2a\/2a5426d2a8b4f517ee00553cd6b30670.png\"\/><\/p>\n<p>  \u041f\u043e\u0439\u0434\u0435\u043c\u0442\u0435 \u0433\u043b\u044f\u0434\u0435\u0442\u044c! \u0417\u0430\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u0432\u0435\u0431-\u043c\u043e\u0440\u0434\u0443, \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c Saiku, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043d\u0430\u0448 \u043a\u0443\u0431 \u0438\u0437 \u0432\u044b\u043f\u0430\u0434\u0430\u044e\u0449\u0435\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430. \u0412\u0438\u0434\u0438\u043c \u043f\u043e\u044f\u0432\u0438\u0432\u0448\u0438\u0435\u0441\u044f \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435 Country \u0438 \u043c\u0435\u0440\u0443 PlayerCount. \u041f\u0435\u0440\u0435\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u043c Country_Level \u0432 \u043f\u043e\u043b\u0435 Rows, PlayerCount \u2014 \u0432 Columns. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 Saiku \u0432\u0436\u0430\u0442\u0430 \u043a\u043d\u043e\u043f\u043a\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u041e\u0431\u044b\u0447\u043d\u043e \u0441\u0442\u043e\u0438\u0442 \u0435\u0435 \u043e\u0442\u0436\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439 \u0438 \u043c\u0435\u0440, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e. \u0415\u0441\u043b\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e, \u0436\u043c\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0443 Run. \u0420\u0430\u0434\u0443\u0435\u043c\u0441\u044f!<\/p>\n<p>  \u041d\u043e \u0435\u0441\u043b\u0438 \u0432\u0434\u0440\u0443\u0433 \u0432\u043c\u0435\u0441\u0442\u043e \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u044b \u0443\u0432\u0438\u0434\u0435\u043b\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432\u0440\u043e\u0434\u0435 \u201cEOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost\u201d, \u043d\u0435 \u0432\u043e\u043b\u043d\u0443\u0439\u0442\u0435\u0441\u044c \u2014 \u044d\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442, \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0436\u043c\u0438\u0442\u0435 Run \u0435\u0449\u0435 \u0440\u0430\u0437-\u0434\u0440\u0443\u0433\u043e\u0439.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/1bd\/20e\/f56\/1bd20ef564020d9bd07e692f19630518.png\"\/><\/p>\n<p>  \u0429\u0435\u043b\u0447\u043a\u043e\u043c \u043f\u043e \u0441\u0442\u0440\u0435\u043b\u043e\u0447\u043a\u0430\u043c \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0435 \u043c\u0435\u0440\u044b, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0443\u044e \u0432\u044b\u0431\u043e\u0440\u043a\u0443 \u043f\u043e \u0443\u0431\u044b\u0432\u0430\u043d\u0438\u044e \u0438\u043b\u0438 \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u043d\u0438\u044e.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/7e3\/2a0\/307\/7e32a03075cad5d34809f418557151dc.png\"\/><\/p>\n<p>  \u041f\u043e\u043a\u0430 \u0443 \u043d\u0430\u0441 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0434\u0430\u043d\u043d\u044b\u0445, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0435\u0449\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e. \u041c\u043e\u0436\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u0432\u044b\u0432\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0441\u043a\u0430\u0436\u0435\u043c, \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u0441\u0442\u0440\u0430\u043d\u0430\u043c \u043d\u0430 \u0431\u0443\u043a\u0432\u0443 \u0410:<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/034\/683\/d68\/034683d6867fda31218f471755c5a432.png\"\/><\/p>\n<p>  \u041f\u043e\u043b\u0443\u0447\u0438\u043c:<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/b36\/e3a\/e4d\/b36e3ae4da519ff1c8dd9f424d1fe867.png\"\/><\/p>\n<p>  \u041c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a\u0438. \u041e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e \u043a\u0440\u0430\u0441\u0438\u0432\u043e, \u0435\u0441\u043b\u0438 \u0432 \u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/5d9\/716\/0a0\/5d97160a036f4ba822c7bba5d27a3f95.png\"\/><\/p>\n<p>  \u041c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u043f\u043e \u0432\u044b\u0431\u043e\u0440\u043a\u0435: \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c, \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438 \u0442.\u0434. \u041c\u043e\u0436\u043d\u043e \u0432\u044b\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u043e \u0434\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0432 xls \u0438\u043b\u0438 csv. \u0422\u0430\u043a\u0436\u0435 \u043d\u0430\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u0439 \u043d\u0430\u043c\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u0437\u0430\u043f\u0440\u043e\u0441 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0442\u043e\u043c \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u043d\u0435\u043c\u0443.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u0441\u0443\u0442\u044c \u043f\u043e\u043d\u044f\u0442\u043d\u0430. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0435\u0449\u0435 \u043f\u0430\u0440\u0443 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0439. \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043f\u043e \u0441\u0442\u0430\u0442\u0443\u0441\u0443 \u0438\u0433\u0440\u043e\u043a\u0430 \u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u044e \u043a\u0430\u0440\u044c\u0435\u0440\u044b \u043d\u0438\u0447\u0435\u043c \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u043e\u0442 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043f\u043e \u0441\u0442\u0440\u0430\u043d\u0435. \u0414\u0430 \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0438 \u0432 \u0442\u043e\u043c, \u0438 \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u0441\u0435\u0433\u043e 2 \u0441\u0442\u0440\u043e\u043a\u0438 (active\/inactive \u0438 has\/no).<\/p>\n<p>  \u0413\u043e\u0440\u0430\u0437\u0434\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435 \u043e\u0431\u0441\u0442\u043e\u0438\u0442 \u0434\u0435\u043b\u043e \u0441 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0435\u0439 \u0442\u0438\u043f\u0430 \u0414\u0430\u0442\u0430. \u0415\u0435 \u043c\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u0438 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c. \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u0432 Workbench, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u043e\u0432\u043e\u0435 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435 (<strong>BirthDate<\/strong>). \u0415\u043c\u0443 \u0432\u043c\u0435\u0441\u0442\u043e StandardDimension \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <strong>TimeDimension<\/strong> \u0418\u0435\u0440\u0430\u0440\u0445\u0438\u044f \u0437\u0434\u0435\u0441\u044c \u0443\u0436\u0435 \u0435\u0441\u0442\u044c. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u2014 <strong>player_birth_date_dim<\/strong>.<\/p>\n<p>  \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0435\u0440\u0432\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u2014 <strong>Year<\/strong>. \u0417\u0430\u0434\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f table = player_birth_date_dim, column = id, levelType = TimeYears. \u0414\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e Key Expression \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c `year`.<\/p>\n<p>  \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432\u0442\u043e\u0440\u043e\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u2014 <strong>Month<\/strong>. \u0417\u0430\u0434\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f table = player_birth_date_dim, column = id, levelType = TimeMonths. \u0414\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e Key Expression \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c `month`, Caption Expression \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u201cCONCAT(`year`, &#8216;, &#8216;, MONTHNAME(STR_TO_DATE(`month`, &#8216;%m&#8217;)))\u201d.<\/p>\n<p>  \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0440\u0435\u0442\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u2014 <strong>Day<\/strong>. \u0417\u0430\u0434\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f table = player_birth_date_dim, column = id, levelType = TimeDays. \u0414\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e Caption Expression \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u201cCONCAT(LPAD(`day`, 2, 0), &#8216;.&#8217;, LPAD(`month`, 2, 0), &#8216;.&#8217;, `year`)\u201d.<\/p>\n<p>  \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0435 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435 \u0432 \u043a\u0443\u0431, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 foreignKey \u0443\u043a\u0430\u0437\u0430\u0432 bith_date_id.<\/p>\n<p>  \u041f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u043c. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u0432\u0441\u0435\u0445 \u0438\u0433\u0440\u043e\u043a\u043e\u0432 \u043f\u043e \u0433\u043e\u0434\u0443 \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/0c3\/cb9\/634\/0c3cb963454c635fa2d97bda3cf94282.png\"\/><\/p>\n<p>  \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0443 \u00ab\u0413\u043e\u0434\u00bb&quot; \u0435\u0449\u0435 \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u00ab\u041c\u0435\u0441\u044f\u0446\u00bb. Pentaho \u0440\u0430\u0437\u043e\u0431\u044c\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u0433\u043e\u0434\u043e\u0432 \u043d\u0430 \u043c\u0435\u0441\u044f\u0446\u044b \u0438 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0433\u0440\u043e\u043a\u043e\u0432, \u0440\u043e\u0436\u0434\u0435\u043d\u043d\u044b\u0445 \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043c\u0435\u0441\u044f\u0446 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0433\u043e\u0434\u0430. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u043c\u0435\u0441\u044f\u0446\u0430\u043c, \u043d\u043e \u0435\u0441\u043b\u0438 \u043e\u0442\u0436\u0430\u0442\u044c \u0432 \u0442\u0443\u043b\u0431\u0430\u0440\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u00abHide Parents\u00bb, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0438 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0433\u0440\u043e\u043a\u043e\u0432 \u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u0433\u043e\u0434.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/ca5\/a44\/462\/ca5a4446291327b5cccef5ec02a7bf75.png\"\/><\/p>\n<p>  \u041d\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0441\u0438\u043b\u0430 Pentaho, \u0434\u0430 \u0438 \u0432\u0441\u0435\u0433\u043e OLAP, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043d\u0435 \u0432 \u0442\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0432\u044b\u0431\u043e\u0440\u043a\u0430\u0445, \u0430 \u0432 \u0441\u0440\u0435\u0437\u0430\u0445 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f\u043c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e. \u0422.\u0435. \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430\u0439\u0434\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0433\u0440\u043e\u043a\u043e\u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u044b, \u0440\u043e\u0436\u0434\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0441\u043b\u0435 1990 \u0433\u043e\u0434\u0430.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/e3b\/642\/be2\/e3b642be2c678175328c087bb9c6a669.png\"\/><\/p>\n<p>  \u0421 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043c\u0435\u0442\u0440\u0438\u043a \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043c\u043e\u0433\u0443\u0442 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u0432\u0441\u0435 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u043c\u0438 \u0438 \u0442\u043e\u0447\u0435\u0447\u043d\u044b\u043c\u0438, \u043e\u0442\u0440\u0430\u0436\u0430\u044e\u0449\u0438\u043c\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044c.<\/p>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u043c \u043d\u0430\u0448\u0430 \u0434\u043b\u0438\u043d\u043d\u0430\u044f-\u0434\u043b\u0438\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0434\u0430\u043d\u043d\u044b\u0439 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u043a\u043e\u043c\u0443-\u0442\u043e \u043f\u043e-\u043d\u043e\u0432\u043e\u043c\u0443 \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u044f OLAP \u0438\u043b\u0438, \u0431\u044b\u0442\u044c \u0434\u0430\u0436\u0435 \u043c\u043e\u0436\u0435\u0442, \u0432\u0432\u0435\u0441\u0442\u0438 \u044d\u0442\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432 \u0441\u0432\u043e\u0438\u0445 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f\u0445. \t\t\t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/187782\/\"> http:\/\/habrahabr.ru\/post\/187782\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\"> \t\t\t<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/d5d\/3f7\/08e\/d5d3f708e728c78bf8f9eafc78f3b803.jpg\" align=\"right\"\/><br \/>  \u0418\u0442\u0430\u043a, \u0434\u043e\u0440\u043e\u0433\u0438\u0435 \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435, \u0445\u043e\u0447\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0432\u0430\u0448\u0435 \u043e\u0431\u043e\u0437\u0440\u0435\u043d\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e, \u043a\u0430\u043a \u043d\u0430\u043c \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c OLAP-\u0441\u0435\u0440\u0432\u0435\u0440 \u0432 \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438. \u0428\u0430\u0433 \u0437\u0430 \u0448\u0430\u0433\u043e\u043c \u043c\u044b \u043f\u0440\u043e\u0439\u0434\u0435\u043c \u043f\u043e \u043f\u0443\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u043d\u0430\u043c\u0438 \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043d, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 Pentaho \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0435\u0439 olap-\u043a\u0443\u0431\u0430 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043c\u043d\u043e\u0433\u043e\u0435 \u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0443\u043c\u0431\u0443\u0440\u043d\u044b\u043c\/\u043d\u0435\u0442\u043e\u0447\u043d\u044b\u043c\/\u043d\u0435\u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c, \u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0441\u043c\u043e\u0436\u0435\u0442 \u043b\u0438 Pentaho \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430\u0448\u0443 \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443, \u0443 \u043d\u0430\u0441 \u043d\u0435 \u0431\u044b\u043b\u043e \u0438 \u0442\u0430\u043a\u043e\u0433\u043e\u2026  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-187782","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/187782","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=187782"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/187782\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=187782"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=187782"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=187782"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}