Imaginați-vă că aveți un set mare de date cu milioane de rânduri și că vă confruntați cu sarcina de a extrage informații din date. Cum înțelegeți un set mare de date? Răspunsul simplu la această întrebare este că facem acest lucru prin intermediul vizualizării datelor, însă exact ceea ce este acesta?
Vizualizarea datelor reprezintă reprezentarea imaginară a datelor pentru a afla ce este ascuns în interiorul informațiilor. În această serie de trei părți, vom crea o aplicație de vizualizare pentru a extrage informații și a face sens unui set mare de date.
Interogarea unor bucăți mari de date fără hardware adecvat poate duce la probleme de performanță. Google oferă o soluție la această problemă sub forma BigQuery. Susținută de infrastructura Google, vă permite să căutați fragmente mari de date. Vom folosi o set de date de la Google BigQuery pentru aplicația noastră de vizualizare.
În acest tutorial, vă duc în procesul de creare a unei aplicații de vizualizare utilizând Python, Google BigQuery și biblioteca JavaScript D3.js. Vom folosi Google App Engine (sau GAE) pentru a găzdui aplicația noastră. Acest tutorial presupune că aveți cunoștințe de bază despre Python și JavaScript. Pentru a crea grafice, vom folosi D3.js.
Rețineți, de asemenea, că codul din tutorialul de mai sus este disponibil pe GitHub, iar un demo este găzduit pe AppSpot.
Să începem prin stabilirea mediului de dezvoltare. Descărcați kitul SDK Google App Engine Python și extrageți-l. Vom folosi frameworkul webapp2 pentru Python.
Din documentația Google:
O aplicație webapp2 are două părți:
1) una sau mai multe clase RequestHandler care procesează cererile și construiesc răspunsuri
2) o instanță WSGIApplication care direcționează cererile primite către agenții de procesare pe baza adresei URL.
Punctele menționate anterior vor deveni mai clare atunci când vom crea clasa noastră de solicitanți de cereri. Creați un director numit PythonD3jsMashup
care va fi directorul nostru de proiect. Navigați la directorul proiectului și creați un fișier numit app.py
. Acesta va fi modulul nostru de aplicare. Să creăm o clasă de gestionare a solicitărilor pentru a procesa cererea și pentru a construi un răspuns și o instanță WSGIApplication pentru cererile de traseu.
Iată cum app.py
ar trebui sa arate:
importați webapp2 class ShowHome (webapp2.RequestHandler): def get (self): ## Codul de redare a primei pagini ## Aici este instanța aplicației WSGI care rutează cererile application = webapp2.WSGIApplication ([('/', ShowHome) , debug = True)
Când un /
cererea are loc, este direcționată către ShowHome
clasa care redă pagina de pornire. Să scriem codul Python pentru a afișa pagina noastră de pornire. Mai întâi, creați un nou dosar numit Template-uri
în PythonD3jsMashup
pliant. În interiorul acestuia, creați o pagină HTML numită index.html
.
Ar trebui să conțină următorul cod:
Aplicație de vizualizare a datelor
- Acasă
- Cod sursa
- Despre
Aplicație de vizualizare a datelor
Python & D3.js Mashup app
Click aici
© Compania 2014
Pentru a face șabloane, va trebui să importem biblioteca de șabloane. După aceasta, îl vom folosi pentru a reda index.html
pagina de mai jos:
import webapp2 de la google.appengine.ext.webapp clasa de importare a importului ShowHome (webapp2.RequestHandler): def get (auto): temp_data = temp_path = 'Templates / index.html' auto.response.out.write (template.render (temp_path, temp_data)) aplicație = webapp2.WSGIApplication ([('/', ShowHome),], debug = True)
Apoi, navigați la directorul de proiect PythonD3jsMashup
și creați un fișier numit app.yaml
. Acest fișier va funcționa ca fișier de configurare pentru aplicația noastră. Ar trebui să arate astfel:
aplicație: versiune aplicată: 1 runtime: python27 api_version: 1 threadsafe: true handlers: - url: /.* script: app.application
După cum puteți vedea, am definit o serie de lucruri în app.yaml
. Majoritatea parametrilor sunt explicabili. stivuitoare
directiva impune ca fiecare cerere URL care se potrivește /.*
să fie manipulate de obiectul aplicației în aplicaţia
modul.
Pentru a rula aplicația local, navigați la GAE SDK
și executați următoarea comandă:
./dev_appserver.py
Punctați browser-ul dvs. la http: // localhost: 8080 și ar trebui să vedeți această pagină:
Apoi, vom implementa aplicația noastră pe Google App Engine. Pentru a implementa aplicația, conectați-vă mai întâi la consola GAE:
Din tabloul de bord, faceți clic pe Creați aplicația
buton.
Apoi, veți vedea un ecran similar cu cel prezentat mai jos. Introdu un tip Identificator de aplicație
și Titlul aplicației
pentru aplicație și clic Creați aplicația
.
Odată ce aplicația este înregistrată cu succes, veți fi întâmpinat cu un mesaj de succes:
Notați textul roșu care va fi folosit ca identificator de aplicație mai târziu.
Faceți clic pe tablou de bord
legătură. Din meniul din stânga din tabloul de bord, sub Administrare
fila, faceți clic pe Setările aplicației
. Veți vedea următorul ecran:
Luați notă de Numele contului de serviciu
. Avem nevoie de asta în consola dezvoltatorului Google.
Apoi, modificați cerere
nume pentru a pythond3jsmashup
în app.yaml
.
aplicație: versiunea pythond3jsmashup: 1 runtime: python27 api_version: 1 threadsafe: true handlers: - url: /.* script: app.application
Acum, pentru a implementa aplicația în GAE, navigați la GAE Python SDK și tastați următoarea comandă:
./appcfg.py actualizare PythonD3jsMashup /
După implementare, încercați să navigați în URL-ul AppSpot.
Pentru a începe cu Google BigQuery, conectați-vă la consola Google API. Ar trebui să vedeți un tablou de bord care să indice toate proiectele disponibile în contul dvs. Google. Faceți clic pe denumirea proiectului PythonD3jsMashup
.
Luați notă de Numarul proiectului, pe care o vom folosi în timpul conectării la Google BigQuery.
Din meniul din stânga, faceți clic pe API și auth tab. Din elementele listate faceți clic pe API-uri. Acum ar trebui să vedeți o listă de API-uri disponibile:
BigQuery API
este oprit. Faceți clic pe OFF
pentru ao transforma PE
.
Faceți clic pe denumirea proiectului pythond3jsmashup
din meniul din stânga și faceți clic pe Permisiuni. Clic Adăugați membru și adăugați Numele contului de serviciu (pe care am notat-o mai devreme) cu permisiunile "Pot edita" după cum se arată mai jos:
Până acum, am creat aplicația noastră simplă și am implementat-o pe GAE cu activarea API-ului BigQuery. Apoi, vom fi conectați la unul din seturile de date disponibile pe BigQuery.
Să începem prin crearea unei noi pagini numite Template-uri / chart.html
unde vom arăta vizualizarea. Creați o metodă pentru a direcționa Click aici
link pe pagina noastră de pornire la chart.html
.
Iată cum arată:
clasa showChartPage (webapp2.RequestHandler): def get (auto): temp_data = temp_path = 'Templates / chart.html' auto.response.out.write (template.render (temp_path, temp_data))
Modificați, de asemenea, solicitantul să solicite traducerea cererii /diagramă
la ShowChartPage
așa cum se arată mai jos:
aplicație = webapp2.WSGIApplication ([('/ diagram', ShowChartPage), ('/', ShowHome), debug = True)
Apoi, modificați href
atributul Click aici link-ul după cum se arată:
Click aici
Acum, încercați să rulați aplicația și faceți clic Click aici, și ar trebui să fii redirecționat la chart.html
.
Apoi, vom încerca să autentificăm aplicația noastră cu Google BigQuery și să preluăm unele date. Pentru autentificare, vom solicita clientul Google API Python. Descarca google-api-python-client-gae-1.2.zip
și extrageți-l în dosarul proiectului.
Includeți următoarele biblioteci în app.py
.
import httplib2 din importul apiclient.discovery construi din importul oauth2client.appengine AppAssertionCredentials
În primul rând, pentru a interoga un set de date de la BigQuery, trebuie să construim un serviciu BigQuery după cum se arată:
url = 'https://www.googleapis.com/auth/bigquery' credentials = AppAssertionCredentials (scope = url) httpss = credentials.authorize (httplib2.Http ()) bigquery_service = = httpss)
În al doilea rând, trebuie să creați o interogare pe care o vom executa împotriva setului de date BigQuery. Vom folosi setul de date Shakespeare. Iată interogarea pe care o vom executa împotriva setului de date:
queryData = 'interogare': 'SELECT cuvânt FROM [publicdata: samples.shakespeare] LIMIT 1000'
Pentru a interoga datele, vom crea o lucrare din bigquery_service
:
tableData = bigquery_service.jobs ()
Și apoi interogare de la job-ul creat:
răspuns = tableData.query (projectId = PROJECT_NUMBER, body = queryData) .execute ()
A inlocui NUMARUL PROIECTULUI
cu numărul proiectului pe care l-am notat mai devreme. Deci, aici este modificat app.py
:
import httplib2 import webapp2 din șablonul de import google.appengine.ext.webapp de la apiclient.discovery import build de la oauth2client.appengine import AppAssertionCredentials url = 'https://www.googleapis.com/auth/bigquery' PROJECT_NUMBER = 'xxxxxxxxxxxxx' credentials = AppAssertionCredentials (scope = url) httpss = credentials.authorize (httplib2.Http ()) bigquery_service = construiți ('bigquery', 'v2', http = httpss) class ShowChartPage (webapp2.RequestHandler) temp_path = 'Șabloane / diagram.html' queryData = 'interogare': 'SELECT cuvânt FROM [publicdata: samples.shakespeare] LIMIT 1000' tableData = bigquery_service.jobs (response = tableData.query (projectId = PROJECT_NUMBER, ()) .execute () auto.response.out.write (răspuns) # self.response.out.write (template.render (temp_path, temp_data)) clasa ShowHome (webapp2.RequestHandler): def get (self): template_data = template_path = 'Șabloane / index.html' auto.response.out.write (template.render (calea șablonului, datele șablonului)) a pplication = webapp2.WSGIApplication ([('/ diagram', ShowChartPage), ('/', ShowHome), debug = True)
Răspunsul interogării va fi tipărit pe chart.html
. Salvați tot codul și încărcați codul modificat în GAE folosind appcfg.py actualizare PythonD3jsMashup /
.
Acum, dacă direcționați browserul la http://pythond3jsmashup.appspot.com/chart, veți vedea răspunsul json returnat din interogarea setului de date.
În acest tutorial, am creat o aplicație Python și am implementat-o pe Google App Engine. Am conectat aplicația noastră la Google BigQuery și am preluat datele din setul de date disponibil în mod gratuit.
Apoi, vom încerca să analizăm datele preluate din Google BigQuery și să le vizualizăm utilizând biblioteca JavaScript D3.js. Între timp, vă rugăm să nu ezitați să lăsați orice întrebări sau comentarii în feed-ul de mai jos.