Wählen Sie Ihre Cookie-Einstellungen aus

Wir verwenden essentielle Cookies und ähnliche Tools, die für die Bereitstellung unserer Website und Services erforderlich sind. Wir verwenden Performance-Cookies, um anonyme Statistiken zu sammeln, damit wir verstehen können, wie Kunden unsere Website nutzen, und Verbesserungen vornehmen können. Essentielle Cookies können nicht deaktiviert werden, aber Sie können auf „Anpassen“ oder „Ablehnen“ klicken, um Performance-Cookies abzulehnen.

Wenn Sie damit einverstanden sind, verwenden AWS und zugelassene Drittanbieter auch Cookies, um nützliche Features der Website bereitzustellen, Ihre Präferenzen zu speichern und relevante Inhalte, einschließlich relevanter Werbung, anzuzeigen. Um alle nicht notwendigen Cookies zu akzeptieren oder abzulehnen, klicken Sie auf „Akzeptieren“ oder „Ablehnen“. Um detailliertere Entscheidungen zu treffen, klicken Sie auf „Anpassen“.

Tutorial: Verwenden von Geo-SQL-Funktionen mit Amazon Redshift

Fokusmodus
Tutorial: Verwenden von Geo-SQL-Funktionen mit Amazon Redshift - 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.

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.

In diesem Tutorial wird gezeigt, wie Sie einige der Geo-SQL-Funktionen mit Amazon Redshift verwenden.

Dazu fragen Sie zwei Tabellen mit Geo-SQL-Funktionen ab. Das Tutorial verwendet Daten aus öffentlichen Datensätzen, die Standortdaten von Mietunterkünften mit Postleitzahlen in Berlin, Deutschland, korrelieren.

Voraussetzungen

Für dieses Tutorial benötigen Sie folgende Ressourcen:

  • Ein vorhandener Amazon-Redshift-Cluster und -Datenbank, auf die Sie zugreifen und die Sie aktualisieren können. Im vorhandenen Cluster erstellen Sie Tabellen, laden Beispieldaten und führen SQL-Abfragen aus, um Geofunktionen zu demonstrieren. Ihr Cluster sollte mindestens zwei Knoten enthalten. Um zu erfahren, wie Sie einen Cluster erstellen, befolgen Sie die Schritte im Handbuch Erste Schritte in Amazon Redshift.

  • Um den Abfrage-Editor von Amazon Redshift zu verwenden, stellen Sie sicher, dass sich Ihr Cluster in einer AWS -Region befindet, die den Abfrageeditor unterstützt. Weitere Informationen finden Sie unter Abfragen einer Datenbank mit dem Abfrage-Editor im Amazon-Redshift-Verwaltungshandbuch.

  • AWS Anmeldeinformationen für Ihren Amazon Redshift Redshift-Cluster, die es ihm ermöglichen, Testdaten aus Amazon S3 zu laden. Informationen zum Zugriff auf andere AWS Dienste wie Amazon S3 finden Sie unter Autorisieren von Amazon Redshift für den Zugriff auf AWS Dienste.

  • Die benannte AWS Identity and Access Management (IAM-) RollemySpatialDemoRole, der die verwaltete Richtlinie zum Lesen von Amazon S3 S3-Daten AmazonS3ReadOnlyAccess zugeordnet ist. Informationen zum Erstellen einer Rolle mit der Berechtigung zum Laden von Daten aus einem Amazon-S3-Bucket finden Sie unter Authorizing COPY, UNLOAD, and CREATE EXTERNAL SCHEMA operations using IAM roles (Autorisieren der Befehle COPY, UNLOAD und CREATE EXTERNAL SCHEMA mithilfe von IAM-Rollen) im Amazon-Redshift-Verwaltungshandbuch.

  • Nachdem Sie die IAM-Rolle mySpatialDemoRole erstellt haben, benötigt diese Rolle eine Zuordnung zu Ihrem Amazon-Redshift-Cluster. Weitere Informationen finden Sie unter Autorisierung der Operationen COPY, UNLOAD und CREATE EXTERNAL SCHEMA mit IAM-Rollen im Amazon-Redshift-Verwaltungshandbuch.

Schritt 1: Erstellen von Tabellen und Laden von Testdaten

Die in diesem Tutorial verwendeten Quelldaten befinden sich in Dateien mit den Namen accommodations.csv und zipcodes.csv.

Die accommodations.csv-Datei ist Open-Source-Daten von insideairbnb.com. Die zipcodes.csv-Datei enthält Postleitzahlen, die Open-Source-Daten des nationalen Statistik-Instituts Berlin-Brandenburg in Deutschland (Amt für Statistik Berlin-Brandenburg) sind. Beide Datenquellen werden unter einer Creative-Commons-Lizenz bereitgestellt. Die Daten sind auf die Region Berlin, Deutschland, beschränkt. Diese Dateien befinden sich in einem öffentlichen Amazon-S3-Bucket, der mit diesem Tutorial verwendet werden kann.

Optional können Sie die Quelldaten von den folgenden Amazon-S3-Links herunterladen:

Gehen Sie wie folgt vor, um Tabellen zu erstellen und Testdaten zu laden.

So erstellen Sie Tabellen und laden Testdaten:
  1. Öffnen Sie den Abfrage-Editor von Amazon Redshift. Weitere Informationen zur Arbeit mit dem Abfrage-Editor finden Sie unter Querying a database using the query editor (Abfragen für Datenbanken mit dem Abfrage-Editor) im Amazon-Redshift-Verwaltungshandbuch.

  2. Löschen Sie alle Tabellen, die in diesem Tutorial verwendet werden, wenn sie bereits in Ihrer Datenbank vorhanden sind. Weitere Informationen finden Sie unter Schritt 3: Bereinigen Ihrer Ressourcen.

  3. Erstellen der accommodations-Tabelle, um die geografische Lage der einzelnen Unterkünfte (Längen- und Breitengrad), den Namen der Auflistung und andere Geschäftsdaten zu speichern.

    Dieses Tutorial erforscht Zimmervermietungen in Berlin, Deutschland. Die Spalte shape speichert geografische Punkte des Standortes von Unterkünften. Die anderen Spalten enthalten Informationen über die Vermietung.

    Führen Sie zum Erstellen der Tabelle accommodations die folgende SQL-Anweisung im Abfrage-Editor von Amazon Redshift aus.

    CREATE TABLE public.accommodations ( id INTEGER PRIMARY KEY, shape GEOMETRY, name VARCHAR(100), host_name VARCHAR(100), neighbourhood_group VARCHAR(100), neighbourhood VARCHAR(100), room_type VARCHAR(100), price SMALLINT, minimum_nights SMALLINT, number_of_reviews SMALLINT, last_review DATE, reviews_per_month NUMERIC(8,2), calculated_host_listings_count SMALLINT, availability_365 SMALLINT );
  4. Erstellen Sie die Tabelle zipcode im Abfrage-Editor, um Postleitzahlen von Berlin zu speichern.

    Eine Postleitzahl wird in der Spalte wkb_geometry als Polygon definiert. In den restlichen Spalten werden zusätzliche Geo-Metadaten zur Postleitzahl beschrieben.

    Führen Sie zum Erstellen der Tabelle zipcode die folgende SQL-Anweisung im Abfrage-Editor von Amazon Redshift aus.

    CREATE TABLE public.zipcode ( ogc_field INTEGER PRIMARY KEY NOT NULL, wkb_geometry GEOMETRY, gml_id VARCHAR(256), spatial_name VARCHAR(256), spatial_alias VARCHAR(256), spatial_type VARCHAR(256) );
  5. Laden Sie die Tabellen mit Beispieldaten.

    Die Beispieldaten für dieses Tutorial werden in einem Amazon S3 S3-Bucket bereitgestellt, der allen authentifizierten AWS Benutzern Lesezugriff ermöglicht. Stellen Sie sicher, dass Sie gültige AWS -Anmeldeinformationen angeben, die den Zugriff auf Amazon S3 gewähren.

    Führen Sie die folgenden COPY-Befehle aus, um Testdaten in Ihre Tabellen zu laden. Ersetzen Sie account-number mit Ihrer AWS -Kontonummer. Das Segment der Anmeldedatenzeichenfolge, das in einfachen Anführungszeichen eingeschlossen ist, darf keine Leerzeichen oder Zeilenumbrüche enthalten.

    COPY public.accommodations FROM 's3://redshift-downloads/spatial-data/accommodations.csv' DELIMITER ';' IGNOREHEADER 1 REGION 'us-east-1' CREDENTIALS 'aws_iam_role=arn:aws:iam::account-number:role/mySpatialDemoRole';
    COPY public.zipcode FROM 's3://redshift-downloads/spatial-data/zipcode.csv' DELIMITER ';' IGNOREHEADER 1 REGION 'us-east-1' CREDENTIALS 'aws_iam_role=arn:aws:iam::account-number:role/mySpatialDemoRole';
  6. Um zu prüfen, ob jede Tabelle korrekt geladen wurde, führen Sie die folgenden Befehle aus.

    select count(*) from accommodations;
    select count(*) from zipcode;

    Die folgende Ergebnistabelle zeigt die Anzahl der Zeilen in jeder Tabelle mit Testdaten.

    Tabellenname Rows
    Unterkünfte 22.248
    Postleitzahl 190

Schritt 2: Abfrage von Geodaten

Nachdem Ihre Tabellen erstellt und geladen wurden, können Sie sie mithilfe von SQL-SELECT-Anweisungen abfragen. Die folgenden Abfragen veranschaulichen einige der Informationen, die Sie abrufen können. Sie können viele andere Abfragen schreiben, die räumliche Geofunktionen verwenden, um Ihre Anforderungen zu erfüllen.

So fragen Sie Geodaten ab:
  1. Abfrage, um die Gesamtzahl der Angebote zu erhalten, die in der Tabelle accommodations (siehe unten) gespeichert werden. Das Georeferenzsystem ist das World Geodetic System (WGS) 84, das den eindeutigen Georeferenzbezeichner 4326 aufweist.

    SELECT count(*) FROM public.accommodations WHERE ST_SRID(shape) = 4326;
    count ------- 22248
  2. Rufen Sie die Geometrieobjekte im WKT-Format (bekannter Text) mit einigen zusätzlichen Attributen ab. Darüber hinaus können Sie überprüfen, ob diese Postleitzahlendaten auch in World Geodetic System (WGS) 84 gespeichert sind, das die Georeferenz-ID (SRID) 4326 verwendet. Geodaten müssen im selben Georeferenzsystem gespeichert werden, um interoperabel zu sein.

    SELECT ogc_field, spatial_name, spatial_type, ST_SRID(wkb_geometry), ST_AsText(wkb_geometry) FROM public.zipcode ORDER BY spatial_name;
    ogc_field spatial_name spatial_type st_srid st_astext --------------------------------------------------------------- 0 10115 Polygon 4326 POLYGON((...)) 4 10117 Polygon 4326 POLYGON((...)) 8 10119 Polygon 4326 POLYGON((...)) ... (190 rows returned)
  3. Wählen Sie das Polygon von Berlin Mitte (10117), einem Berliner Bezirk, im GeoJSON-Format, seine Dimension und die Anzahl der Punkte in diesem Polygon aus.

    SELECT ogc_field, spatial_name, ST_AsGeoJSON(wkb_geometry), ST_Dimension(wkb_geometry), ST_NPoints(wkb_geometry) FROM public.zipcode WHERE spatial_name='10117';
    ogc_field spatial_name spatial_type st_dimension st_npoint ----------------------------------------------------------------------------------------------- 4 10117 {"type":"Polygon", "coordinates":[[[...]]]} 2 331
  4. Führen Sie den folgenden SQL-Befehl aus, um anzuzeigen, wie viele Unterkünfte sich im Umkreis von 500 Metern vom Brandenburger Tor befinden.

    SELECT count(*) FROM public.accommodations WHERE ST_DistanceSphere(shape, ST_GeomFromText('POINT(13.377704 52.516431)', 4326)) < 500;
    count ------ 29
  5. Holen Sie sich den ungefähren Standort des Brandenburger Tores aus Daten, die mit den Unterkünften gespeichert sind, die als in der Nähe aufgeführt sind, indem Sie die folgende Abfrage ausführen.

    Diese Abfrage erfordert eine untergeordnete Auswahl. Es führt zu einer anderen Zählung, da der angeforderte Standort nicht mit der vorherigen Abfrage identisch ist, da er näher an den Unterkünften liegt.

    WITH poi(loc) as ( SELECT st_astext(shape) FROM accommodations WHERE name LIKE '%brandenburg gate%' ) SELECT count(*) FROM accommodations a, poi p WHERE ST_DistanceSphere(a.shape, ST_GeomFromText(p.loc, 4326)) < 500;
    count ------ 60
  6. Führen Sie die folgende Abfrage aus, um die Details aller Unterkünfte rund um das Brandenburger Tor anzuzeigen, sortiert nach Preis in absteigender Reihenfolge.

    SELECT name, price, ST_AsText(shape) FROM public.accommodations WHERE ST_DistanceSphere(shape, ST_GeomFromText('POINT(13.377704 52.516431)', 4326)) < 500 ORDER BY price DESC;
    name price st_astext ------------------------------------------------------------------------------------------------------- DUPLEX APARTMENT/PENTHOUSE in 5* LOCATION! 7583 300 POINT(13.3826510209548 52.5159819722552) DUPLEX-PENTHOUSE IN FIRST LOCATION! 7582 300 POINT(13.3799997083855 52.5135918444834) ... (29 rows returned)
  7. Führen Sie die folgende Abfrage aus, um die teuerste Unterkunft mit ihrer Postleitzahl abzurufen.

    SELECT a.price, a.name, ST_AsText(a.shape), z.spatial_name, ST_AsText(z.wkb_geometry) FROM accommodations a, zipcode z WHERE price = 9000 AND ST_Within(a.shape, z.wkb_geometry);
    price name st_astext spatial_name st_astext ------------------------------------------------------------------------------------------------------------------------------------------------- 9000 Ueber den Dächern Berlins Zentrum POINT(13.334436985013 52.4979779501538) 10777 POLYGON((13.3318284987227 52.4956021172799,...
  8. Berechnen Sie den maximalen, minimalen oder mittleren Preis von Unterkünften mithilfe einer untergeordneten Abfrage.

    Die folgende Abfrage führt den mittleren Preis der Unterkünfte nach Postleitzahl auf.

    SELECT a.price, a.name, ST_AsText(a.shape), z.spatial_name, ST_AsText(z.wkb_geometry) FROM accommodations a, zipcode z WHERE ST_Within(a.shape, z.wkb_geometry) AND price = (SELECT median(price) FROM accommodations) ORDER BY a.price;
    price name st_astext spatial_name st_astext --------------------------------------------------------------------------------------------------------------------------------------------- 45 "Cozy room Berlin-Mitte" POINT(13.3864349535358 52.5292016386514) 10115 POLYGON((13.3658598465795 52.535659581048,... ... (723 rows returned)
  9. Führen Sie die folgende Abfrage aus, um die Anzahl der in Berlin aufgeführten Unterkünfte abzurufen. Um die Hotspots zu finden, werden diese nach Postleitzahl gruppiert und nach der Menge des Angebots sortiert.

    SELECT z.spatial_name as zip, count(*) as numAccommodations FROM public.accommodations a, public.zipcode z WHERE ST_Within(a.shape, z.wkb_geometry) GROUP BY zip ORDER BY numAccommodations DESC;
    zip numaccommodations ---------------------------- 10245 872 10247 832 10437 733 10115 664 ... (187 rows returned)

Schritt 3: Bereinigen Ihrer Ressourcen

Solange Ihr Cluster ausgeführt wird, fallen Gebühren dafür an. Nachdem Sie dieses Tutorial abgeschlossen haben, können Sie Ihren Beispiel-Cluster löschen.

Wenn Sie den Cluster behalten möchten, den von den Testdatentabellen beanspruchten Speicherplatz jedoch zurückgewinnen möchten, führen Sie die folgenden Befehle zum Löschen der Tabellen aus.

drop table public.accommodations cascade;
drop table public.zipcode cascade;
DatenschutzNutzungsbedingungen für die WebsiteCookie-Einstellungen
© 2025, Amazon Web Services, Inc. oder Tochtergesellschaften. Alle Rechte vorbehalten.