Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Erste Schritte mit Amazon Redshift Spectrum
In diesem Tutorial erfahren Sie, wie Sie mit Amazon Redshift Spectrum Daten direkt aus Dateien auf Amazon S3 abfragen. Wenn Sie bereits über einen Cluster und einen SQL Client verfügen, können Sie dieses Tutorial mit minimalem Installationsaufwand abschließen.
Anmerkung
Redshift Spectrum-Abfragen sind mit zusätzlichen Gebühren verbunden. Die Kosten für die Beispielabfragen in diesem Tutorial sind äußerst gering. Weitere Informationen zu Preisen finden Sie unter Amazon Redshift Spectrum – Preise
Voraussetzungen
Um Redshift Spectrum verwenden zu können, benötigen Sie einen Amazon Redshift Redshift-Cluster und einen SQL Client, der mit Ihrem Cluster verbunden ist, damit Sie Befehle ausführen SQL können. Der Cluster und die Datendateien in Amazon S3 müssen sich in derselben AWS-Region befinden.
Informationen zum Erstellen eines Amazon Redshift-Clusters finden Sie unter Erste Schritte mit von Amazon Redshift bereitgestellten Data Warehouses im Amazon Redshift Getting Started Guide. Informationen zu Verbindungsmöglichkeiten mit einem Cluster finden Sie unter Verbindung zu Amazon Redshift Data Warehouses im Amazon Redshift Getting Started Guide.
In einigen der folgenden Beispiele befinden sich die Beispieldaten in der Region USA Ost (Nord-Virginia) (us-east-1
), sodass Sie einen Cluster benötigen, der sich auch in us-east-1
befindet. Oder Sie können Amazon S3 verwenden, um Datenobjekte aus den folgenden Buckets und Ordnern in Ihren Bucket zu kopieren, in AWS-Region dem sich Ihr Cluster befindet:
s3://redshift-downloads/tickit/spectrum/customers/*
s3://redshift-downloads/tickit/spectrum/sales_partition/*
s3://redshift-downloads/tickit/spectrum/sales/*
s3://redshift-downloads/tickit/spectrum/salesevent/*
Führen Sie einen Amazon-S3-Befehl ähnlich dem folgenden aus, um Beispieldaten, die sich in der Region USA Ost (Nord-Virginia) befinden, in Ihre AWS-Region zu kopieren. Erstellen Sie vor dem Ausführen des Befehls Ihren Bucket und die Ordner in Ihrem Bucket so, dass sie Ihrem Amazon-S3-Befehl entsprechen. Die Ausgabe des Amazon S3 S3-Befehls copy bestätigt, dass die Dateien in den bucket-name
in Ihrem gewünschten AWS-Region.
aws s3 cp s3://redshift-downloads/tickit/spectrum/ s3://
bucket-name
/tickit/spectrum/ --copy-props none --recursive
Erste Schritte mit Redshift Spectrum unter AWS CloudFormation
Als Alternative zu den folgenden Schritten können Sie auf die Redshift DataLake AWS CloudFormation Spectrum-Vorlage zugreifen, um einen Stack mit einem Amazon S3 S3-Bucket zu erstellen, den Sie abfragen können. Weitere Informationen finden Sie unter Starten Sie Ihren AWS CloudFormation Stack und fragen Sie dann Ihre Daten in Amazon S3 ab.
Erste Schritte mit Amazon Redshift Spectrum – Schritt für Schritt
Gehen Sie wie folgt vor, um mit der Verwendung von Amazon Redshift Spectrum zu beginnen:
Schritt 1. Eine IAM Rolle für Amazon Redshift erstellen
Ihr Cluster benötigt eine Autorisierung für den Zugriff auf Ihren externen Datenkatalog in AWS Glue oder Amazon Athena und Ihre Datendateien in Amazon S3. Um diese Autorisierung zu erteilen, verweisen Sie auf eine AWS Identity and Access Management (IAM) -Rolle, die Ihrem Cluster zugeordnet ist. Weitere Informationen zur Verwendung von Rollen mit Amazon Redshift finden Sie unter Autorizing COPY and UNLOAD Operations Using IAM Roles.
Anmerkung
In bestimmten Fällen können Sie Ihren Athena-Datenkatalog zu einem AWS Glue Datenkatalog migrieren. Sie können dies tun, wenn sich Ihr Cluster in einer AWS Region befindet, die unterstützt AWS Glue wird, und Sie externe Redshift Spectrum-Tabellen im Athena-Datenkatalog haben. Um den AWS Glue Datenkatalog mit Redshift Spectrum zu verwenden, müssen Sie möglicherweise Ihre IAM Richtlinien ändern. Weitere Informationen finden Sie unter Upgrade auf den AWS Glue -Datenkatalog im Athena-Benutzerhandbuch.
Wenn Sie eine Rolle für Amazon Redshift erstellen, wählen Sie einen der folgenden Ansätze aus:
Wenn Sie Redshift Spectrum entweder mit einem Athena-Datenkatalog oder AWS Glue einem Datenkatalog verwenden, folgen Sie den unter beschriebenen Schritten. So erstellen Sie eine IAM Rolle für Amazon Redshift
Wenn Sie Redshift Spectrum mit einem verwenden AWS Glue Data Catalog , für aktiviert ist AWS Lake Formation, gehen Sie wie folgt vor:
So erstellen Sie eine IAM Rolle für Amazon Redshift
-
Öffnen Sie die IAMKonsole
. -
Wählen Sie im Navigationsbereich Rollen aus.
-
Wählen Sie Rolle erstellen aus.
-
Wählen Sie AWS -Service als vertrauenswürdige Entität und dann Redshift als Anwendungsfall aus.
-
Wählen Sie unter Anwendungsfall für andere AWS-Services die Option Redshift — Anpassbar und wählen Sie dann Weiter aus.
-
Die Seite Add permissions policy (Berechtigungsrichtlinie hinzufügen) wird angezeigt. Wählen Sie
AmazonS3ReadOnlyAccess
undAWSGlueConsoleFullAccess
, wenn Sie den AWS Glue Datenkatalog verwenden. Oder wählen SieAmazonAthenaFullAccess
aus, wenn Sie den Athena-Datenkatalog verwenden. Wählen Sie Weiter.Anmerkung
Über die Richtlinie
AmazonS3ReadOnlyAccess
gewähren Sie dem Cluster Leseberechtigungen für alle Amazon-S3-Buckets. Um nur Zugriff auf den AWS Beispieldaten-Bucket zu gewähren, erstellen Sie eine neue Richtlinie und fügen Sie die folgenden Berechtigungen hinzu.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::redshift-downloads/*" } ] }
-
Geben Sie in Role name (Rollenname) einen Namen für die Rolle ein, z. B.
myspectrum_role
. -
Prüfen Sie die Rolleninformationen, und klicken Sie dann auf Create role.
-
Wählen Sie im Navigationsbereich Roles. Wählen Sie den Namen Ihrer neuen Rolle aus, um die Zusammenfassung anzuzeigen, und kopieren Sie die Rolle dann ARN in Ihre Zwischenablage. Dieser Wert ist der Amazon-Ressourcenname (ARN) für die Rolle, die Sie gerade erstellt haben. Sie verwenden diesen Wert, wenn Sie externe Daten zur Referenzierung Ihrer Datendateien auf Amazon S3 erstellen.
So erstellen Sie eine IAM Rolle für Amazon Redshift mit einem AWS Glue Data Catalog aktivierten AWS Lake Formation
-
Öffnen Sie die IAM Konsole unter. https://console.aws.amazon.com/iam/
-
Wählen Sie im Navigationsbereich Policies aus.
Wenn Sie zum ersten Mal Policies (Richtlinien) auswählen, erscheint die Seite Welcome to Managed Policies (Willkommen bei verwalteten Richtlinien). Wählen Sie Get Started.
-
Wählen Sie Create Policy (Richtlinie erstellen) aus.
-
Wählen Sie auf der JSONRegisterkarte aus, ob Sie die Richtlinie erstellen möchten.
-
Fügen Sie das folgende JSON Richtliniendokument ein, das Zugriff auf den Datenkatalog gewährt, aber die Administratorrechte für Lake Formation verweigert.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RedshiftPolicyForLF", "Effect": "Allow", "Action": [ "glue:*", "lakeformation:GetDataAccess" ], "Resource": "*" } ] }
-
Wählen Sie, wenn Sie fertig sind, Review (Überprüfen) aus. Die Richtlinienvalidierung meldet mögliche Syntaxfehler.
-
Geben Sie auf der Seite Review Policy (Richtlinie überprüfen) im Feld Name (Name)
myspectrum_policy
für die zu erstellende Richtlinie ein. Geben Sie eine Beschreibung ein (Optional) . Überprüfen Sie unter Summary die Richtlinienzusammenfassung, um die Berechtigungen einzusehen, die von Ihrer Richtlinie gewährt werden. Wählen Sie dann Create policy aus, um Ihre Eingaben zu speichern.Nachdem Sie eine Richtlinie erstellt haben, können Sie Ihren Benutzern Zugriff erteilen.
Um Zugriff zu gewähren, fügen Sie Ihren Benutzern, Gruppen oder Rollen Berechtigungen hinzu:
-
Benutzer und Gruppen in AWS IAM Identity Center:
Erstellen Sie einen Berechtigungssatz. Befolgen Sie die Anweisungen unter Erstellen eines Berechtigungssatzes im AWS IAM Identity Center -Benutzerhandbuch.
-
Benutzer, IAM die über einen Identitätsanbieter verwaltet werden:
Erstellen Sie eine Rolle für den Identitätsverbund. Folgen Sie den Anweisungen unter Erstellen einer Rolle für einen externen Identitätsanbieter (Federation) im IAMBenutzerhandbuch.
-
IAMBenutzer:
-
Erstellen Sie eine Rolle, die Ihr Benutzer annehmen kann. Folgen Sie den Anweisungen unter Eine Rolle für einen IAM Benutzer erstellen im IAMBenutzerhandbuch.
-
(Nicht empfohlen) Weisen Sie einem Benutzer eine Richtlinie direkt zu oder fügen Sie einen Benutzer zu einer Benutzergruppe hinzu. Folgen Sie den Anweisungen unter Hinzufügen von Berechtigungen für einen Benutzer (Konsole) im IAMBenutzerhandbuch.
-
So gewähren Sie SELECT Berechtigungen für die Tabelle zur Abfrage in der Lake Formation Formation-Datenbank
-
Öffnen Sie die Lake Formation Formation-Konsole unter https://console.aws.amazon.com/lakeformation/
. -
Wählen Sie im Navigationsbereich Data-Lake-Berechtigungen und dann Gewähren.
-
Folgen Sie den Anweisungen unter Gewähren von Tabellenberechtigungen mithilfe der benannten Ressourcenmethode im AWS Lake Formation -Entwicklerhandbuch. Geben Sie die folgenden Informationen ein:
-
Wählen Sie IAMals Rolle die IAM Rolle aus, die Sie erstellt haben,
myspectrum_role
. Wenn Sie den Amazon Redshift Query Editor ausführen, verwendet er diese IAM Rolle für die Genehmigung der Daten.Anmerkung
Gehen Sie wie SELECT folgt vor, um die Abfrage der Tabelle in einem Datenkatalog mit aktivierter Lake Formation zu gewähren:
Registrieren Sie den Datenpfad in Lake Formation.
Gewähren Sie Benutzern die Berechtigung für diesen Pfad in Lake Formation.
Erstellte Tabellen finden Sie in dem in Lake Formation registrierten Pfad.
-
-
Wählen Sie Gewähren.
Wichtig
Es hat sich bewährt, über Lake-Formation-Berechtigungen nur Zugriff auf die zugrundeliegenden Amazon-S3-Objekte zu gewähren. Um unbefugten Zugriff zu verhindern, entfernen Sie alle Berechtigungen, die für Amazon-S3-Objekte außerhalb von Lake Formation gewährt wurden. Wenn Sie vor der Einrichtung von Lake Formation zuvor auf Amazon S3 S3-Objekte zugegriffen haben, entfernen Sie alle zuvor eingerichteten IAM Richtlinien oder Bucket-Berechtigungen. Weitere Informationen finden Sie unter Upgrading AWS Glue Data Permissions to the AWS Lake Formation Model und Lake Formation Permissions.
Schritt 2: Ordnen Sie die IAM Rolle Ihrem Cluster zu
Jetzt haben Sie eine IAM Rolle, die Amazon Redshift autorisiert, für Sie auf den externen Datenkatalog und Amazon S3 zuzugreifen. An dieser Stelle müssen Sie diese Rolle Ihrem Amazon-Redshift-Cluster zuordnen.
Um eine IAM Rolle einem Cluster zuzuordnen
-
Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon Redshift Redshift-Konsole unter https://console.aws.amazon.com/redshiftv2/
. -
Wählen Sie im Navigationsmenü Clusters (Cluster) und dann den Namen des Clusters aus, den Sie aktualisieren möchten.
-
Wählen Sie für Aktionen die Option IAMRollen verwalten aus. Die IAMRollenseite wird angezeigt.
-
Wählen Sie entweder die Eingabetaste ARN und geben Sie dann eine ARN oder eine IAM Rolle ein, oder wählen Sie eine IAM Rolle aus der Liste aus. Wählen Sie dann IAMRolle hinzufügen, um sie der Liste der angehängten IAM Rollen hinzuzufügen.
-
Wählen Sie Fertig, um die IAM Rolle dem Cluster zuzuordnen. Der Cluster wird modifiziert, um die Änderung abzuschließen.
Schritt 3: Erstellen eines externen Schemas und einer externen Tabelle
Erstellen Sie externe Tabellen in einem externen Schema. Das externe Schema verweist auf eine Datenbank im externen Datenkatalog und stellt die IAM Rolle bereitARN, die Ihren Cluster autorisiert, in Ihrem Namen auf Amazon S3 zuzugreifen. Sie können eine externe Datenbank in einem Amazon Athena Athena-Datenkatalog oder einem Apache Hive-Metastore wie Amazon erstellen. AWS Glue Data Catalog EMR Für dieses Beispiel erstellen Sie die externe Datenbank in einem Amazon-Athena-Datenkatalog, wenn Sie das externe Schema Amazon Redshift erstellen. Weitere Informationen finden Sie unter Externe Schemas in Amazon Redshift Spectrum.
So erstellen Sie ein externes Schema und eine externe Tabelle:
-
Um ein externes Schema zu erstellen, ersetzen Sie die IAM Rolle ARN im folgenden Befehl durch die Rolle, die ARN Sie in Schritt 1 erstellt haben. Führen Sie dann den Befehl in Ihrem SQL Client aus.
create external schema myspectrum_schema from data catalog database 'myspectrum_db' iam_role 'arn:aws:iam::123456789012:role/myspectrum_role' create external database if not exists;
-
Führen Sie den folgenden CREATE EXTERNAL TABLE Befehl aus, um eine externe Tabelle zu erstellen.
Anmerkung
Ihr Cluster und der Amazon-S3-Bucket müssen sich in der gleichen AWS-Region befinden. Für diesen CREATE EXTERNAL TABLE Beispielbefehl befindet sich der Amazon S3 S3-Bucket mit den Beispieldaten im Osten der USA (Nord-Virginia) AWS-Region. Laden Sie die Datei
sales_ts.000
herunter, um die Quelldaten zu sehen. . Sie können dieses Beispiel so ändern, dass es in einem anderen ausgeführt wird AWS-Region. Erstellen Sie einen Amazon S3 S3-Bucket in Ihrem gewünschten Format AWS-Region. Kopieren Sie die Verkaufsdaten mit einem Amazon-S3-Kopierbefehl. Aktualisieren Sie dann die Option für den Speicherort im
CREATE EXTERNAL TABLE
-Beispielbefehl auf Ihren Bucket.aws s3 cp s3://redshift-downloads/tickit/spectrum/sales/ s3://
bucket-name
/tickit/spectrum/sales/ --copy-props none --recursiveDie Ausgabe des Amazon S3 S3-Befehls copy bestätigt, dass die Datei in den
bucket-name
in Ihrem gewünschten AWS-Region.copy: s3://redshift-downloads/tickit/spectrum/sales/sales_ts.000 to s3://
bucket-name
/tickit/spectrum/sales/sales_ts.000create external table myspectrum_schema.sales( salesid integer, listid integer, sellerid integer, buyerid integer, eventid integer, dateid smallint, qtysold smallint, pricepaid decimal(8,2), commission decimal(8,2), saletime timestamp) row format delimited fields terminated by '\t' stored as textfile location 's3://redshift-downloads/tickit/spectrum/sales/' table properties ('numRows'='172000');
Schritt 4: Abfragen Ihrer Daten in Amazon S3
Nachdem Ihre externen Tabellen erstellt wurden, können Sie sie mit denselben SELECT Anweisungen abfragen, die Sie für die Abfrage anderer Amazon Redshift Redshift-Tabellen verwenden. Zu diesen SELECT Anweisungsabfragen gehören das Verbinden von Tabellen, das Aggregieren von Daten und das Filtern nach Prädikaten.
So fragen Sie Ihre Daten in Amazon S3 ab
-
Ermittelt die Anzahl der Zeilen im _. MYSPECTRUM SCHEMA SALESTabelle.
select count(*) from myspectrum_schema.sales;
count ------ 172462
-
Es wird empfohlen, dass Sie Ihre größeren Faktentabellen in Amazon S3 und Ihre kleineren Dimensionstabellen in Amazon Redshift speichern. Wenn Sie die Beispieldaten in Daten laden geladen haben, haben Sie EVENT in Ihrer Datenbank eine Tabelle benannt. Wenn nicht, erstellen Sie die EVENT Tabelle mit dem folgenden Befehl.
create table event( eventid integer not null distkey, venueid smallint not null, catid smallint not null, dateid smallint not null sortkey, eventname varchar(200), starttime timestamp);
-
Laden Sie die EVENT Tabelle, indem Sie die IAM Rolle ARN im folgenden COPY Befehl durch die Rolle ersetzen, in der ARN Sie sie erstellt habenSchritt 1. Eine IAM Rolle für Amazon Redshift erstellen. Sie können optional die Quelldaten für
allevents_pipe.txt
aus einem Amazon S3 S3-Bucket in herunterladen und anzeigen AWS-Region us-east-1
.copy event from 's3://redshift-downloads/tickit/allevents_pipe.txt' iam_role 'arn:aws:iam::123456789012:role/myspectrum_role' delimiter '|' timeformat 'YYYY-MM-DD HH:MI:SS' region 'us-east-1';
Das folgende Beispiel verknüpft die externe Amazon S3 S3-Tabelle MYSPECTRUM _SCHEMA. SALESmit der lokalen Amazon Redshift Redshift-TabelleEVENT, um den Gesamtumsatz der 10 wichtigsten Veranstaltungen zu ermitteln.
select top 10 myspectrum_schema.sales.eventid, sum(myspectrum_schema.sales.pricepaid) from myspectrum_schema.sales, event where myspectrum_schema.sales.eventid = event.eventid and myspectrum_schema.sales.pricepaid > 30 group by myspectrum_schema.sales.eventid order by 2 desc;
eventid | sum --------+--------- 289 | 51846.00 7895 | 51049.00 1602 | 50301.00 851 | 49956.00 7315 | 49823.00 6471 | 47997.00 2118 | 47863.00 984 | 46780.00 7851 | 46661.00 5638 | 46280.00
-
Zeigen Sie den Abfrageplan für die vorherige Abfrage an. Beachten Sie, dass die Schritte
S3 Seq Scan
,S3 HashAggregate
undS3 Query Scan
für die Daten auf Amazon S3 ausgeführt wurden.explain select top 10 myspectrum_schema.sales.eventid, sum(myspectrum_schema.sales.pricepaid) from myspectrum_schema.sales, event where myspectrum_schema.sales.eventid = event.eventid and myspectrum_schema.sales.pricepaid > 30 group by myspectrum_schema.sales.eventid order by 2 desc;
QUERY PLAN ----------------------------------------------------------------------------- XN Limit (cost=1001055770628.63..1001055770628.65 rows=10 width=31) -> XN Merge (cost=1001055770628.63..1001055770629.13 rows=200 width=31) Merge Key: sum(sales.derived_col2) -> XN Network (cost=1001055770628.63..1001055770629.13 rows=200 width=31) Send to leader -> XN Sort (cost=1001055770628.63..1001055770629.13 rows=200 width=31) Sort Key: sum(sales.derived_col2) -> XN HashAggregate (cost=1055770620.49..1055770620.99 rows=200 width=31) -> XN Hash Join DS_BCAST_INNER (cost=3119.97..1055769620.49 rows=200000 width=31) Hash Cond: ("outer".derived_col1 = "inner".eventid) -> XN S3 Query Scan sales (cost=3010.00..5010.50 rows=200000 width=31) -> S3 HashAggregate (cost=3010.00..3010.50 rows=200000 width=16) -> S3 Seq Scan myspectrum_schema.sales location:"s3://redshift-downloads/tickit/spectrum/sales" format:TEXT (cost=0.00..2150.00 rows=172000 width=16) Filter: (pricepaid > 30.00) -> XN Hash (cost=87.98..87.98 rows=8798 width=4) -> XN Seq Scan on event (cost=0.00..87.98 rows=8798 width=4)
Starten Sie Ihren AWS CloudFormation Stack und fragen Sie dann Ihre Daten in Amazon S3 ab
Nachdem Sie einen Amazon Redshift Redshift-Cluster erstellt und eine Verbindung zum Cluster hergestellt haben, können Sie Ihre Redshift DataLake AWS CloudFormation Spectrum-Vorlage installieren und dann Ihre Daten abfragen.
CloudFormation installiert die Redshift Spectrum Getting DataLake Started-Vorlage und erstellt einen Stack, der Folgendes umfasst:
Eine Rolle namens
myspectrum_role
, die mit Ihrem Redshift-Cluster verknüpft istEin externes Schema mit dem Namen
myspectrum_schema
Eine externe Tabelle mit dem Namen
sales
in einem Amazon S3 BucketEine Redshift-Tabelle mit dem Namen
event
und geladenen Daten
So starten Sie Ihren Redshift Spectrum Getting Started Stack DataLake CloudFormation
Wählen Sie CFNStack starten
. Die CloudFormation Konsole wird mit der ausgewählten Vorlage DataLake .yml geöffnet. Sie können auch die Redshift Spectrum Getting DataLake CloudFormation CFNStarted-Vorlage
herunterladen und anpassen, dann die CloudFormation Konsole (https://console.aws.amazon.com/cloudformation ) öffnen und einen Stack mit der benutzerdefinierten Vorlage erstellen. Wählen Sie Weiter.
Geben Sie unter Parameters (Parameter) den Namen des Amazon-Redshift-Clusters, den Datenbanknamen und Ihren Namen als Datenbankbenutzer ein.
Wählen Sie Next (Weiter).
Die Stack-Optionen werden angezeigt.
Klicken Sie auf Next (Weiter), um die Standardeinstellungen zu übernehmen.
Überprüfen Sie die Informationen und wählen Sie unter Funktionen die Option Ich bestätige, dass AWS CloudFormation möglicherweise Ressourcen erstellt werden. IAM
Wählen Sie Create stack (Stack erstellen) aus.
Falls während der Erstellung des Stacks ein Fehler auftritt, lesen Sie die folgenden Informationen:
Auf der Registerkarte CloudFormation Ereignisse finden Sie Informationen, die Ihnen bei der Behebung des Fehlers helfen können.
Löschen Sie den DataLake CloudFormation Stapel, bevor Sie den Vorgang erneut versuchen.
Vergewissern Sie sich, dass Sie mit Ihrer Amazon-Redshift-Datenbank verbunden sind.
Stellen Sie sicher, dass Sie die richtigen Informationen für den Namen des Amazon-Redshift-Clusters, den Datenbanknamen und den Namen des Datenbankbenutzers eingegeben haben.
Fragen Sie Ihre Daten in Amazon S3 ab
Sie fragen externe Tabellen mit denselben SELECT Anweisungen ab, die Sie für die Abfrage anderer Amazon Redshift Redshift-Tabellen verwenden. Diese SELECT Anweisungsabfragen umfassen das Verbinden von Tabellen, das Aggregieren von Daten und das Filtern nach Prädikaten.
Die folgende Abfrage gibt die Anzahl von Zeilen in der externen Tabelle myspectrum_schema.sales
aus.
select count(*) from myspectrum_schema.sales;
count ------ 172462
Verknüpfen Sie eine externe Tabelle mit einer lokalen Tabelle
Das folgende Beispiel verbindet die externe Tabelle myspectrum_schema.sales
mit der lokalen Tabelle event
, um den Gesamtumsatz für die 10 führenden Veranstaltungen zu ermitteln.
select top 10 myspectrum_schema.sales.eventid, sum(myspectrum_schema.sales.pricepaid) from myspectrum_schema.sales, event where myspectrum_schema.sales.eventid = event.eventid and myspectrum_schema.sales.pricepaid > 30 group by myspectrum_schema.sales.eventid order by 2 desc;
eventid | sum --------+--------- 289 | 51846.00 7895 | 51049.00 1602 | 50301.00 851 | 49956.00 7315 | 49823.00 6471 | 47997.00 2118 | 47863.00 984 | 46780.00 7851 | 46661.00 5638 | 46280.00
Den Abfrageplan anzeigen
Zeigen Sie den Abfrageplan für die vorherige Abfrage an. Beachten Sie, dass die Schritte S3 Seq Scan
, S3 HashAggregate
und S3 Query Scan
für die Daten auf Amazon S3 ausgeführt wurden.
explain select top 10 myspectrum_schema.sales.eventid, sum(myspectrum_schema.sales.pricepaid) from myspectrum_schema.sales, event where myspectrum_schema.sales.eventid = event.eventid and myspectrum_schema.sales.pricepaid > 30 group by myspectrum_schema.sales.eventid order by 2 desc;
QUERY PLAN ----------------------------------------------------------------------------- XN Limit (cost=1001055770628.63..1001055770628.65 rows=10 width=31) -> XN Merge (cost=1001055770628.63..1001055770629.13 rows=200 width=31) Merge Key: sum(sales.derived_col2) -> XN Network (cost=1001055770628.63..1001055770629.13 rows=200 width=31) Send to leader -> XN Sort (cost=1001055770628.63..1001055770629.13 rows=200 width=31) Sort Key: sum(sales.derived_col2) -> XN HashAggregate (cost=1055770620.49..1055770620.99 rows=200 width=31) -> XN Hash Join DS_BCAST_INNER (cost=3119.97..1055769620.49 rows=200000 width=31) Hash Cond: ("outer".derived_col1 = "inner".eventid) -> XN S3 Query Scan sales (cost=3010.00..5010.50 rows=200000 width=31) -> S3 HashAggregate (cost=3010.00..3010.50 rows=200000 width=16) -> S3 Seq Scan spectrum.sales location:"s3://redshift-downloads/tickit/spectrum/sales" format:TEXT (cost=0.00..2150.00 rows=172000 width=16) Filter: (pricepaid > 30.00) -> XN Hash (cost=87.98..87.98 rows=8798 width=4) -> XN Seq Scan on event (cost=0.00..87.98 rows=8798 width=4)