Added: kylin/site/cn_blog/2022/04/20/kylin4-on-cloud-part2/index.html URL: http://svn.apache.org/viewvc/kylin/site/cn_blog/2022/04/20/kylin4-on-cloud-part2/index.html?rev=1900099&view=auto ============================================================================== --- kylin/site/cn_blog/2022/04/20/kylin4-on-cloud-part2/index.html (added) +++ kylin/site/cn_blog/2022/04/20/kylin4-on-cloud-part2/index.html Thu Apr 21 08:37:12 2022 @@ -0,0 +1,548 @@ +<!-- +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +--> +<!doctype html> +<html> + <!-- +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +--> + +<head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + + <title>Apache Kylin | Kylin on Cloud ââ 䏤尿¶å¿«éæå»ºäºä¸æ°æ®åæå¹³å°(ä¸)</title> + <meta name="description" content="以ä¸é¨å为 Kylin on Cloud ââ 䏤尿¶å¿«éæå»ºäºä¸æ°æ®åæå¹³å° çä¸ç¯ï¼ä¸ç¯è¯·æ¥çï¼Kylin on Cloud ââ 䏤尿¶å¿«éæå»ºäºä¸æ°æ®åæå¹³å°(ä¸)"> + <meta name="author" content="Apache Kylin"> + <link rel="shortcut icon" href="fav.png" type="image/png"> + + + +<link rel="stylesheet" href="/assets/css/animate.css"> +<!-- Bootstrap --> +<link rel="stylesheet" href="/assets/css/bootstrap.min.css"> + +<!-- Fonts --> +<!-- <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Alice|Open+Sans:400,300,700"> --> + +<!-- Icons --> +<link rel="stylesheet" href="/assets/css/font-awesome.min.css"> + + <!-- Custom styles --> + <link rel="stylesheet" href="/assets/css/styles.css"> + <link rel="stylesheet" href="/assets/css/docs.css"> + <link rel="stylesheet" href="/assets/css/pygments.css"> + + <link rel="canonical" href="http://kylin.apache.org/cn_blog/2022/04/20/kylin4-on-cloud-part2/"> + <link rel="alternate" type="application/rss+xml" title="Apache Kylin" href="http://kylin.apache.org/feed.xml" /> + +<!--[if lt IE 9]> <script src="assets/js/html5shiv.js"></script> <![endif]--> +<!-- Global site tag (gtag.js) - Google Analytics --> +<script async src="https://www.googletagmanager.com/gtag/js?id=UA-120788561-1"></script> +<script> + window.dataLayer = window.dataLayer || []; + function gtag(){dataLayer.push(arguments);} + gtag('js', new Date()); + + gtag('config', 'UA-120788561-1'); +</script> +<script type="text/javascript" src="/assets/js/jquery-1.9.1.min.js"></script> +<script type="text/javascript" src="/assets/js/nside.js"></script> </script> +<script type="text/javascript" src="/assets/js/nnav.js"></script> </script> +<script> +var _hmt = _hmt || []; +(function() { + var hm = document.createElement("script"); + hm.src = "https://hm.baidu.com/hm.js?bdc5e03add430c0b72cc0eb91eabfa99"; + var s = document.getElementsByTagName("script")[0]; + s.parentNode.insertBefore(hm, s); +})(); +</script> + +</head> + + <body> + <!-- +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +--> + +<header id="header" > + + <!-- Main Menu --> + <nav class="navbar navbar-default" role="navigation" id="nav-wrapper"> + <div class="container-fluid" id="nav"> + <!-- + <img class="img-circle" width="40px" height="40px" id="circlelogo" src="/assets/images/kylin_logo.jpg"> + --> + <!-- Brand and toggle get grouped for better mobile display --> + <div class="navbar-header"> + <img class="navbar-logo" width="46" src="/assets/images/kylin_logo.png" ></img> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <ul class="nav icon-navbar"> + <li><a href="https://twitter.com/apachekylin" target="_blank" class="fa fa-twitter fa-lg" title="Twitter: @ApacheKylin" ></a></li> + <li><a href="https://github.com/apache/kylin" target="_blank" class="fa fa-github-alt fa-lg" title="Github: apache/kylin" ></a></li> + <li><a href="https://www.facebook.com/kylinio" target="_blank" class="fa fa-facebook fa-lg" title="Facebook: kylin.io" ></a></li> + </ul> + </div> + + <!-- Collect the nav links, forms, and other content for toggling --> + <div class="navbar-collapse collapse" id="bs-example-navbar-collapse-1"> + + <ul class="nav navbar-nav"> + + <li><a href="/">Home</a></li> + <li> + <a href="/docs" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Docs<span class="caret"></span></a> + <ul class="dropdown-menu"> + <li><a href="/docs/">Latest Release(Kylin 4.0.1)</a></li> + <li><a href="/docs31/">Kylin 3.1.3</a></li> + <li><a href="/docs24/">Kylin 2.4.0</a></li> + <li><a href="/archive/">Archive</a></li> + </ul> + </li> + <li><a href="/download">Download</a></li> + <li><a href="/community" >Community</a></li> + <li> + <a href="/development" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Development<span class="caret"></span></a> + <ul class="dropdown-menu"> + <li><a href="/development40/">Kylin 4.x</a></li> + <li><a href="/development/">Kylin 3.x And Older Versions</a></li> + </ul> + </li> + <li><a href="/blog">Blog</a></li> + <li><a href="/cn" >䏿ç</a></li> + </ul> + </div><!-- /.navbar-collapse --> + </div><!-- /.container-fluid --> + </nav> + + <div id="head" class="parallax normal-header" > + <div class="text-center header-apache"> + <a href="http://apache.org/foundation/contributing.html" title="Support Apache" style="margin-left: 150px;"> + <div> + <img src="https://www.apache.org/images/SupportApache-small.png" > + </div> + </a> + </div> + </div> + + </header> + + <div class="page-content main"> + <header style=" padding:2em 0 0 "> + <div class="container" > + <div style=" padding:0 4em"> + <div class="blog-icon"> + <img width="30" src="/assets/images/icon_blog_w.png"> + </div> + <h4 class="index-title" style=" float:left;"><span>Apache Kylin⢠Technical Blog</span></h4> + </div> + </div> + </div> + + <div class="container blog"> + <div> + <article class="post-content" > + <!-- +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +--> + +<div class="post" style=" padding:2em 4em 4em 4em"> + + <header class="post-header"> + <h1 class="post-title">Kylin on Cloud ââ 䏤尿¶å¿«éæå»ºäºä¸æ°æ®åæå¹³å°(ä¸)</h1> + <p class="post-meta" >Apr 20, 2022 ⢠Yaqian Zhang</p> + </header> + + <article class="post-content" > + <p>以ä¸é¨å为 <code class="highlighter-rouge">Kylin on Cloud ââ 䏤尿¶å¿«éæå»ºäºä¸æ°æ®åæå¹³å°</code> çä¸ç¯ï¼ä¸ç¯è¯·æ¥çï¼<a href="../kylin4-on-cloud-part1/">Kylin on Cloud ââ 䏤尿¶å¿«éæå»ºäºä¸æ°æ®åæå¹³å°(ä¸)</a></p> + +<h3 id="kylin-">Kylin æ¥è¯¢é群</h3> + +<h4 id="kylin--1">å¯å¨ Kylin æ¥è¯¢é群</h4> + +<p>1.å¨å¯å¨æå»ºé群æ¶ä½¿ç¨ç kylin_configs.yaml çåºç¡ä¸ï¼æå¼ mdx å¼å ³ï¼</p> + +<div class="highlighter-rouge"><pre class="highlight"><code>ENABLE_MDX: &ENABLE_MDX 'true' +</code></pre> +</div> + +<p>2.ç¶åæ§è¡é¨ç½²å½ä»¤å¯å¨é群ï¼</p> + +<div class="highlighter-rouge"><pre class="highlight"><code>python deploy.py --type deploy --mode query +</code></pre> +</div> + +<h4 id="kylin--2">ä½éª kylin çæ¥è¯¢é度</h4> + +<p>1.æ¥è¯¢é群å¯å¨æååï¼å æ§è¡ <code class="highlighter-rouge">python deploy.py --type list</code> å½ä»¤æ¥ååºææèç¹ä¿¡æ¯ï¼ç¶å卿µè§å¨è¾å ¥ http://${kylin_node_public_ip}:7070/kylin æ£æ¥ kylin UIï¼</p> + +<p><img src="/images/blog/kylin4_on_cloud/14_kylin_web_ui.png" alt="" /></p> + +<p>2.å¨ Insight 页颿§è¡ä¸ä¹åå¨ spark-sql ä¸ç¸åç sqlï¼</p> + +<div class="highlighter-rouge"><pre class="highlight"><code>select TAXI_TRIP_RECORDS_VIEW.PICKUP_DATE, NEWYORK_ZONE.BOROUGH, count(*), sum(TAXI_TRIP_RECORDS_VIEW.TRIP_TIME_HOUR), sum(TAXI_TRIP_RECORDS_VIEW.TOTAL_AMOUNT) +from TAXI_TRIP_RECORDS_VIEW +left join NEWYORK_ZONE +on TAXI_TRIP_RECORDS_VIEW.PULOCATIONID = NEWYORK_ZONE.LOCATIONID +group by TAXI_TRIP_RECORDS_VIEW.PICKUP_DATE, NEWYORK_ZONE.BOROUGH; +</code></pre> +</div> + +<p><img src="/images/blog/kylin4_on_cloud/15_query_in_kylin.png" alt="" /></p> + +<p>å¯ä»¥çå°ï¼å¨æ¥è¯¢å»ä¸ cube çæ åµä¸ï¼ä¹å°±æ¯æ¥è¯¢ç»æç´æ¥æ¥èªäºé¢è®¡ç®åçæ°æ®ï¼åªä½¿ç¨äºå¤§æ¦ 4 ç§çæ¶é´å°±è¿åäºæ¥è¯¢ç»æï¼å¤§å¤§èçäºæ¥è¯¢æ¶é´ã</p> + +<h3 id="section">é¢è®¡ç®é使¥è¯¢ææ¬</h3> + +<p>å¨å¯¹æ¯åç SparkSql å Kylin æ¥è¯¢éåº¦çæµè¯ä¸ï¼æä»¬ä½¿ç¨çæ°æ®éæ¯çº½çº¦å¸åºç§è½¦è®¢åæ°æ®ï¼äºå®è¡¨å ±æ 2 亿+ æ°æ®ãä»å¯¹æ¯ç»æå¯ä»¥çå°ï¼å¨ä¸äº¿çå¤§æ°æ®åæåºæ¯ä¸ï¼Kylin è½å¤æ¾èæåæ¥è¯¢æçï¼éè¿ä¸æ¬¡æå»ºå éä¸åä¸ä¸æ¬¡ä¸å¡æ¥è¯¢ï¼æå¤§çé使¥è¯¢ææ¬ã</p> + +<h3 id="section-1">é ç½®è¯ä¹å±</h3> + +<h4 id="mdx-for-kylin--dataset">å MDX for Kylin å¯¼å ¥ Dataset</h4> + +<p>å¨ <code class="highlighter-rouge">MDX for Kylin</code> ä¸å¯ä»¥æ ¹æ®æè¿æ¥ç Kylin ä¸ç Cube æ¥å建 <code class="highlighter-rouge">Dataset</code>ï¼å®ä¹ Cube å ³ç³»ï¼å建ä¸å¡ææ ã为æ¹ä¾¿ä½éªï¼ç¨æ·å¯ä»¥ç´æ¥ä» S3 ä¸è½½ Dataset æä»¶å¯¼å ¥å° <code class="highlighter-rouge">MDX for Kylin</code> ä¸ï¼</p> + +<p>1.ä» S3 ä¸è½½ Dataset æä»¶å°æ¬å°æºå¨</p> + +<div class="highlighter-rouge"><pre class="highlight"><code>wget https://s3.cn-north-1.amazonaws.com.cn/public.kyligence.io/kylin/kylin_demo/covid_trip_project_covid_trip_dataset.json +</code></pre> +</div> + +<p>2.è®¿é® <code class="highlighter-rouge">MDX for Kylin</code> çé¢</p> + +<p>卿µè§å¨è¾å ¥ <code class="highlighter-rouge">http://${kylin_node_public_ip}:7080</code> è®¿é® <code class="highlighter-rouge">MDX for Kylin</code> 页é¢ï¼ä»¥ <code class="highlighter-rouge">ADMIN/KYLIN</code> çç¨æ·åå¯ç ç»åç»å½ï¼</p> + +<p><img src="/images/blog/kylin4_on_cloud/16_mdx_web_ui.png" alt="" /></p> + +<p>3.确认 Kylin è¿æ¥</p> + +<p><code class="highlighter-rouge">MDX for Kylin</code> ä¸å·²ç»é ç½®äºéè¦è¿æ¥ç kylin èç¹çä¿¡æ¯ï¼é¦æ¬¡ç»å½éè¦è¾å ¥ kylin èç¹çç¨æ·ååå¯ç ä¹å°±æ¯ <code class="highlighter-rouge">ADMIN/KYLIN</code>ï¼</p> + +<p><img src="/images/blog/kylin4_on_cloud/17_connect_to_kylin.png" alt="" /></p> + +<p><img src="/images/blog/kylin4_on_cloud/18_exit_management.png" alt="" /></p> + +<p>4.å¯¼å ¥ Dataset</p> + +<p>è¿æ¥ Kylin æååç¹å»å³ä¸è§ç徿 éåºç®¡ççé¢ï¼</p> + +<p><img src="/images/blog/kylin4_on_cloud/19_kylin_running.png" alt="" /></p> + +<p>åæ¢å° <code class="highlighter-rouge">covid_trip_project</code> 项ç®ï¼å¨ Dataset 页é¢ä¸ç¹å» <code class="highlighter-rouge">Import Dataset</code>ï¼</p> + +<p><img src="/images/blog/kylin4_on_cloud/20_import_dataset.png" alt="" /></p> + +<p>éæ©ååä» S3 ä¸è½½çæä»¶ <code class="highlighter-rouge">covid_trip_project_covid_trip_dataset.json</code> å¯¼å ¥ã</p> + +<p><code class="highlighter-rouge">covid_trip_dataset</code> ä¸å®ä¹äºåååææ ç年累计ãæç´¯è®¡ãå¹´å¢éãæå¢éï¼åæ¶é´å±çº§ãå°åºå±çº§çç¹æ®ç»´åº¦ã度éï¼ä»¥åæ°å èºçç æ»çãåºç§è½¦å¹³åé度çä¸å¡ææ ãå¦ä½æå¨å建 Dataset 请åèï¼<a href="https://cwiki.apache.org/confluence/display/KYLIN/Create+Dataset+in+MDX+for+Kylin">Create dataset in MDX for Kylin</a>ï¼MDX for Kylin æå龿¥è¯·åèï¼<a href="https://kyligence.github.io/mdx-kylin/">MDX for Kylin ä½¿ç¨æå</a>ã</p> + +<h2 id="section-2">æ°æ®åæ</h2> + +<h3 id="tableau-">éè¿ Tableau è¿è¡æ°æ®åæ</h3> + +<p>æä»¬ä»¥æ¬å° windows æºå¨ä¸ç tableau 为ä¾è¿æ¥ MDX for Kylin è¿è¡æ°æ®åæã</p> + +<p>1.éæ© Tableau å ç½®ç <code class="highlighter-rouge">Microsoft Analysis Service</code> æ¥è¿æ¥ <code class="highlighter-rouge">MDX for Kylin</code> (éè¦æåå®è£ <code class="highlighter-rouge">Microsoft Analysis Services</code> 驱å¨ï¼å¯ä» tableau å®ç½ä¸è½½ï¼<a href="https://www.tableau.com/support/drivers?_ga=2.104833284.564621013.1647953885-1839825424.1608198275">Microsoft Analysis Services 驱å¨ä¸è½½</a>)</p> + +<p><img src="/images/blog/kylin4_on_cloud/21_tableau_connect.png" alt="" /></p> + +<p>2.å¨å¼¹åºç设置页é¢ä¸å¡«å <code class="highlighter-rouge">MDX for Kylin</code> çè¿æ¥å°åï¼ä»¥åç¨æ·ååå¯ç ï¼è¿æ¥å°å为 <code class="highlighter-rouge">http://${kylin_node_public_ip}:7080/mdx/xmla/covid_trip_project</code>:</p> + +<p><img src="/images/blog/kylin4_on_cloud/22_tableau_server.png" alt="" /></p> + +<p>3.éæ© <code class="highlighter-rouge">covid_trip_dataset</code> ä½ä¸ºæ°æ®éï¼</p> + +<p><img src="/images/blog/kylin4_on_cloud/23_tableau_dataset.png" alt="" /></p> + +<p>4.ç¶åå³å¯å¨å·¥ä½è¡¨ä¸è¿è¡æ°æ®åæï¼ç±äºæä»¬å¨ <code class="highlighter-rouge">MDX for Kylin</code> ä¸å·²ç»ç»ä¸å®ä¹äºä¸å¡ææ ï¼æä»¥å¨ tableau ä¸å¶ä½æ°æ®åææ¥è¡¨æ¶ï¼å¯ä»¥ç´æ¥ææ½å®ä¹å¥½çä¸å¡ææ å°å·¥ä½è¡¨ä¸è¿è¡å±ç¤ºã</p> + +<p>5.é¦å åæç«æ æ°æ®ï¼éè¿ç¡®è¯äººæ°ãç æ»çä¸¤ä¸ªææ æ¥ç»å¶å½å®¶çº§å«çç«æ å°å¾ï¼åªéè¦å°å°åºå±çº§ä¸ç <code class="highlighter-rouge">COUNTRY_SHORT_NAME</code> æ¾å°å·¥ä½è¡¨çåä¸ ï¼å°äºå å®ä¹å¥½çæ°å¢ç¡®è¯äººæ°æ»å <code class="highlighter-rouge">SUM_NEW_POSITIVE_CASES</code> åç æ»çææ <code class="highlighter-rouge">CFR_COVID19</code> æ¾å°å·¥ä½è¡¨çè¡ä¸ï¼ç¶å鿩以å°å¾å½¢å¼å±ç¤ºæ°æ®ç»æï¼</p> + +<p><img src="/images/blog/kylin4_on_cloud/24_tableau_covid19_map.png" alt="" /></p> + +<p>å ¶ä¸ï¼å¾æ é¢ç§¯ä»£è¡¨æ»äº¡äººæ°çº§å«ï¼å¾æ é¢è²æ·±æµ ä»£è¡¨ç æ»ç级å«ãéè¿ç«æ å°å¾å¯ä»¥çåºï¼ç¾å½åå°åº¦çç¡®è¯äººæ°ç¸å¯¹è¾å¤ï¼ä½æ¯è¿ä¸¤ä¸ªå½å®¶çç æ»çä¸å ¶ä»å¤§å¤æ°å½å®¶æ²¡æææ¾å·®å«ï¼èç¡®è¯äººæ°å¾å°çç§é²ãç¦åªé¿å¾ã墨西å¥çå½å®¶çç æ»çåå± é«ä¸ä¸ãä»è¿ä¸ªç°è±¡å ¥æï¼ä¹è®¸å¯ä»¥ææå°æ´æ·±å±æ¬¡çåå ã</p> + +<p>ç±äºæä»¬è®¾ç½®äºå°åºå±çº§ï¼æä»¥å¯ä»¥å°å½å®¶çº§å«çç«æ å°å¾ä¸é»å°ç级å«ï¼æ¥çå个å½å®¶å é¨å个å°åºçç«æ æ åµï¼</p> + +<p><img src="/images/blog/kylin4_on_cloud/25_tableau_province.png" alt="" /></p> + +<p>å¨ province 级å«çç«æ å°å¾æ¾å¤§çç¾å½çç«æ ç¶åµï¼</p> + +<p><img src="/images/blog/kylin4_on_cloud/26_tableau_us_covid19.png" alt="" /></p> + +<p>å¯ä»¥åç°ï¼ç¾å½æ¯ä¸ªå·çç æ»çæ²¡æææ¾å·®è·ï¼é½å¨ 0.01 å·¦å³ï¼å¨ç¡®è¯äººæ°ä¸ï¼CaliforniaãTexasãFlorida 以å纽约å¸å 个å°åºææ¾åé«ï¼è¿å 个å°åºç»æµåè¾¾ã人å£ä¼å¤ï¼æ°å èºçç¡®è¯äººæ°ä¹é乿åãä¸é¢é对纽约å¸åºç§è½¦æ°æ®éï¼ç»åç«æ å屿 åµï¼åæç«æ å½¢å¿ä¸äººä»¬ä¹ååºç§è½¦åºè¡çæ°æ®ååã</p> + +<p>6.对äºçº½çº¦å¸åºç§è½¦è®¢åæ°æ®éï¼åå«ä»ä»¥ä¸ä¸¤ä¸ªä¸å¡é®é¢å ¥æï¼</p> + +<ul> + <li>åæçº½çº¦å¸å个è¡åºåºè¡ç¹å¾ï¼å¯¹æ¯è®¢åæ°éãåºè¡é度çåºè¡ææ </li> +</ul> + +<p>å° lookup 表 <code class="highlighter-rouge">PICKUP_NEWYORK_ZONE</code> ä¸çåæ®µ <code class="highlighter-rouge">BOROUGH</code> ææ½å°å·¥ä½è¡¨çåä¸ï¼å°ææ <code class="highlighter-rouge">ORDER_COUNT</code>ã<code class="highlighter-rouge">trip_mean_speed</code> ææ½å°å·¥ä½è¡¨çè¡ä¸ï¼ä»¥ç¬¦å·å°å¾çæ¹å¼å±ç¤ºï¼é¢è²æ·±æµ 代表平åé度ãé¢ç§¯å¤§å°ä»£è¡¨è®¢åæ°éï¼å¯ä»¥çå°ä»æ¼åé¡¿åºåºåçåºç§è½¦è®¢åæ¯å«çè¡åºæ»åé½è¦é«ï¼ä½æ¯å¹³åé度æå°ï¼Queens è¡åºæ¬¡ä¹ï¼Staten Island 忝åºç§è½¦æ´»å¨æå°çä¸ä¸ªè¡åºãä» Bronx åºåç åºç§è½¦å¹³åé度é«è¾¾ 82 è±é/å°æ¶ï¼æ¯å ¶ä»è¡åºçå¹³åé度é½é«åºå åãä»è¿äºåºè¡ç¹å¾å¯ä»¥æ å°åºçº½çº¦å¸å个è¡åºç人å£å¯éç¨åº¦ä»¥åç»æµåè¾¾ç¨åº¦ã</p> + +<p><img src="/images/blog/kylin4_on_cloud/27_tableau_taxi_1.png" alt="" /></p> + +<p>ç¶åå° lookup 表 <code class="highlighter-rouge">PICKUP_NEWYORK_ZONE</code> ä¸çåæ®µ <code class="highlighter-rouge">BOROUGH</code> æ¢æ <code class="highlighter-rouge">DROPOFF_NEWYORK_ZONE</code> ä¸ç <code class="highlighter-rouge">BOROUGH</code>ï¼ç»è®¡åºç§è½¦è®¢åå°è¾¾è¡åºçæ°éåå¹³åé度ï¼</p> + +<p><img src="/images/blog/kylin4_on_cloud/27_tableau_taxi_2.png" alt="" /></p> + +<p>ç¸æ¯åºåè¡åºçæ°æ®ï¼brooklyãQueens å Bronx ä¸ä¸ªè¡åºçå°è¾¾æ°æ®é½ææ¯è¾ææ¾çå·®å«ï¼ä»æ¯ä¾å ³ç³»ä¸æ¥çï¼å°è¾¾ brookly å Bronx çåºç§è½¦è®¢åè¦è¿è¿å¤äºä» Brookly å Bronx åºåç订åï¼å°è¾¾ Queens è¡åºçè®¢åæ°éåææ¾å°äºä» Queens è¡åºåºåç订åã</p> + +<ul> + <li>ç«æ åå纽约å¸å± æ°ä¹ååºç§è½¦çåºè¡ä¹ æ¯ååï¼æ´ååè¿ç¨åºè¡è¿æ¯è¿ç¨</li> +</ul> + +<p>éè¿å¹³ååºè¡éç¨åæå± æ°åºè¡ä¹ æ¯ååï¼å°ç»´åº¦ <code class="highlighter-rouge">MONTH_START</code> ææ½å°å·¥ä½è¡¨çè¡ï¼å°ææ <code class="highlighter-rouge">trip_mean_distance</code> ææ½å°å·¥ä½è¡¨çåï¼</p> + +<p><img src="/images/blog/kylin4_on_cloud/28_tableau_taxi_3.png" alt="" /></p> + +<p>æ ¹æ®æ±ç¶å¾çç»æå¯ä»¥åç°ï¼ç«æ åå人们çåºè¡ä¹ æ¯åçäºææ¾çååï¼ä» 2020.03 å¼å§å¹³ååºè¡éç¨æææ¾åé«ï¼çè³æçæä»½åçæ°åå¢é¿ï¼å¹¶ä¸ç«æ å¼å§åæ¯ä¸ªæçå¹³ååºè¡éç¨åçå¾ä¸ç¨³å®ãåºäºè¿ç§æ°æ®è¡¨ç°ï¼æä»¬å¯ä»¥åç»åæä»½ç»´åº¦çç«æ æ°æ®è¿è¡èååæï¼å° <code class="highlighter-rouge">SUM_NEW_POSITIVE_CASES</code> å <code class="highlighter-rouge">MTD_ORDER_COUNT</code> ææ½å°å·¥ä½è¡¨çè¡ä¸ï¼å¹¶å¨çéå¨ä¸å¢å ç鿡件 <code class="highli ghter-rouge">PROVINCE_STATE_NAME=New York</code>ï¼</p> + +<p><img src="/images/blog/kylin4_on_cloud/29_tableau_taxi_4.png" alt="" /></p> + +<p>å¯ä»¥çå°ä¸ä¸ªæè¶£çç°è±¡ï¼ç«æ åæååçåçæ¶ååºç§è½¦è®¢å鿥å§åå°ï¼èå¹³ååºè¡éç¨å¢å¤§ï¼è¯´æå¤§å®¶åå°äºå¾å¤ä¸å¿ è¦ççè·ç¦»åºè¡ï¼æè éç¨åºç§è½¦ä»¥å¤çæ´å®å ¨çäº¤éæ¹å¼è¿è¡äºçè·ç¦»åºè¡ã对æ¯ä¸ç§æ°æ®çæ²çº¿ååï¼å¯ä»¥çå°ç«æ 严éç¨åº¦å人们çåºè¡æ åµè¡¨ç°åºå¾é«çç¸å ³æ§ï¼ç«æ 䏥鿶åºç§è½¦è®¢åéåå°ï¼å¹³ååºè¡éç¨æåï¼ç¶åç«æ 好转ï¼åºç§è½¦è®¢åé å¢å¤§ï¼å¹³ååºè¡éç¨åè½ã</p> + +<h3 id="excel-">éè¿ Excel è¿è¡æ°æ®åæ</h3> + +<p>æäº <code class="highlighter-rouge">MDX for Kylin</code> ç帮å©ï¼æä»¬å¨ Excel ä¸ä¹å¯ä»¥è¿æ¥ Kylin è¿è¡å¤§æ°æ®åæãè¿æ¬¡æµè¯ä¸ï¼æä»¬ä½¿ç¨æ¬å° windows æºå¨ä¸ç Excel è¿æ¥ MDX for Kylin è¿è¡æ¼ç¤ºã</p> + +<p>1.æå¼ Excelï¼éæ© æ°æ® -> è·åæ°æ® -> æ¥èªæ°æ®åº -> èª <code class="highlighter-rouge">Analysis Services</code>ï¼</p> + +<p><img src="/images/blog/kylin4_on_cloud/30_excel_connect.png" alt="" /></p> + +<p>2.卿°æ®è¿æ¥å导ä¸å¡«åMDX for Kylin è¿æ¥ä¿¡æ¯ï¼æå¡å¨å称为 <code class="highlighter-rouge">http://${kylin_node_public_ip}:7080/mdx/xmla/covid_trip_project</code>ï¼</p> + +<p><img src="/images/blog/kylin4_on_cloud/31_excel_server.png" alt="" /></p> + +<p><img src="/images/blog/kylin4_on_cloud/32_tableau_dataset.png" alt="" /></p> + +<p>3.ç¶å为å½åçæ°æ®è¿æ¥åå»ºæ°æ®éè§è¡¨ï¼å¨æ°æ®éè§è¡¨å段ä¸ï¼æä»¬å¯ä»¥çå°ï¼å¨ Excel ä¸è¿æ¥ <code class="highlighter-rouge">MDX for Kylin</code> ä¸ç dataset è·åæ°æ®ä¿¡æ¯ï¼å¯ä»¥ä¸ Tableau ä¿æå®å ¨ä¸è´ï¼æ 论åæäººåæ¯å¨ Tableau è¿æ¯ Excel ä¸è¿è¡åæï¼é½æ¯å¨ä¸è´çæ°æ®æ¨¡åã维度åä¸å¡ææ çåºç¡ä¸ï¼è¾¾å°ç»ä¸è¯ä¹çææã</p> + +<p>4.å¨ Tableau 䏿们坹 <code class="highlighter-rouge">covid19</code> å <code class="highlighter-rouge">newyork_trip_data</code> ä¸¤ä¸ªæ°æ®éè¿è¡äºç«æ å°å¾ç»å¶åè¶å¿åæãå¨ Excel ä¸å¯¹äºåæ ·çæ°æ®éåæ°æ®åºæ¯ï¼æä»¬å¯ä»¥æ¥çæ´å¤çæç»æ°æ®ã</p> + +<ul> + <li>对äºç«æ æ°æ®ï¼ä¸ºæ°æ®éè§è¡¨éåå°åºå±çº§å段 <code class="highlighter-rouge">REGION_HIERARCHY</code>ï¼ä»¥åäºå å®ä¹å¥½çæ°å¢ç 便°æ»å <code class="highlighter-rouge">SUM_NEW_POSITIVE_CASES</code> åç æ»çææ <code class="highlighter-rouge">CFR_COVID19</code>ï¼</li> +</ul> + +<p><img src="/images/blog/kylin4_on_cloud/33_tableau_covid19_1.png" alt="" /></p> + +<p>ç±äºå°åºå±çº§çæä¸å±ä¸º <code class="highlighter-rouge">CONTINENT_NAME</code>ï¼æä»¥é»è®¤å±ç¤ºæ´²çº§å«çç¡®è¯äººæ°åç æ»çï¼å¯ä»¥çå°ç¡®è¯äººæ°æå¤çæ´²æ¯æ¬§æ´²ï¼ç æ»çæé«çæ¯éæ´²ãå¨è¿å¼ æ°æ®éè§è¡¨ä¸æä»¬å¯ä»¥æ¹ä¾¿çä¸é»å°æ´ä¸å±çå°åºçº§å«æ¥çæ´ç»ç²åº¦çæç»æ°æ®ï¼æ¯å¦æ¥çäºæ´²å½å®¶çç«æ æ°æ®ï¼å¹¶æ ¹æ®ç¡®è¯äººæ°è¿è¡éåºæåºï¼</p> + +<p><img src="/images/blog/kylin4_on_cloud/34_excel_covid20_2.png" alt="" /></p> + +<p>æ°æ®æ¾ç¤ºï¼äºæ´²å½å®¶ä¸ç¡®è¯äººæ°æååä¸çå½å®¶å嫿¯å°åº¦ãåè³å ¶å伿ã</p> + +<ul> + <li>对äºçº½çº¦å¸åºç§è½¦è®¢åæ°æ®ï¼é对 âç«æ 对äºåºç§è½¦è®¢åæ°éææ ææ¾å½±åâ çé®é¢ï¼é¦å ä»å¹´ä»½çç»´åº¦ä¸æ¥çåºç§è½¦è®¢åæ°éç年累计åå¢éï¼æ°å»ºéè§è¡¨éæ©æ¶é´å±çº§ç»´åº¦ <code class="highlighter-rouge">TIME_HIERARCHY</code>ã<code class="highlighter-rouge">YOY_ORDER_COUNT</code> å <code class="highlighter-rouge">YTD_ORDER_COUNT</code>ï¼</li> +</ul> + +<p><img src="/images/blog/kylin4_on_cloud/35_excel_taxi_1.png" alt="" /></p> + +<p>å¯ä»¥çå°ï¼2020 å¹´ç«æ çå导è´åºç§è½¦è®¢åæ°éæ¥å§åå°ï¼2020年订åéå¢é为 -0.7079ï¼åå°äº 70% çåºè¡è®¢åï¼2021 年订åéå¢éä»ä¸ºè´æ°ï¼ä½æ¯ç¸æ¯ 2020 å¹´ç«æ åæè®¢åéåå°é度æ¾ç¼äºè®¸å¤ã</p> + +<p>å±å¼æ¶é´å±çº§ï¼å¯ä»¥æ¥çå£åº¦çº§å«ãæçº§å«ç´å°å¤©çº§å«ç订å累计å¼ï¼éæ© <code class="highlighter-rouge">MOM_ORDER_COUNT</code> å <code class="highlighter-rouge">ORDER_COUNT</code> å°éè§è¡¨ä¸è¿å¯ä»¥åæ¶æ¥çæåº¦è®¢åå¢é以åå个æ¶é´å±çº§çè®¢åæ°éï¼</p> + +<p><img src="/images/blog/kylin4_on_cloud/36_excel_taxi_2.png" alt="" /></p> + +<p>2020 å¹´ 3 æä»½ï¼è®¢åå¢é为 -0.52ï¼åºç§è½¦è®¢åå·²ç»åºç°ææ¾åå°ï¼4 æä»½æ´æ¯è·è³ -0.92ï¼åå°äº 90% ç订åï¼åæå¼å§æ ¢æ ¢å¢é¿ï¼ä½æ¯ä¹å§ç»è¿ä½äºç«æ ä¹åçæ°éã</p> + +<h3 id="api--kylin-">éè¿ API éæ Kylin å°æ°æ®åæå¹³å°</h3> + +<p>é¤äº ExcelãTableau è¿ç§åä¸ BI å·¥å ·ï¼å¾å¤ä¼ä¸å é¨ä¼å¼åèªå·±çæ°æ®åæå¹³å°ï¼å¨è¿ç±»èªç æ°æ®åæå¹³å°ä¸ï¼ç¨æ·ä»ç¶å¯ä»¥éè¿è°ç¨ API çæ¹å¼å° Kylin + MDX for Kylin ä½ä¸ºåæå¹³å°çåºç¡åºåº§ï¼ä¿è¯ç»ä¸çæ°æ®å£å¾ãå¨è¿æ¬¡æ¼ç¤ºä¸ï¼æä»¬å°å±ç¤ºå¦ä½éè¿ Olap4j å MDX for Kylin åéæ¥è¯¢ï¼è·å¾åæç»æï¼Olap4j æ¯ä¸ä¸ªä¸ JDBC 驱å¨ç±»ä¼¼ï¼è½å¤è®¿é®ä»»æ OLAP æå¡ç Java åºã</p> + +<p>æä»¬æä¾äºä¸ä¸ªç®åç demo å¯ä»¥æ¹ä¾¿ç¨æ·ç´æ¥è¿è¡æµè¯ï¼æºç ä½äº <a href="https://github.com/apache/kylin/tree/mdx-query-demo">mdx query demo</a>ï¼</p> + +<p>1.ä¸è½½ demo æ¼ç¤ºç¸å ³ jar å :</p> + +<div class="highlighter-rouge"><pre class="highlight"><code>wget https://s3.cn-north-1.amazonaws.com.cn/public.kyligence.io/kylin/kylin_demo/mdx_query_demo.tgz +tar -xvf mdx_query_demo.tgz +cd mdx_query_demo +</code></pre> +</div> + +<p>2.è¿è¡ demo</p> + +<p>è¿è¡ demo ä¹åä¿è¯è¿è¡ç¯å¢å®è£ äº java8ï¼</p> + +<p><img src="/images/blog/kylin4_on_cloud/37_jdk_8.png" alt="" /></p> + +<p>è¿è¡ demo éè¦ä¸¤ä¸ªåæ°ï¼mdx èç¹ç ip å éè¦è¿è¡ç mdx æ¥è¯¢ï¼ç«¯å£é»è®¤ä¸º 7080ï¼è¿éç mdx èç¹ ip å°±æ¯ kylin èç¹ç public ipï¼</p> + +<div class="highlighter-rouge"><pre class="highlight"><code>java -cp olap4j-xmla-1.2.0.jar:olap4j-1.2.0.jar:xercesImpl-2.9.1.jar:mdx-query-demo-0.0.1.jar io.kyligence.mdxquerydemo.MdxQueryDemoApplication "${kylin_node_public_ip}" "${mdx_query}" +</code></pre> +</div> + +<p>å¦æç¨æ·å¨è¿è¡ demo æ¶æ²¡æéè¿å½ä»¤è¡è¾å ¥éè¦æ§è¡ç mdx è¯å¥ï¼åä¼é»è®¤æ§è¡ä»¥ä¸ mdx è¯å¥ç»è®¡ä»åºåè¡åºç维度ä¸å个è¡åºçè®¢åæ°éåå¹³åéç¨ï¼</p> + +<div class="highlighter-rouge"><pre class="highlight"><code>SELECT +{[Measures].[ORDER_COUNT], +[Measures].[trip_mean_distance]} +DIMENSION PROPERTIES [MEMBER_UNIQUE_NAME],[MEMBER_ORDINAL],[MEMBER_CAPTION] ON COLUMNS, +NON EMPTY [PICKUP_NEWYORK_ZONE].[BOROUGH].[BOROUGH].AllMembers +DIMENSION PROPERTIES [MEMBER_UNIQUE_NAME],[MEMBER_ORDINAL],[MEMBER_CAPTION] ON ROWS +FROM [covid_trip_dataset] +</code></pre> +</div> + +<p>å¨è¿æ¬¡æ¼ç¤ºä¸æä»¬ç´æ¥æ§è¡é»è®¤æ¥è¯¢ï¼æ§è¡æåä¹åï¼ç»è¿ç®åå¤ççæ¥è¯¢ç»æä¼è¾åºå°å½ä»¤è¡ï¼</p> + +<p><img src="/images/blog/kylin4_on_cloud/38_demo_result.png" alt="" /></p> + +<p>å¯ä»¥çå°ï¼è¿è¡ Demo ä¹åæåè·å¾äºéè¦æ¥è¯¢çæ°æ®ï¼æ°æ®ç»ææ¾ç¤ºï¼ä» Manhattan åºåçåºç§è½¦è®¢åæ°éæå¤ï¼è®¢åå¹³åéç¨åªæå¤§çº¦ 2.4 è±éï¼ç¬¦å Manhattan å°çé¢ç§¯å°ä¸äººå£ç¨ å¯çç¹ç¹ï¼èä» Bronx ç订åå¹³åéç¨è¾¾å° 33 è±éï¼æåçé«äºå ¶ä»ä»»ä½è¡åºï¼å¯è½æ¯ç±äº Bronx å°å¤åå»çç¼æ ã</p> + +<p>ä¸ Tableau å Excel ç¸åï¼å¨ Demo ä¸ç¼åç mdx è¯è¨ä¸å¯ä»¥ç´æ¥ä½¿ç¨å¨ Kylin 以å MDX for Kylin ä¸å®ä¹çææ ãå¨ä¼ä¸èªç æ°æ®åæå¹³å°ä¸ï¼ç¨æ·å¯ä»¥å¯¹æ¥è¯¢è¿åçæ°æ®ç»æè¿è¡è¿ä¸æ¥åæï¼æ ¹æ®å±ç¤ºéæ±çææ¥è¡¨ã</p> + +<h3 id="section-3">ç»ä¸çæ°æ®å£å¾</h3> + +<p>éè¿ä»¥ä¸ç§ä¸åçæ°æ®åææ¹å¼è¿æ¥ Kylin + MDX for Kylin è¿è¡æ°æ®åæå±ç¤ºï¼æä»¬å¯ä»¥åç°ï¼åå© Kylin å¤ç»´æ°æ®åºå MDX for Kylin è¯ä¹å±åè½ï¼æ è®ºç¨æ·å¨ä¸å¡åºæ¯ä¸ä½¿ç¨åªç§æ¹å¼åææ°æ®ï¼é½å¯ä»¥ä½¿ç¨ç¸åçæ°æ®æ¨¡ååä¸å¡ææ ï¼è¾¾å°ç»ä¸æ°æ®å£å¾çç®çã</p> + +<h2 id="section-4">鿝é群</h2> + +<h3 id="section-5">鿝æ¥è¯¢é群</h3> + +<p>å¨ä¸è¿°åæå®æä¹åï¼æä»¬å¯ä»¥æ§è¡éç¾¤éæ¯å½ä»¤æ¥éæ¯æ¥è¯¢é群ãå¦æç¨æ·å¸æåæ¶éæ¯ Kylin 以å MDX for Kylin çå æ°æ®åº RDSãçæ§èç¹ä»¥å VPCï¼é£ä¹å¯ä»¥æ§è¡éç¾¤éæ¯å½ä»¤ï¼</p> + +<div class="highlighter-rouge"><pre class="highlight"><code>python deploy.py --type destroy-all +</code></pre> +</div> + +<h3 id="aws-">æ£æ¥ AWS èµæº</h3> + +<p>å¨éæ¯ææéç¾¤èµæºåï¼<code class="highlighter-rouge">CloudFormation</code> ä¸ä¸ä¼ä¿çä¸é¨ç½²å·¥å ·ç¸å ³çä»»ä½ Stackãå¦æç¨æ·æ³è¦å é¤ S3 ä¸ä¸é¨ç½²å·¥å ·ç¸å ³çæä»¶ä»¥åæ°æ®ï¼å¯ä»¥æå¨å é¤ S3 å·¥ä½ç®å½ä¸ç以䏿件夹ï¼</p> + +<p><img src="/images/blog/kylin4_on_cloud/39_check_s3_demo.png" alt="" /></p> + +<h2 id="section-6">æ»ç»</h2> + +<p>éè¿è¿æ¬¡æ¼ç¤ºæç¨ï¼åªéè¦ä¸ä¸ª AWS è´¦å·ï¼ç¨æ·å°±å¯ä»¥ä½¿ç¨äºä¸é¨ç½²å·¥å ·ï¼åå©äº Kylin çé¢è®¡ç®ææ¯åå¤ç»´æ¨¡åï¼ä»¥åMDX for Kylin çåºç¡ææ 管çï¼å¿«é䏿¹ä¾¿çæå»ºåºäº Kylin + MDX for Kylin çäºä¸å¤§æ°æ®åæå¹³å°ï¼å¯¹æ¥åç§ BI å·¥å ·è¿è¡ææ¯éªè¯ï¼è¾¾å°éæ¬å¢æãç»ä¸æ°æ®å£å¾çç®çã</p> + + + </article> + +</div> + + + + + + </article> + </div> + </div> + <!-- +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +--> + +<footer id="underfooter"> + <div> + <div class="row"> + <div class="col-md-12 widget"> + <div class="widget-body"> + <div class="footer-img"> + <a href="http://www.apache.org"> + <img id="asf-logo" height="78px" alt="Apache Software Foundation" src="/assets/images/apache_footer.png"> + </a> + </div> + <p style="padding-top: 11px;"> + The contents of this website are © 2015 Apache Software Foundation under the terms of the + <a href="http://www.apache.org/licenses/LICENSE-2.0"> Apache License v2 </a>. + </p> + <p style="margin-bottom: 11px;"> + Apache Kylin and its logo are trademarks of the Apache Software Foundation. + </div> + + </div> + </div> + </div> + <!-- /row of widgets --> + + </div> + <div></div> + +</footer> + + <script src="/assets/js/jquery-1.9.1.min.js"></script> + <script src="/assets/js/bootstrap.min.js"></script> + <script src="/assets/js/main.js"></script> + </body> +</html> + + + +