AWS ETL eksport danych z postgreSQL do RedShift

0

Witam,

Musze stworzy zapytanie, ktore obliczy kwote jaka zarobila firma podzielona na lata i miesiace. Zapytanie pobiera wyszystkie zamowienia oraz konwertuje wszsytkie ceny do cen w EURO. Dosc ciezkie zapytanie. Najprawdopodobniej bede musial je podzielic na zakres lat i wykononac kilka zapytan, a nie jedno duze.

Nastepnie dane musze wgrac do aws redshift. Najwieksza niewiadoma dla mnie to jak pobrac dane i przeslac do redshift? Jezeli projekt jest oparty na AWS cloud to myslalem, ze moze warto skorzystac produktow aws to ETL. I zaczalem od DMS, pozniej od Glue, ale wychodzi na to, ze zaden z tych produktow nie wykonuje zapytac SQL. Glue wydawal sie ok, ale tez nie znalazlem mozliwosci, zeby wklei moje zapytanie i je wykonac przez Glue. Tylko proste zapytania 2-3 tabele.

Czy moze macie jakies pomysly?

0

Bez sensu dzielić na kilka zapytań.
Możesz wynik zapytania wyeksportować do pliku csv i zapisać na s3 a później stamtąd poleceniem copy do redshift albo użyć redshift spectrum.

0
  1. Musze pobrac wszystkie zamowienia z 6 ostanich lat (takie zapytanie moze pobierac dane kilkadziesiat minut). I raz dziennie to zapytanie ma zostac wykonane i wyslane do redshift. Zamowienia moga byc aktualizaowane.
  2. Kazde zamowienie musi byc kowertowane do EURO. Chyba, ze originalnie zostalo zamowienie zrealizowane w EURO. Nie wiem, ale moze byc dosc ciezko tyle razy mnozyc kilka wartosci tylko w jednym zamowieniu. A zamowien bedzie tysiace, moze miliony.
  3. Masz jakis pomysl jak wyeksportowac takie zapytanie? Tzn myslisz o produktach AWS czy poprosty PHP i upload to S3?
0

Nie napisałeś na początku że to codzienny proces. Tylko po co analizować codziennie te same dane sprzed 6 lat? ETL tak ale nie w ten sposób.
Na pewno znajdziesz w sieci gotowca szukając po "ETL from RDS to Redshift"

0

Zamowienia moga zostac aktualizowane, nawet te stare. Probowalem juz DMS, Glue i nie udalo sie. Spoko, poszukam, wiadomo.

0

No mogą się zmienić dlatego podstawa to proces CDC na danych źródłowych. ETL nie polega na ładowaniu wszystkich danych za każdym razem.
https://en.wikipedia.org/wiki/Change_data_capture

Edit: Tu masz przykład takiego procesu z CDC
https://aws.amazon.com/blogs/big-data/stream-data-from-relational-databases-to-amazon-redshift-with-upserts-using-aws-glue-streaming-jobs/

0

Widzialem ten art z AWS Glue. Glue jest dobre jak masz 2-3 SQL tabele to zlaczenia. Nie ma opcji na wklejenie swojego SQL zapytania. Ja mam z 20 tabel w zapytaniu. I musze miec opcje na wykonwanie mojego zapytania. Glue jest po to, zeby wykonac SQL zapytanie bez 1 linii kodu. Pracuje sie na box'ach. 1 Box to 1 tabela, pozniej kolejny box to np LEFT JOIN itd.

Teraz sam mysle bardziej moze o AWS Pipleline albo o Lambdzie, ale to znowu tez sporo pracy, zeby wszystko poustawiac. A ja chce wykonac prosta kopie danych.

1

Możesz w postgresie zrobić widok i będziesz miał jedno zapytanie z tego widoku, może być też widok zmaterializowany, albo procedura która wcześniej przygotuje gotową tabelę z wynikami.
Tak w ogóle to podchodzisz do tego ze złej strony, to w redshifcie powinno się wykonywać to zapytanie analizujące na podstawie danych przeniesionych ETL z innych źródeł.

0

Mamy dwa systemy. I generalnie Redshift jest pobiera wszystkie tabele oraz dane z glownej apki. My potrzebujemy tylko sprawidzc ile zarobilismy ze starej apki. Chodzi tez o to, ze chcemy zsumowac ile oba apki generuja lacznie kasy na miesiac. Chyba, ze mozna by bylo stworzyc nowy Redshift tylko dla starej apki i tak jak napisales. Wyeksportowac te 20 tabel z danymi do Redshift. I moze jest jakas opcja na polacznie danych z dwoch Redshift? Czy cos takiego, nie wiem...

1 użytkowników online, w tym zalogowanych: 0, gości: 1