Beispiele für die Verwendung einer Verbundabfrage - Amazon Redshift

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.

Beispiele für die Verwendung einer Verbundabfrage

In den folgenden Beispielen wird gezeigt, wie Sie eine Verbundabfrage ausführen. Führen Sie SQL mit Ihrem SQL-Client aus, der mit der Amazon-Redshift-Datenbank verbunden ist.

Beispiel für die Verwendung einer Verbundabfrage mit PostgreSQL

Das folgende Beispiel zeigt, wie Sie eine Verbundabfrage einrichten, die auf eine Amazon-Redshift-Datenbank, eine Aurora-PostgreSQL-Datenbank und auf Amazon S3 verweist. In diesem Beispiel wird gezeigt, wie Verbundabfragen funktionieren. Um sie in Ihrer eigenen Umgebung auszuführen, ändern Sie diese so, dass sie Ihrer Umgebung entsprechen. Die Voraussetzungen hierfür finden Sie unter Erste Schritte mit der Verwendung von Verbundabfragen an PostgreSQL.

Erstellen Sie ein externes Schema, das auf eine Aurora-PostgreSQL-Datenbank verweist.

CREATE EXTERNAL SCHEMA apg FROM POSTGRES DATABASE 'database-1' SCHEMA 'myschema' URI 'endpoint to aurora hostname' IAM_ROLE 'arn:aws:iam::123456789012:role/Redshift-SecretsManager-RO' SECRET_ARN 'arn:aws:secretsmanager:us-west-2:123456789012:secret:federation/test/dataplane-apg-creds-YbVKQw';

Erstellen Sie ein weiteres externes Schema, das auf Amazon S3 verweist, was Amazon Redshift Spectrum verwendet. Erteilen Sie außerdem die Berechtigung, das Schema zu verwenden public.

CREATE EXTERNAL SCHEMA s3 FROM DATA CATALOG DATABASE 'default' REGION 'us-west-2' IAM_ROLE 'arn:aws:iam::123456789012:role/Redshift-S3'; GRANT USAGE ON SCHEMA s3 TO public;

Zeigen Sie die Zeilenanzahl in der Amazon-Redshift-Tabelle an.

SELECT count(*) FROM public.lineitem; count ---------- 25075099

Zeigen Sie die Zeilenanzahl in der Aurora-PostgreSQL-Tabelle an.

SELECT count(*) FROM apg.lineitem; count ------- 11760

Zeigen Sie die Zeilenanzahl in Amazon S3 an.

SELECT count(*) FROM s3.lineitem_1t_part; count ------------ 6144008876

Erstellen Sie eine Ansicht der Tabellen aus Amazon Redshift, Aurora PostgreSQL und Amazon S3. Diese Ansicht wird verwendet, um Ihre Verbundabfragen auszuführen.

CREATE VIEW lineitem_all AS SELECT l_orderkey,l_partkey,l_suppkey,l_linenumber,l_quantity,l_extendedprice,l_discount,l_tax,l_returnflag,l_linestatus, l_shipdate::date,l_commitdate::date,l_receiptdate::date, l_shipinstruct ,l_shipmode,l_comment FROM s3.lineitem_1t_part UNION ALL SELECT * FROM public.lineitem UNION ALL SELECT * FROM apg.lineitem with no schema binding;

Zeigen Sie zur Begrenzung der Ergebnisse die Anzahl der Zeilen in der Ansicht lineitem_all mit einem Prädikat an.

SELECT count(*) from lineitem_all WHERE l_quantity = 10; count ----------- 123373836

Finden Sie heraus, wie viele Verkäufe eines Artikels es im Januar eines jeden Jahres gab.

SELECT extract(year from l_shipdate) as year, extract(month from l_shipdate) as month, count(*) as orders FROM lineitem_all WHERE extract(month from l_shipdate) = 1 AND l_quantity < 2 GROUP BY 1,2 ORDER BY 1,2; year | month | orders ------+-------+--------- 1992 | 1 | 196019 1993 | 1 | 1582034 1994 | 1 | 1583181 1995 | 1 | 1583919 1996 | 1 | 1583622 1997 | 1 | 1586541 1998 | 1 | 1583198 2016 | 1 | 15542 2017 | 1 | 15414 2018 | 1 | 15527 2019 | 1 | 151

Beispiel für die Verwendung eines Namens mit sowohl Groß- als auch Kleinbuchstaben

Zur Abfrage einer unterstützten PostgreSQL-Remote-Datenbank, die einen Datenbank-. Schema-, Tabellen- oder Spaltennamen mit sowohl Groß- auch Kleinbuchstaben hat, legen Sie enable_case_sensitive_identifier auf true fest. Weitere Informationen zu diesem Sitzungsparameter finden Sie unter enable_case_sensitive_identifier.

SET enable_case_sensitive_identifier TO TRUE;

In der Regel werden die Datenbank- und Schemanamen in Kleinbuchstaben angegeben. Das folgende Beispiel zeigt, wie Sie eine Verbindung zu einer unterstützten Remote-PostgreSQL-Datenbank herstellen können, die Datenbank- und Schemanamen mit Kleinbuchstaben sowie Tabellen- und Spaltennamen mit sowohl Groß- als auch Kleinbuchstaben enthält.

Erstellen Sie ein externes Schema, das auf eine Aurora-PostgreSQL-Datenbank verweist, die einen Datenbanknamen mit Kleinbuchstaben (dblower) und einen Schemanamen mit Kleinbuchstaben (schemalower) hat.

CREATE EXTERNAL SCHEMA apg_lower FROM POSTGRES DATABASE 'dblower' SCHEMA 'schemalower' URI 'endpoint to aurora hostname' IAM_ROLE 'arn:aws:iam::123456789012:role/Redshift-SecretsManager-RO' SECRET_ARN 'arn:aws:secretsmanager:us-west-2:123456789012:secret:federation/test/dataplane-apg-creds-YbVKQw';

Legen Sie in der Sitzung, in der die Abfrage ausgeführt wird, enable_case_sensitive_identifier auf true fest.

SET enable_case_sensitive_identifier TO TRUE;

Führen Sie eine Verbundabfrage aus, um alle Daten aus der PostgreSQL-Datenbank auszuwählen. Die Tabellen- (MixedCaseTab) und Spaltennamen (MixedCaseName) enthalten sowohl Groß- als auch Kleinbuchstaben. Der Ergebnis ist eine Zeile (Harry).

select * from apg_lower."MixedCaseTab";
MixedCaseName ------- Harry

Das folgende Beispiel zeigt, wie Sie eine Verbindung zu einer unterstützten Remote-PostgreSQL-Datenbank herstellen können, die einen Datenbank-, Schema-, Tabellen- und Spaltennamen mit sowohl Groß- als auch Kleinbuchstaben enthält.

Legen Sie enable_case_sensitive_identifier auf true fest, bevor Sie das externe Schema erstellen. Wenn Sie enable_case_sensitive_identifier nicht auf true festlegen, bevor Sie das externe Schema erstellen, erhalten Sie einen Fehler, dass die Datenbank nicht existiert.

Erstellen Sie ein externes Schema, das auf eine Aurora-PostgreSQL-Datenbank verweist, die einen Datenbanknamen (UpperDB) und einen Schemanamen (UpperSchema) mit sowohl Groß- als auch Kleinbuchstaben hat.

CREATE EXTERNAL SCHEMA apg_upper FROM POSTGRES DATABASE 'UpperDB' SCHEMA 'UpperSchema' URI 'endpoint to aurora hostname' IAM_ROLE 'arn:aws:iam::123456789012:role/Redshift-SecretsManager-RO' SECRET_ARN 'arn:aws:secretsmanager:us-west-2:123456789012:secret:federation/test/dataplane-apg-creds-YbVKQw';

Führen Sie eine Verbundabfrage aus, um alle Daten aus der PostgreSQL-Datenbank auszuwählen. Die Tabellen- (MixedCaseTab) und Spaltennamen (MixedCaseName) enthalten sowohl Groß- als auch Kleinbuchstaben. Der Ergebnis ist eine Zeile (Harry).

select * from apg_upper."MixedCaseTab";
MixedCaseName ------- Harry

Beispiel für die Verwendung einer Verbundabfrage mit MySQL

Das folgende Beispiel zeigt, wie Sie eine Verbundabfrage einrichten, die auf eine Aurora-MySQL-Datenbank verweist. In diesem Beispiel wird gezeigt, wie Verbundabfragen funktionieren. Um sie in Ihrer eigenen Umgebung auszuführen, ändern Sie diese so, dass sie Ihrer Umgebung entsprechen. Die Voraussetzungen hierfür finden Sie unter Erste Schritte bei der Verwendung von Verbundabfragen für MySQL.

Dieses Beispiel hängt von den folgenden Voraussetzungen ab:

Erstellen Sie ein externes Schema, das auf eine Aurora-MySQL-Datenbank verweist.

CREATE EXTERNAL SCHEMA amysql FROM MYSQL DATABASE 'functional' URI 'endpoint to remote hostname' IAM_ROLE 'arn:aws:iam::123456789012:role/Redshift-SecretsManager-RO' SECRET_ARN 'arn:aws:secretsmanager:us-west-2:123456789012:secret:federation/test/dataplane-apg-creds-YbVKQw';

Führen Sie eine Beispiel-SQL-Auswahl für die Aurora-MySQL-Tabelle aus, um eine Zeile aus der Mitarbeitertabelle in Aurora MySQL aufzurufen.

SELECT level FROM amysql.employees LIMIT 1; level ------- 8