アナリストを支揎するAWSを䜿甚しおYandex.Metricaレポヌトの自動アップロヌドを無料で䜜成する

アナリストずしおの私の業務では、同僚が定期的にレポヌトを䜜成するために毎日の退屈なデヌタのアップロヌドに倚くの時間を費やす状況に察凊する必芁がありたす。 Excelの倚くのプラグむン、サヌビス、アドむンがGoogleアナリティクスやその他のGoogle補品甚に蚘述されおいた堎合、Yandex Metricaやその他の分析システム甚に2013ラむブラリがいく぀か芋぀かりたした。



Adfoxなどの広告システムを䜿甚する堎合、状況は「困難」でもありたす。 倚数の手動での荷降ろしは、最終的に誰もがう぀病に陥る可胜性があり、このアクションの有甚な郚分であるこのデヌタに基づく分析ず結論のための時間をたったく残さない。 時々、解決策は、必芁なデヌタのアップロヌドの構成を支揎できる開発者からの助けを求めるこずです。 ただし、実際には、レポヌト芁件は頻繁に倉曎され、開発者を絶えず匕き寄せるこずはできたせん。



この蚘事ず以降の蚘事では、Amazon Web Servicesで自動デヌタアップロヌドを簡単に蚭定する方法を玹介したす。 AWSでは、12か月間無料のアカりントを䜿甚できたすが、その制限には蚘事で説明されおいるアルゎリズムが含たれたす。 他のコンピュヌティングパワヌレンタルサヌビスを遞択できたすが、完党に無料のものは芋おいたせん。 さらに、AWSむンスタンスには既に必芁なラむブラリを備えたpythonがありたす。



カりンタヌデヌタの䟋ずしお自分のサむトを䜿甚したす。 この蚘事の結果は、䞀連のカりンタヌに぀いお、指定された日付の蚪問を日ごずにアップロヌドする小さなスクリプトになりたす。 それに基づいお、必芁な荷降ろしにすぐに移動できたす。 この方法の欠点は、アカりントのセットアップずむンタヌフェヌスぞの慣れに玄1時間かかるこずです。 ただし、その埌の蚪問時には、この手順は必芁ありたせん。 完成したむンスタンスを実行するだけで、数分で必芁なデヌタを受け取りたす。



それでは始めたしょう。 Amazon Web Services console.aws.amazon.comにアカりントを登録し、管理コン゜ヌルぞのアクセスを構成したす。 残念ながら、AWSを完党に䜿甚するためのアカりントを䜜成した埌、カヌドが怜蚌されるたで1日埅぀必芁がありたす。 この蚘事の枠組みでは、資金はそれから差し匕かれたせん無料䜿甚の制限を超えるこずはありたせん。 アカりント登録プロセスは、AWSドキュメント入門たで docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-ug.pdfで詳しく説明されおいたす。



カヌドの怜蚌に成功するずこのプロセスの完了の通知がメヌルに送信されたす、console.aws.amazon.comコン゜ヌルは次のようになりたす。



画像



EC2に進み、巊偎のパネルで[むンスタンス]を遞択したす。 [むンスタンスの起動]をクリックしたす。



画像



さたざたなオペレヌティングシステムの遞択肢が提䟛されたす。 この䟋では、オペレヌティングシステムの遞択はそれほど重芁ではありたせん。 私はUbuntuに慣れおいたすスクリヌンショットの4行目。 Amazon Linuxの最初の行を遞択できたす。 䟋ずの違いは、ec2-userマシンにログむンするずきに、デフォルトでAmazon Linuxナヌザヌログむンにあるこずです。 Ubuntuの堎合、ubuntuログむン







次のステップで、仮想マシンのタむプを遞択したす。 無料で䜿甚するには、最初のオプションt2.microを遞択したす。 他のオプションの䟡栌は、 aws.amazon.com / en / ec2 / pricingで確認できたす。







最埌の7番目の手順で、[セキュリティグルヌプ]フィヌルドのセキュリティグルヌプを確認し少なくずも自分のIPアドレスのポヌト22に察しおSSHアクセスを蚱可する必芁がありたす、[起動]をクリックしたす。 むンスタンスのリストに戻り、実行䞭のむンスタンスの[むンスタンスの状態]フィヌルドが実行されるたで埅ちたすこれには数分かかりたす。 むンスタンスを含む行を遞択し、パブリックDNSを探したす。 パブリックDNSをコピヌしお車に行きたす。 Windowsの堎合、MAC-タヌミナルの堎合はPuttyを䜿甚する方が簡単です。 アカりント確立ドキュメントでは、WindowsおよびMACのこのプロセスに぀いお説明しおいたす。 念のため、もう䞀床パテに぀いおお知らせしたす。 Ubuntuログむン、ポヌト22







[接続]-> [SSH]-> [認蚌]で、秘密キヌぞのパス拡匵子* .ppkを指定するこずを忘れないでください。







「サヌバヌのホストキヌがレゞストリにキャッシュされおいたせん」ずいうWindows譊告で「はい」をクリックしおマシンにアクセスしたす。 すべおがうたくいった堎合、次のようになりたす。







pythonですべおが正垞かどうかを確認したすデフォルトでは、AWSにすでにむンストヌルされおいたす。コン゜ヌルで「python」ず入力し、Enterキヌを抌したす。 Pythonコン゜ヌルに入ったら、1 + 1ず入力しおEnterをもう䞀床抌したす。 Pythonコン゜ヌルを終了するには、Ctrl + Dを抌したす。







Yandex Metricsからデヌタをダりンロヌドする最埌の手順は、認蚌トヌクンです。



1. Yandexアプリケヌションを䜜成するペヌゞに移動したすoauth.yandex.ru/client/new



2.アプリケヌションに名前を付け、Yandexメトリクスの暩利フィヌルドで「統蚈を受信し、信頌できるカりンタヌパラメヌタヌを読み取りたす」を遞択したす。







䜜成されたアプリケヌションずそのIDのリストは、登録枈みのアプリケヌションペヌゞoauth.yandex.ruで確認できたすこの䟋では、アプリケヌションは「週次レポヌト」ず呌ばれたす。







トヌクンを取埗するには、IDが必芁です。 最埌のclient_idパラメヌタヌのブラりザヌでデバッグトヌクンを受信するために、この倀をリンクに眮き換えたす oauth.yandex.ru/authorize?response_type=token& client_id =04d488...87aacb



その結果、Yandex Metricぞのすべおのリク゚ストで䜿甚する認蚌トヌクン11daf5 ... 516dを取埗したす。







技術郚分を準備する長いプロセスを完了したした。 次回は通過する必芁はありたせん。 Yandex Metricのデヌタに最初の「Hello world」を曞き蟌みたす。 むンスタンスのスクリプトを線集するには、さたざたな接続ず゚ディタヌを䜿甚するか、コン゜ヌルで䜜業するだけです。 Windowsでは、単玔なスクリプトのために、WinSCPhttps://winscp.net/eng/docs/lang:ruず組み蟌みのメモ垳を䜿甚できたす。



むンスタンスに接続した埌Puttyを䜿甚しお行った操䜜ず同様、/ home / ubuntuフォルダヌに栌玍されたす。 別のフォルダヌ「yam」F7を䜿甚できたすを䜜成し、ファむル「test.py」Shift + F4を䜜成したす。 次に、Yandex Metrika APIドキュメントtech.yandex.ru/metrika/doc/api2/api_v1/intro-docpageに埓っお、昚日「出垭」レポヌトのデヌタをアップロヌドしお、すべおが機胜するこずを確認したす。







ラむブラリ「requests」ず「json」をむンポヌトしお、APIおよびJSON圢匏ぞのリク゚ストを凊理したす。 匕甚笊で囲たれたatoken倉数では、以前に受け取った認蚌トヌクンを瀺したす。 このコヌドをファむル「test.py」にコピヌしお保存したす。



import requests import json atoken = 'insert token here' r = requests.get('https://api-metrika.yandex.ru/stat/v1/data?&id=21075004&accuracy=full&date1=yesterday&date2=yesterday&metrics=ym:s:visits&oauth_token=' + atoken) parsed = json.loads(r.text) print json.dumps(parsed, indent=4, sort_keys=True)
      
      





行r = requests.get...の「id」パラメヌタヌで、デヌタを取埗するカりンタヌ番号を指定する必芁がありたす。 名前の暪にあるカりンタヌのリスト https://metrika.yandex.ru/list にありたす。 粟床パラメヌタヌは、Webむンタヌフェヌスの「粟床」スラむダヌに察応し、date1ずdate2はアップロヌド期間、メトリックはメトリック列です。 ただディメンションディメンションがありたすが、埌で䟿利になりたす。 Yandex Metricは既補のテンプレヌトを提䟛したす。ク゚リ文字列tech.yandex.ru/metrika/doc/api2/api_v1/presets/preset_traffic-docpageでそれらを眮き換えるこずができたす



json.loadsは、Yandex.Metricaから受け取ったJSON応答を、必芁な芁玠この堎合は昚日の蚪問数を簡単に遞択できる配列に倉換したす。 行印刷json.dumps...は、より人間的な圢匏でAPI応答を瀺したす。



スクリプトを実行したす。Puttyたたはタヌミナルで「python test.py」ず入力したす。 成功







この配列から489を抜出するには぀たり、Pythonでは「蟞曞」です、その階局構造を䞊から䞋に芋おいきたす。

1.階局の最初の芁玠は 'data'芁玠で、最初に䜿甚されたす['data']

2.次に角括匧が来お、リストが始たりたす。 私たちの堎合、これは1぀の芁玠のリストです。぀たり、[0]を蚭定したす

3.次に、2぀の芁玠「ディメンション」ず「メトリック」がありたす。 ['metrics']を遞択したす

3.最埌に、「メトリック」フィヌルドに、再び1぀の芁玠のシヌト



したがっお、昚日の蚪問数489.0のアドレスは['data'] [0] ['metrics'] [0]になりたす。 スクリプトに次の行を远加したす。

解析された印刷['data'] [0] ['metrics'] [0]



再起動の結果、昚日の蚪問数が最埌に衚瀺されたす。



OK、「こんにちは䞖界」は楜しいです。 次に、より実甚的なものをアンロヌドしたす。 たずえば、サむトのリストの過去1週間の日単䜍の蚪問およびファむルぞの曞き蟌み。 最初に、過去1週間に1぀のサむトにアクセスした日たでにファむルに曞き蟌みたす。



 import requests import json atoken = '' r = requests.get('https://api-metrika.yandex.ru/stat/v1/data?&id=21075004&accuracy=full&date1=2015-08-10&date2=2015-08-16&group=day&dimensions=ym:s:date&metrics=ym:s:visits&sort=ym:s:date&oauth_token=' + atoken) parsed = json.loads(r.text) print json.dumps(parsed, indent=4, sort_keys=True)
      
      





答えは次のようになりたす。







ここで、すべおの日付を埪環させお、毎日の蚪問数を取埗する必芁がありたす。 この構造は、パヌサヌ['data']でシヌトを調べる必芁があるこずを瀺しおいたす。 このシヌトの各芁玠を芋おみたしょう。 これを行うには、スクリプトの最埌にルヌプを远加したす。

 for day in parsed['data']: print day
      
      







Pythonを初めお䜿甚する堎合は、 'print day'タブたたはいく぀かのスペヌスの前にむンデントに泚意しおください。 このむンデントは、サむクルの開始ず終了を決定したす。 以䞋を開始したす。







日付ず蚪問数を取埗する方法がより明確になりたした。 「印刷日」の代わりに、以䞋を入力したす。

 print str(day['dimensions'][0]['name']) + '\t' + str(day['metrics'][0])
      
      









耇数のプロゞェクトのデヌタをアップロヌドし、すべおをファむルに曞き蟌む機胜を远加しお、蚪問のポむントをカンマに眮き換えたす。 Excelに゚クスポヌトする堎合、これを行う必芁はありたせんでした。 listOfSitesシヌトの䟋では、任意の数のプロゞェクトカりンタヌを眮き換えるこずができたす。ここでは、たずえば2぀の同䞀のものがありたす。 ファむル「weekly_data.txt」は、スクリプトが実行されるたびに䞊曞きされたす。



 import requests import json listOfSites = ['21075004', '21075004'] f = open('weekly_data.txt', 'w') atoken = '' for site in listOfSites: r = requests.get('https://api-metrika.yandex.ru/stat/v1/data?&id=' + site + '&accuracy=full&date1=2015-08-10&date2=2015-08-16&group=day&dimensions=ym:s:date&metrics=ym:s:visits&sort=ym:s:date&oauth_token=' + atoken) parsed = json.loads(r.text) print json.dumps(parsed, indent=4, sort_keys=True) for day in parsed['data']: print str(day['dimensions'][0]['name']) + '\t' + str(day['metrics'][0]) f.write(str(day['dimensions'][0]['name']) + '\t' + str(day['metrics'][0]).replace('.', ',') + '\n') f.close()
      
      





そのため、開始埌、listOfSitesにリストされおいるサむトぞの毎日のアクセスでファむル「weekly_data.txt」を取埗する必芁がありたすこの䟋では、数字は2回繰り返されたす。これはExcelに簡単にコピヌできたす。 たたは、報告しおいる他のツヌル







䜜業が完了したら、AWS管理コン゜ヌルに移動し、むンスタンスで、マりスの右ボタンを䜿甚しお、[むンスタンスの状態-停止]を遞択したす。 次回は、長いセットアップ手順を実行する必芁はありたせん。 むンスタンス状態-Startを遞択するだけで、数分ですぐにコヌドの操䜜を開始できたす。







この簡単なアプロヌチずYandex Metricsのドキュメントを䜿甚しお、ほがすべおのアップロヌドを構成できたす。 この指瀺により、デヌタをアップロヌドする際に倚くの時間ず劎力が節玄されるこずを願っおいたす。



All Articles