Organisaatiot tallentavat tyypillisesti yritys- ja asiakastietoja tietokantoihin, kuten Amazon Relational Database -palvelu (Amazon RDS) ja Amazonin punainen siirto, ja haluavat usein rikastuttaa näitä tietoja integroimalla ulkoisiin palveluihin. Yksi tällainen rikastaminen on lisätä paikkatietoja, kuten osoitteen sijaintikoordinaatit. Käyttöönoton kanssa Amazonin sijaintipalvelu, sinulla on nyt pääsy geospatiaalisiin toimintoihin, kuten kartan visualisointiin, geokoodaukseen ja käänteiseen geokoodaukseen käyttämällä datan tarjoajia, kuten ESRI ja TÄÄLTÄ.
Lisäksi Amazon Redshift- ja RDS -tietokantojen kyky soittaa AWS Lambda toimintoja käyttäjän määrittämien toimintojen (UDF) kautta, voit nyt integroida nämä tietokannat Amazon-paikannuspalvelun tarjoamiin paikkatietotoimintoihin. Lisätietoja Amazon Redshiftin käyttäjän määrittämistä toiminnoista on kohdassa Skalaarisen Lambda UDF: n luominen.
Tässä viestissä otamme Amazon Redshift -tietokantaan tallennettuja asiakasosoitteita ja soitamme Amazon Location Servicen geokoodausliittymille löytääksesi osoitteiden koordinaatit ja säilyttääksesi ne tietokannassa. Jos käytät Amazon RDS -tietokantoja, katso Käytä Amazon -paikannuspalvelua Amazon Aurorasta.
Edellytykset
Ennen kuin aloitat, varmista, että sinulla on seuraavat edellytykset:
- Ymmärtäminen peruskäsitteistä, kuten AWS-henkilöllisyyden ja käyttöoikeuksien hallinta (IAM) -roolit ja -käytännöt, Lambda -toiminnot ja Amazon Redshift.
- Amazon Redshift -klusteri, jossa on taulukko, joka sisältää asiakasosoitteet ja seuraavat tiedot: kadun numero, kadun nimi, kadun tyyppi, kunnan nimi, osavaltion tai maakunnan koodi, posti- tai postinumero- ja maakoodi. Tarvitset myös sarakkeen osoitteen koordinaattien tallentamiseen.
- Valitsemasi SQL -kehittäjätyökalu yhteyden muodostamiseen Amazon Redshift -klusteriin.
- An Amazon QuickSight tili, jolla on pääsy Amazon Redshiftiin.
Ratkaisun yleiskatsaus
Ratkaisumme koostuu seuraavista osista:
- Python Lambda -toiminto soittaa
search_place_index_for_text
toiminto. Tämä toiminto syöttää tekstinsyötön ja palauttaa koordinaatit pituus- ja leveysastearvoina jokaiselle hakutulokselle. - IAM -rooli, jonka avulla Lambda voi soittaa
SearchPlaceIndexForText
Amazon Location Service -toiminto. - Lambda -UDF Amazon Redshift -tietokannassa Lambda -toiminnon käynnistämiseksi.
- IAM -rooli, jonka avulla Amazon Redshift voi käyttää Lambda -toimintoa.
- SQL -käskyt Amazon Redshift -tietokannan tietueiden koordinaattitietojen päivittämiseksi ja valitsemiseksi soittamalla Lambda UDF: ään.
- QuickSight -tietojoukko, joka käyttää SQL -käskyä päästäkseen koordinaattitietoihin.
- QuickSight -analyysi, joka näyttää osoitteen sijainnin paikkatietokaaviossa.
Seuraava kaavio havainnollistaa ratkaisuarkkitehtuuriamme:
Ratkaisun toteuttamiseksi suoritamme seuraavat vaiheet:
- Määritä paikkahakemistoresurssi Amazon Location Servicelle.
- Luo yhteinen osoitteen geokoodaustoiminto.
- Kutsu Amazonin sijaintipalvelusovellusliittymä Amazon Redshiftiltä.
- Luo Lambda -toiminto.
- Määritä Amazon Redshift.
- Suorita SQL -käskyt Lambda -toiminnon käynnistämiseksi.
- Visualisoi osoitteiden sijainnit QuickSightissa.
Kiinnitä erityistä huomiota tässä viestissä käytettyihin nimiin ja parametreihin; niiden on vastattava ja oltava johdonmukaisia kaikissa ratkaisukomponenteissa.
Koko koodi löytyy osoitteesta GitHub. Koodi sisältää myös AWS CloudFormation -malli.
Määritä paikkahakemistoresurssi Amazon Location Servicelle
Amazon Location Service käyttää paikkaindeksiresurssia geokoodaukseen ja käänteiseen geokoodaukseen. Aloitetaan uuden paikkahakemistoresurssin luominen. Tililläsi voi olla oletuspaikkahakemisto, mutta emme käytä sitä tässä viestissä, koska sitä ei ole määritetty tallennustilaa varten.
- Käytä Amazon Location Service -konsolin navigointipaneelia käynnistääksesi ohjatun toiminnon uuden paikkahakemiston luomiseksi.
- varten Nimi, tulla sisään
placeindex.redshift
. - varten Tietojen tarjoaja, valitse jompikumpi paikkatiedostosi tiedon tarjoajista.
- varten Tietojen tallennusvaihtoehdotvalitse Kyllä, tulokset tallennetaan koska tallennamme geokoodaustulokset tietokantakenttään.
- Jätä kaikki muut arvot oletusarvoiksi ja valitse Luo paikkahakemisto.
Käytämme Lambda -koodin paikkaindeksin nimeä parametrina search_place_index_for_text
API-kutsu.
Luo yhteinen osoitteen geokoodaus Lambda -toiminto
Luo seuraavaksi Lambda -toiminto Amazon Location Service API: n kutsumiseksi. Käytämme tätä toimintokoodia uudelleen sekä Amazon Redshiftissä että Amazon RDS: ssä, koska taustalla oleva palvelukutsu on sama.
Virheiden käsittely on ohitettu tässä koodinpätkässä lyhyyden vuoksi. Koko koodi löytyy osoitteesta GitHub.
Käytämme country_code
rajoittaa search_place_index_for_text
Sovellusliittymä tiettyyn maahan käyttämällä ISO 3166-1 alfa-3 maatunnus. Amazon Location Service heittää poikkeuksen, jos syöte on annettu, mutta se ei sisällä kelvollista arvoa.
Luo uusi tiedosto geocode.py
seuraavalla koodinpätkällä:
Kutsu Amazonin sijaintipalvelusovellusliittymä Amazon Redshiftiltä
Jokainen Amazon Redshift -laskentasolmu kutsuu Lambda -toimintoja rinnakkain palauttaakseen tulokset nopeasti. Toiminto palauttaa onnistuneen tai epäonnistuneen tilakoodin tulosten mukana. Vian sattuessa virheilmoitus voidaan palauttaa.
Amazon Redshift Lambda UDF -kutsu tarjoaa arguments
luettelo, joka sisältää järjestetyn luettelon syöttöparametreista, jotka edustavat tietokantatietueiden kenttiä (katso seuraava koodi). Toiminto lukee syöttöparametrit luettelokohdan mukaan ja yhdistää ne muuttujiin pyynnön käsittelemiseksi.
Käyttöliittymä odottaa, että tulokset palautetaan samassa järjestyksessä ja sisältävät saman määrän kohteita kuin pyyntö. Katso seuraava koodi:
Poikkeustapauksessa toiminto voi palauttaa epäonnistuneen tilan virhesanoman kanssa:
Luo Lambda-toiminto
Luomme nyt Lambda -funktion GeocodeAddresses-Redshift
käyttämällä Python -ajonaikaista.
Virheiden käsittely on ohitettu tässä koodinpätkässä lyhyyden vuoksi. Koko koodi löytyy osoitteesta GitHub.
- Luo tiedosto
geocode.py
kuten edellisessä osassa on kuvattu.
On tärkeää asettaa Lambda -toiminnon aikakatkaisuaika pidemmäksi, jotta voit käsitellä useita tietueita yhdessä puhelussa.
- Korvaa luotu oletuskoodi
lambda_function.py
seuraavalla koodilla:
- Tämä toiminto vaatii luvan soittaa
search_place_index_for_text
Sovellusliittymä geokoodaamaan osoitteet käyttämällä paikkahakemistoaplaceindex.redshift
jonka loimme aiemmin. - Päivitä Lambda -funktion IAM -rooli lisäämään seuraava sisäinen käytäntö
GeocodeAddresses-Redshift-policy
:
Määritä Amazon Redshift
Nyt luomme uuden Lambda UDF: n Amazon Redshift -käyttöjärjestelmään ja määritämme sen käyttämään IAM -roolia, joka antaa oikeudet käyttää tiettyä Lambda -toimintoa. Lisätietoja on kohdassa Skalaarisen Lambda UDF: n luominen.
- Luo IAM-rooli
Redshift-Lambda-role
ja lisää seuraava upotettu käytäntöRedshift-Lambda-policy
tähän rooliin, jotta Amazon Redshift voi käyttääGeocodeAddresses-Redshift
luomamme toiminto:
Meidän täytyy liittää tämän IAM -roolin Amazon Redshift -klusteriin.
- Valitse Amazon Redshift -konsolista käytettävä klusteri.
- Alle Hallinnoi IAM -rooleja, lisää
Redshift-Lambda-role
rooli klusterille. - Odota, että klusteria muutetaan ja se tulee sisään
Available
tila.
Nyt me Luo Amazon Redshift -ulkoinen toiminto Lambda -toiminnon käynnistämiseksi.
- Käytä haluamaasi SQL -editoria muodostaaksesi yhteyden Amazon Redshift -klusteriin ja luo uusi ulkoinen toiminto
f_geocode_address
Amazon Redshiftissä käyttämällä seuraavaa koodia:
Tämä ulkoinen toiminto kutsuu Lambda -toimintoa käyttämällä kohdassa annettuja käyttöoikeuksia Redshift-Lambda-role
luomamme rooli.
Käynnistä Lambda -toiminto suorittamalla SQL -käskyt
Olemme nyt valmiita suorittamaan SQL -käskyjä, jotka voivat ottaa osoitetietueita customer_address
taulukko Amazon Redshift -tietokannassa ja geokoodaa ne Amazon Location Service -palvelun avulla.
Jos sinulla ei ole customer_address
taulukkoon, voit luoda sen käyttämällä komentosarjaa, joka sisältyy koko koodiin GitHub.
Voit halutessasi valita geokoodaustulokset osana SQL -käskyä, kuten seuraavassa koodissa. On tärkeää ymmärtää, että SELECT SQL -lausekkeista kutsutut Lambda -funktiot sisältävät kenttiä useista tietokantatietueista jokaisessa puhelussa. Siksi toiminnon aikakatkaisu on asetettava pidempään, jotta voidaan käsitellä useita tietueita yhdessä puhelussa.
Geokoodaustulokset voidaan säilyttää erillisessä tietokantataulukossa Amazon Redshiftissä. Voimme sitten jäsentää tallennetut JSON -tulokset maantieteellisten koordinaattien poimimiseksi.
Otetaan nyt maantieteelliset koordinaatit tuloskentästä.
Visualisoi osoitteen sijainti QuickSightin avulla
Määritetään tietojoukko QuickSightissa ja luodaan analyysi tälle tietojoukolle.
- Luo uusi Amazon Redshift -tietolähde
Redshift-Geocode
joko käyttämällä automaattisesti löydettyä tai manuaalisesti määritettyä päätepistettä. - Luo uusi tietojoukko tietolähteelle käyttämällä edellistä SELECT -käskyä mukautettuna SQL: nä.
Nyt olemme valmiit määrittämään analyysimme.
- Luo QuickSight -konsolissa uusi QuickSight -analyysi käyttämällä osoitteen sijaintitietojoukkoa.
- Valitse Kohta kartalla visuaalinen tyyppi.
- Valitse pituusaste ja leveysaste kentät kenttäluettelosta ja vedä ne kohtaan Geospatial kenttäkaivot.
Sinun pitäisi nyt nähdä kartalla pisteitä, jotka edustavat asiakasosoitteen sijainteja.
Yhteenveto
Onnittelut! Olemme onnistuneesti integroineet Amazon -paikannuspalvelun Amazon Redshift- ja geokoodatut osoitetiedot Amazon Redshift -taulukkoon poistumatta SQL -ympäristöstämme. Rikastimme osoitetietoja lisäämällä sijaintikoordinaatit. Olemme myös onnistuneesti visualisoineet osoitteiden sijainnit kartalla QuickSightissa. Voit nyt tutkia ratkaisun laajentamista muihin Amazon Location Servicen toimintoihin, kuten käänteiseen geokoodaukseen tai jopa integrointiin Lambda -toimintoihin muiden mukautettujen toimintojen kanssa.
Kirjailijasta
Parag Srivastava on Amazon Web Services (AWS) -ratkaisuarkkitehti, joka auttaa yritysasiakkaita onnistuneesti pilvipalveluihin ja siirtymään. Ammattiuransa aikana hän on ollut laajasti mukana monimutkaisissa digitaalisen muutoksen hankkeissa. Hän on myös intohimoisesti rakentamassa innovatiivisia ratkaisuja osoitteiden paikkatietoalueiden ympärille.
Lähde: https://aws.amazon.com/blogs/big-data/access-amazon-location-service-from-amazon-redshift/
- "
- 100
- pääsy
- Tili
- Hyväksyminen
- Kaikki
- Amazon
- Amazon Web Services
- Amazon Web Services (AWS)
- analyysi
- api
- API
- arkkitehtuuri
- noin
- AWS
- Brittiläinen
- British Columbia
- Rakentaminen
- liiketoiminta
- soittaa
- Ura
- pilvi
- pilvien hyväksyminen
- koodi
- Columbia
- Sarake
- Yhteinen
- Laskea
- Asiakkaat
- tiedot
- tietokanta
- tietokannat
- Kehittäjä
- digitaalinen
- Digital Transformation
- toimittaja
- päätepiste
- yritys
- yritysasiakkaat
- ympäristö
- tapahtuma
- odottaa
- Epäonnistuminen
- Fields
- koko
- toiminto
- Georgia
- Käsittely
- HTTPS
- IAM
- Identiteetti
- indeksi
- tiedot
- osallistuva
- IT
- leveysaste
- käynnistää
- Lista
- sijainti
- kartta
- Kartat
- ottelu
- nimet
- suunnistus
- tilata
- Muut
- politiikkaa
- politiikka
- hankkeet
- julkinen
- Python
- asiakirjat
- resurssi
- vastaus
- tulokset
- Tuotto
- käänteinen
- ajaa
- tallentaa
- Haku
- Seattle
- Palvelut
- setti
- Ratkaisumme
- tila-
- SQL
- Alkaa
- alkoi
- Osavaltio
- Lausunto
- Tila
- Levytila
- verkkokaupasta
- katu
- menestys
- onnistunut
- Muutos
- Päivitykset
- arvo
- vancouver
- visualisointi
- W
- verkko
- verkkopalvelut
- wikipedia