
ã¿ãªããããã«ã¡ã¯ã
æ°ãã2016幎ãå°æ¥ããŸãããã€ãŸããéå±ãªæ©æ¢°äœæ¥ãç°¡çŽ åããããã«ããŒã«ãæŽæ°ãããšãã§ãã åæéšéãããŒã±ãã£ã³ã°éšéãå¶æ¥éšéã¯ãã¬ããŒãã®æŽæ°æã«æ¬¡ã®ãããªå°é£ã«çŽé¢ããããšããããããŸãã
1.è€æ°ã®ãœãŒã¹ããããŒã¿ãåéããå¿ èŠããããŸãã
2.ã¬ããŒãã¯Excelã§ã³ã³ãã€ã«ããããããåŠçãããããŒã¿ã®éã«å€§ããªå¶éã課ããããŸãã
3.äºåã«æ§æãããã¢ã³ããŒãéçºè ã«å€æŽãå ããããšã¯ãéåžžæéã§ã¯ãããŸããã
ã¬ããŒããæ¯é±ãŸãã¯æ¯æ¥æŽæ°ããå¿ èŠãããå Žåããã®æé ã¯ã»ãšãã©ã®æ£è ã«ãšã£ãŠãéåžžã«ã¹ãã¬ã¹ã«ãªããŸãã Excel Power Queryã¢ãã€ã³ã䜿çšããMySQLã«ããŒã¿ãæžã蟌ãããšã§ãã»ãšãã©ã®ã¬ããŒãã®æŽæ°ããæŽæ°ããã¿ã³ãã¯ãªãã¯ããã ãã«æžããããšãã§ããŸãã
1.ä»»æã®æ°ã®ãœãŒã¹ããã®ããŒã¿ããSQLã¯ãšãªãä»ããŠéåžžã®ExcelããŒãã«ã«ã€ã³ããŒããããŸãã
2.倧èŠæš¡ãªããŒã¿ããŒã¹ããã§ããããŒã¿ã®ããäžéšã®ã¿ãExcelã«æžã蟌ãããšãã§ããŸãïŒããšãã°ãå¿ èŠãªåã®ã¿ã§ã°ã«ãŒãåããç®çã®æ¥ä»ç¯å²ã®åèšïŒã
3. SQLã¯ãšãªãå€æŽããã ãã§ãã¬ããŒããå€æŽã§ããŸãã 次ã«ãæšæºã®ExcelããŒã«ã䜿çšããŠç®çã®ã¬ããŒããçæããŸãã
ãã®èšäºã§ã¯ãïŒYandex Metricsãããã¹ãŠã®ããŒã¯ãŒãã®çµ±èšãããŠã³ããŒãããäŸã䜿çšããŠïŒç°¡åãªMySQLããŒã¿ããŒã¹ãæ§æããŠèªåçã«å ¥åããPower Queryã¢ãã€ã³ã䜿çšããŠ1ã€ã®ãã¿ã³ã§Excelã®ã¬ããŒããæŽæ°ããæ¹æ³ã瀺ããŸãã Power Queryã«ã¯ãSQLã¯ãšãªïŒç¹ã«åçã¯ãšãªïŒãæ±ãéã®éåžžã«å¥åŠãªæ©èœããããŸããããã«ã€ããŠã¯ãèšäºã®åŸåã§èª¬æããŸãã
MySQLïŒãŸãã¯ä»ã®äžè¬çãªããŒã¿ããŒã¹ïŒã®éžæã¯éåžžã«æçœã§ã-ç¡æã§ãæ¯èŒçåçŽã§ãæè¡çãªããªãã¯ãªãã§ããªã倧ããªããŒã¿ããŒã¹ãæäœããèœåã äŸãšããŠãAmazon WebãµãŒãã¹ã䜿çšããŸãïŒå®äŸ¡ïŒã»ãšãã©ã®å Žåã䜿çšããã€ã³ã¹ã¿ã³ã¹ã¯12ãæéç¡æã§ãïŒã
ããã§ã¯ãå§ããŸãããïŒæ¢è£œã®ããŒã¿ãæã€ããŒã¿ããŒã¹ãæ¢ã«ããå Žåã¯ãããã«Excelã®ã»ã¯ã·ã§ã³ã«é²ãããšãã§ããŸãïŒïŒ
1. AWSã«ç»é²æžã¿ã§ïŒãŸã ã¢ã«ãŠã³ãããªãå ŽåïŒãæãåçŽãªt2.microã€ã³ã¹ã¿ã³ã¹ãèµ·åããSSHã«ã¢ã¯ã»ã¹ããŸãã æåŸã®æçš¿habrahabr.ru/post/265383ã«ç°¡åãªèª¬æããããŸãã Amazon Linux AMIã®ãªã¹ãã«æåã®ã€ã³ã¹ã¿ã³ã¹ãªãã·ã§ã³ãå¿ èŠãªããšã«æ³šæããŠãã ããã å¿ èŠãªããŒãã§ã€ã³ã¹ã¿ã³ã¹ãžã®ã¢ã¯ã»ã¹ãèš±å¯ããã«ãŒã«ãèšå®ããå¿ èŠããããŸãã

ã»ãã¥ãªãã£äžã®çç±ãããIPã¢ãã¬ã¹ã«å¶éãèšå®ããããšããå§ãããŸãã åçIPãããå Žåãããã¯åé¡ã®ãããªãã·ã§ã³ã§ãã ãŸããIPã«ããMYSQLãžã®ã¢ã¯ã»ã¹ãå¶éãããšãExcelã§ãšã©ãŒãçºçããå ŽåããããŸãã IPãèšå®ãããšããã¹ãŠãæ©èœããŸãã
2.ããã¥ã¡ã³ãdocs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-ug.pdfã§èª¬æãããŠããããŒã ãé£ç¶ããŠå®è¡ããŸãã ããã¥ãŒããªã¢ã«ïŒAmazon Linuxã«LAMP WebãµãŒããŒãã€ã³ã¹ããŒã«ãããã®ç« ãå¿ èŠã§ãã ãsudo mysql_secure_installationãã³ãã³ããå®è¡ãããšãã«å ¥åãããã¹ã¯ãŒããèŠããŠãããŠãã ããã 䟿å®äžããã®ç« ã®æåŸã«èšèŒãããŠããããã«phpMyAdminãã€ã³ã¹ããŒã«ããŸãã ããã¥ã¡ã³ããããsudo sed -i -e 's / 127.0.0.1 / your_ip_address / g' / etc / ht tpd / conf.d / phpMyAdmin.confããšããè¡ãã³ããŒããå Žåããhttpd »äœåãªã¹ããŒã¹ã衚瀺ãããŸãã
ãããã®æé ã®åŸãããŒãžã§æ¬¡ã®ããŒãžãéããŸãã

3.ã»ããã¢ããäžã«å ¥åãããrootãŠãŒã¶ãŒãšãã¹ã¯ãŒãã®äžã«ç§»åããŸãã ãå€éšãããïŒã€ãŸããExcelããïŒããŒã¿ããŒã¹ã«ã¢ã¯ã»ã¹ããã«ã¯ãroot以å€ã®ãŠãŒã¶ãŒãå¿ èŠã§ãã Users-> Add userã¡ãã¥ãŒã®phpMyAdminã€ã³ã¿ãŒãã§ãŒã¹ã§ååŸããŸãã statsãŠãŒã¶ãŒãè¿œå ãããã¹ã¯ãŒããèšå®ããSELECTããã³INSERTç¹æš©ãå²ãåœãŠãŸãã åèšïŒ

4.次ã«ãããŒã¿ããŒã¿ããŒã¹ãäœæããŸãã

5.ãã®äŸã§ã¯ãYandex Metricsã®ããŒã¯ãŒãã®èšªåã®çµ±èšã§ããŒã¹ãåããŸãã ãããè¡ãã«ã¯ãseoããŒãã«ãäœæããŸãïŒidåã®A_IïŒèªåã€ã³ã¯ãªã¡ã³ãïŒãªãã·ã§ã³ããªã³ã«ããå¿ èŠãããããšã«æ³šæããŠãã ããïŒïŒ

6. Yandex MetricsããããŒã¯ãŒãã®çµ±èšãååŸããã«ã¯ã次ã®ã¹ã¯ãªããã䜿çšã§ããŸãã ãã©ã¡ãŒã¿ãŒãšããŠãã¢ããããŒãã®éå§æ¥ãšçµäºæ¥ïŒ$ startDateããã³$ endDateå€æ°ïŒãèªèšŒããŒã¯ã³ïŒã³ãŒãã«ã¯ååŸæ¹æ³ã®èª¬æãå«ãŸããŸãïŒãçµ±èšæ å ±ãååŸããã«ãŠã³ã¿ãŒçªå·ãããã³ããŒã¿ããŒã¹ãã©ã¡ãŒã¿ãŒãæå®ããå¿ èŠããããŸãïŒã€ã³ã¹ã¿ã³ã¹IDããã°ã€ã³ïŒ ãçµ±èšãïŒããã¹ã¯ãŒããããŒã¿ããŒã¹åïŒãããŒã¿ãïŒããããŸãã ãã®ã³ãŒããã€ã³ã¹ã¿ã³ã¹ã®ã«ãŒããã©ã«ããŒã«ã³ããŒããã³ãã³ããphp seo.phpããå®è¡ããŸãã
Yandex MetricããŒã¿ãã¢ããããŒãããããã®PHPã³ãŒã
<?php // $startDate = '2015-10-01'; $endDate = '2015-12-31'; // API // https://oauth.yandex.ru/ // // ID https://oauth.yandex.ru/authorize?response_type=token&client_id= // $atoken = ''; // $project = ''; // $con = mysqli_connect("ec2-....compute.amazonaws.com","stats"," ", "data"); if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); exit(); } else { echo "Connection successfull \n"; } if ($con->query("SET NAMES 'utf8'")) { echo "Names set \n"; } else { printf("Error: %s\n", $con->error); exit(); } // , ( ) $fname = "data.txt"; $fp = fopen($fname, "w"); fclose($fp); function getBatch($startDate, $endDate, $project, $offset, $limit, $atoken, $fname, $con) { // API // https://tech.yandex.ru/metrika/doc/api2/api_v1/attributes/visitssource_/search-docpage/ $ch = curl_init(); $options = array( CURLOPT_URL => 'https://api-metrika.yandex.ru/stat/v1/data?oauth_token='.$atoken.'&id='.$project.'&accuracy=full&date1='.$startDate.'&date2='.$endDate.'&dimensions=ym:s:<attribution>SearchPhrase&metrics=ym:s:visits&limit='.$limit.'&offset='.$offset, CURLOPT_RETURNTRANSFER => TRUE ); curl_setopt_array($ch, $options); $data = curl_exec($ch); curl_close($ch); // JSON $data = json_decode($data, true); // //var_dump($data); // $data['data'] , for ($i=0; $i < count($data['data']); $i++) { file_put_contents($fname, $startDate."\t".$endDate."\t".$data['data'][$i]['dimensions'][0]['name']."\t".$data['data'][$i]['metrics'][0]."\n", FILE_APPEND); if ($con->query("INSERT INTO seo (startDate, endDate, query, visits) VALUES ('".$startDate."', '".$endDate."', '".mysqli_real_escape_string($con, substr($data['data'][$i]['dimensions'][0]['name'], 0, 255))."', ".$data['data'][$i]['metrics'][0].")")) { //echo "Record done \n"; } else { printf("Error: %s\n", $con->error); exit(); } } if (count($data['data']) == 0) { return 'done'; } else { return 'more'; } } // https://tech.yandex.ru/metrika/doc/api2/api_v1/data-docpage/ // - 10 000 // $limit , $offset $limit $offset = 1; $limit = 10000; $res = 'more'; do { $res = getBatch($startDate, $endDate, $project, $offset, $limit, $atoken, $fname, $con); $offset += $limit; } while ($res == 'more'); mysqli_close($con);
ããŒã¿ããŒã¹ãžã®æ¥ç¶äžã«ãšã©ãŒãçºçããå Žåãã³ã³ãœãŒã«ã«ãšã©ãŒã衚瀺ãããå®è¡ãäžæãããŸãã å®è¡ãæåããå Žåãéžæããæéã®ããŒã¯ãŒãã®çµ±èšãååŸããŸãã

çŽ æŽããããããŒã¿ãåä¿¡ããŸããã Excelã§ããããååŸããæ¹æ³ãèŠãŠã¿ãŸãããã
Power Queryã䜿çšããŠExcelã§ããŒã¿ãã¢ã³ããŒããã
Power Queryã¯ãããŒã¿ãã¢ããããŒãããExcelã®æ©èœãæ¡åŒµããã¢ãã€ã³ã§ãã ãã¡ãããããŠã³ããŒãã§ããŸãwww.microsoft.com/en-us/download/details.aspx?id=39379 MySQLã䜿çšããã«ã¯ãMySQLã³ãã¯ã¿ãšVisual StudioïŒãã£ã¹ããªãã¥ãŒã·ã§ã³ããã€ã³ã¹ããŒã«ãããšãã«æäŸãããïŒãå¿ èŠã«ãªãå ŽåããããŸãã
1.ã€ã³ã¹ããŒã«åŸãMySQLãéžæããŸãã

2.ããŒã¹ãšããŠãã€ã³ã¹ã¿ã³ã¹ã®IDïŒã¹ã¯ãªããã®å ŽåïŒec2 -.... compute.amazonaws.comãæå®ããŸãã ããŒã¿ããŒã¹ããŒã¿ã ãã°ã€ã³ãå ¥åããã«ã¯ããããŒã¿ããŒã¹ããéžæããŸãã

3.éãããŠã£ã³ããŠã§ãseoããŒãã«ãããã«ã¯ãªãã¯ããŠä»¥äžãååŸããŸãã

ãã®ãŠã£ã³ããŠã§ã¯ãåãšè¡æ°ãå€æŽããŠã¯ãšãªã管çã§ããŸãã ããŒã¿ããŒã¹ãå°ããå Žåãæ©èœããŸãã ãã ããããŒã¿ãµã€ãºã20 MBãè¶ ããå Žåãã»ãšãã©ã®ã³ã³ãã¥ãŒã¿ãŒã®Excelã¯ããã®ãããªèŠæ±ããåã«ãã³ã°ããŸãã ããã«ããªã¯ãšã¹ãã®æ¥ä»ãŸãã¯ãã®ä»ã®ãã©ã¡ãŒã¿ãŒãå€æŽãããšäŸ¿å©ã§ãã
Power Queryã®åçã¯ãšãªã¯ãçµã¿èŸŒã¿ã®Mèšèªmsdn.microsoft.com/en-us/library/mt253322.aspxã䜿çšããŠå®è¡ã§ããŸãããã¯ãšãªã¯ãã®äžã®ãã©ã¡ãŒã¿ãŒãå€æŽãããšããç¹ã§éåžžã«äžå®å®ã§ãã èŠæ±ããäžå®ãã®ãŸãŸã«ãªãããã«ã次ã®ããšãè¡ããŸãã
1.æåã«ãå¿ èŠãªãã©ã¡ãŒã¿ãŒã瀺ãããŒãã«ãäœæããŸãã ãã®äŸã§ã¯ãããã¯ã¢ã³ããŒãã®æ¥ä»ã§ãã Excelã¯ãã»ã«ã®åœ¢åŒããã¹ããšããŠèšå®ããããšããå§ãããŸããExcelã¯ãé©åãšæãããã»ã«ã®åœ¢åŒãå€æŽããã®ã奜ãã ããã§ãã

2.åçŽã«ãã®ããŒãã«ãè€è£œããPower Queryã¯ãšãªãFrom the tableããäœæããŸãã

3.ã¯ãšãªãªãã·ã§ã³ã§ãå¿ ã2çªç®ã®åã®åœ¢åŒãããã¹ããšããŠæå®ããŸããããããªããšãåŸç¶ã®SQLã¯ãšãªãæ£ãããªããªããŸãã 次ã«ããéãããšããŠã³ããŒãããã¯ãªãã¯ããŸãã

åèšã§ãéåžžã®ããŒãã«ã®Power Queryã¯ãšãªãåãåããããããã¢ã³ããŒãã®éå§ãšçµäºã®å€ãååŸããŸãã
SQLã¯ãšãªãäœæããã«ã¯ã1ã€ã®ãªãã·ã§ã³ãç¡å¹ã«ããå¿ èŠããããŸãã[èšå®ãšèšå®]-> [ãªã¯ãšã¹ããã©ã¡ãŒã¿]-> [ãã©ã€ãã·ãŒ]ã«ç§»åãã[ãã©ã€ãã·ãŒã¬ãã«ãç¡èŠããŠããã©ãŒãã³ã¹ãæ¹åãã]ãéžæããŸãã OKãã¯ãªãã¯ããŸãã

4.ããã§ããã€ã³ã3ããã®ããŒãã«ã®å€ãæéã®éå§ãšçµäºãšããŠç€ºãããŒã¿ããŒã¹ã«èŠæ±ãè¡ããŸããåã³ãPower Queryã§ããŒã¿ããŒã¹ã«æ¥ç¶ããã¡ãã¥ãŒã®[詳现ãšãã£ã¿ãŒ]ãã¯ãªãã¯ããŸãã

ããšãã°ãã2015ããå«ãããŒã¯ãŒããããããã蚪åã®åèšãååŸããŸãã Mã§ã¯ãã¯ãšãªã¯æ¬¡ã®ããã«ãªããŸãã
let
Source = MySQL.Database("ec2-....compute.amazonaws.com", "data", [Query="select sum(visits) from seo where startDate>='"&Text.From(1{0}[])&"' and endDate<='"&Text.From(1{1}[])&"' and query like '%2015%';"])
in
Source
startDateããã³endDateãã©ã¡ãŒã¿ãŒã«ã¯ããã€ã³ã3ããã®ããŒãã«ã®å€ã瀺ãããŸãããããŒã¿ããŒã¹ã«å¯Ÿãããã®ç¬èªã®ã¯ãšãªãå®äºããã«ã¯ã¢ã¯ã»ã¹èš±å¯ãå¿ èŠã§ãããšããããã³ããã衚瀺ããããããã¢ã¯ã»ã¹èš±å¯ã®ç·šéããã¯ãªãã¯ãããã¹ãŠã®ãã©ã¡ãŒã¿ãŒãæ£ãããã«ã¢ãããããŠããããšã確èªããŠãã¯ãšãªãå®è¡ããŸãã ããã§ãSQLã¯ãšãªããåä¿¡ããå¿çãã䜿ãæ £ãã圢åŒã®éåžžã®ExcelåŒã§åŠçã§ããŸãã
5.éèŠïŒ 次åã¢ã³ããŒããæŽæ°ãããšãã¯ã次ã®æ¹æ³ã§ãããè¡ãå¿ èŠããããŸãïŒäœããã®çç±ã§ãšã©ãŒãçºçããå ŽåïŒã
-段èœ1ããè¡šã®æ¥ä»ãå€æŽãã
-[ããŒã¿]-> [æ¥ç¶]ã¡ãã¥ãŒã«ç§»åãã[ãã¹ãŠæŽæ°]ãã¯ãªãã¯ããŸãã

ãã®å Žåããã¹ãŠã®ãªã¯ãšã¹ããæ£ããå®è¡ãããã¬ããŒããèªåçã«æŽæ°ãããŸãã å šäœãšããŠãã¬ããŒããæŽæ°ããã«ã¯ãã¯ãšãªãã©ã¡ãŒã¿ãå€æŽãã[ãã¹ãŠæŽæ°]ãã¯ãªãã¯ããã ãã§ãã