Auf einen Blick: Das Schreiben von SQL-Anweisungen in Amazon Redshift erklärt, wie der Abfrageeditor für Datenanalysen genutzt werden kann, mit Fokus auf grundlegende SQL-Befehle wie Aggregation und Ergebnisexport. Außerdem werden die Funktionen von Amazon Redshift als Cloud-Data Warehouse behandelt.
- Verwenden Sie den Abfrageeditor zum Ausführen von SQL-Befehlen.
- Verstehen Sie die Fähigkeiten von Amazon Redshift zur Verwaltung großer Datensätze.
In diesem Tutorial zeigen wir, wie man Amazon Redshift SQL-Anweisungen schreibt. Da dieses Thema groß und komplex ist, beginnen wir mit den Grundlagen.
Dieses Tutorial zeigt Ihnen, wie Sie:
- Verwenden Sie den Abfrageeditor
- Aggregierte Zeilen mit Gruppe durch
- Datum in Jahr und Monat umrechnen
- Exportiere die Ergebnisse in eine CSV-Datei
Was ist Amazon Redshift?
Amazon Redshift ist ein Cloud-Datawarehouse von Amazon Web Services, das auf SQL basiert. Es ist darauf ausgelegt, große Datensätze und komplexe Abfragen zu verarbeiten. Es eignet sich ideal für Data Warehousing, Business Intelligence, Big Data Analytics, maschinelles Lernen und Extract-Load-Transform-Workflows.
Die Komponenten der Redshift umfassen die folgenden:
- Cluster sind Computerknoten, die um einen Leader-Knoten organisiert sind, um Verbindungen zu verwalten und Abfragen zu koordinieren.
- Slices sind Unterteilungen von Knoten, die Speicher-, Verarbeitungs- und Festplattenspeicherressourcen für effiziente, massiv parallele Verarbeitung zuweisen.
- Datenverteilungsmethoden weisen die Daten gleichmäßig auf Knoten zu, entsprechend einem Schlüsselwert oder über jeden Knoten hinweg.
- Die Kolumnenspeicherung von Daten erfolgt in vertikalen Stacks, um Ein- und Ausgabe (I/O) zu reduzieren und eine effizientere Speicherung zu gewährleisten.
- Die Ausführungs-Engine unterstützt SQL-Abfragen und plant den besten Weg, Daten zu erhalten und zu verwenden.
- Spectrum ist ein Amazon-Redshift-Service, der es ermöglicht, Daten in Amazon S3 abzufragen, ohne sie in die Redshift-Umgebung zu bringen.
- Das integrierte Datenladen nutzt eine Vielzahl von Amazon- und Drittanbieter-Tools.
- Backup und Wiederherstellung erhöhen die Resilienz.
- Die Sicherheit kontrolliert Identität und Zugriff und stellt Protokolle für Mustererkennung und Antworten nach Exploits bereit.
- Wartung und Überwachung sind ein wesentlicher Bestandteil dieses vollständig verwalteten Dienstes und entlasten Ihr Team von fortlaufenden administrativen Belastungen.
Redshift-Abfrageeditor
Um den Abfrageeditor zu öffnen, klicke auf den Editor im Cluster-Bildschirm. Redshift fragt dich dann nach deinen Zugangsdaten, um dich mit einer Datenbank zu verbinden. Ein schönes Feature ist, dass es eine Option gibt, temporäre Zugangsdaten zu generieren, sodass du dir dein Passwort nicht merken musst. Es reicht aus, sich für die Amazon AWS Console anzumelden.
Unten haben wir einen Cluster, den wir wieder aufnehmen, nachdem wir ihn pausiert haben (um die Amazon-Abrechnungsgebühren zu senken).
Du schreibst hier die SQL-Anweisung. Es ist jeweils nur eine Anweisung erlaubt, da Redshift jeweils nur eine Ergebnismenge anzeigen kann. Um mehr als eine Anweisung zu schreiben, klicke auf das Plus (+), um einen zusätzlichen Tab hinzuzufügen.
Wenn du jede Abfrage ausführst, dauert es ein paar Sekunden, bis der Job eingereicht und dann ausgeführt wird. Es ist also nicht sofort, wie man es bei anderen Produkten erwarten würde.
Die Ergebnisse werden unten angezeigt, wo du sie als CSV, TXT oder HTML exportieren kannst. Du kannst die Ergebnisse auch darstellen.
Hol dir das Tabellenschema
Für dieses Tutorial verwenden wir eine Tabelle mit Wetterdaten. (Siehe mehr zum Laden von Daten zu Amazon Redshift aus Staffel 3.) Dies sind 20 Jahre Wetterdaten für Paphos, Zypern. Sie hat vier Spalten:
- dt_iso
- Temp
- temp_min
- temp_max
dt_dso ist eine Art Zeitstempel und der Hauptschlüssel. Ein Vorteil von Redshift ist, dass man das Datum in fast jedem beliebigen Format laden kann, und Redshift versteht das. Dann bietet Redshift die to_char()-Funktion, um beliebige Teile des gewünschten Datums auszudrucken, wie Stunde, Jahr, Minute usw.
Um das Tabellenschema zu betrachten, fragen Sie die pg_table_def Tabelle ab.
Hier ist das Schema.
SELECT *
FROM pg_table_def
WHERE tablename = 'paphos'
AND schemaname = 'public';
Hier ist das Schema.
schemaname,tablename,column,type,encoding,distkey,sortkey,notnull
public,paphos,dt_iso,timestamp without time zone,none,t,1,t
public,paphos,temp,real,none,f,0,f
public,paphos,temp_min,real,none,f,0,f
public,paphos,temp_max,real,none,f,0,f
Aggregierte SQL-Anweisungen
Diese Abfrage berechnet die Durchschnittstemperatur pro Monat für die Sommermonate von Mai bis September. Hinweis:
- to_char() extrahiert beliebigen Teil des gewünschten Datums, wie zum Beispiel YYYY-Jahr oder MM-Monatsnummer.
- Wir verwenden die in()- Erklärung, um die Monate auszuwählen.
- Die Order-Anweisung verwendet eine 1. Das bedeutet, die erste Spalte zu verwenden, die von der Abfrage zurückgegeben wird. Das ist eine Alternative zum Eingeben des Spaltennamens.
- Wir gruppieren nach Jahr und Monat, da wir den Durchschnitt [avg()] für den Monat innerhalb des Jahres berechnen wollen
- Wir verwenden die Round()- Funktion, um zwei Dezimalstellen abzurunden. Ansonsten gibt Rotverschiebung zu viele Dezimalstellen.
- Wie bei anderen Datenbanken erlaubt uns die as-Anweisung die Spalte, die aus der Berechnung resultiert, einen Alias zu geben. Ohne diesen hätte die Spalte keinen beschreibenden Namen. Hier nennen wir die Durchschnittstemperatur aveTemp.
select round(avg(temp),2) as aveTemp,
to_char(dt_iso,'YYYY') as year,
to_char(dt_iso,'MM') as month
from paphos where
month in ('05','06','07','08','09')
group by year, month
order by 1 desc
Hier sind die Ergebnisse. Sie zeigt die heißesten Monate der 20 Jahre Daten. Ich habe die Anzeige abgeschnitten, um sie kurz zu machen. Zum Beispiel war August 2010 in den 20 Jahren der heißeste Monat.
Wir gruppierten nach Jahr und dann nach Monat, je nachdem, wie wir den Monat innerhalb des Jahres haben wollen, basierend auf täglicher Wetterbeobachtung.
| Avetemp | Jahr | Monat |
| 84.11 | 2010 | 8 |
| 83.12 | 2012 | 8 |
| 83.05 | 2012 | 7 |
| 82.9 | 2015 | 8 |
| 82.39 | 2017 | 7 |
| 82.04 | 2014 | 8 |
| 81.85 | 2007 | 7 |
| 81.73 | 2020 | 9 |
| 81.72 | 2013 | 8 |
| 81.72 | 2008 | 8 |
| 81.62 | 2000 | 7 |
| 81.61 | 2009 | 8 |
| 81.49 | 2017 | 8 |
Wir exportieren die Daten mit dem Button rechts neben den Ergebnissen in ein CSV-Format. Dann importieren wir sie in eine Tabelle, damit wir die Ergebnisse leichter sehen und Farben und Ähnliches erhalten können.
Hier sind die heißesten Jahre. Das bekommen wir, indem wir den Monat aus der Aggregation streichen.
select round(avg(temp),2) as aveTemp,
to_char(dt_iso,'YYYY') as year
from paphos
group by year
order by 1 desc
Zusätzliche Ressourcen
Für weitere Tutorials wie dieses entdecken Sie diese Ressourcen:
Amazon-Redshift-Leitfaden
Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.