ALTER DATASHARE - Amazon Redshift

Amazon Redshift unterstützt ab dem 1. November 2025 nicht mehr die Erstellung neuer Python-UDFs. Wenn Sie Python-UDFs verwenden möchten, erstellen Sie die UDFs vor diesem Datum. Bestehende Python-UDFs funktionieren weiterhin wie gewohnt. Weitere Informationen finden Sie im Blog-Posting.

ALTER DATASHARE

Ändert die Definition eines Datashares. Sie können mit ALTER DATASHARE Objekte hinzufügen oder entfernen. Sie können nur ein Datashare in der aktuellen Datenbank ändern. Fügen Sie Objekte aus der zugehörigen Datenbank einem Datashare hinzu oder entfernen Sie sie daraus. Der Besitzer des Datashares mit den erforderlichen Berechtigungen für die hinzuzufügenden oder zu entfernenden Datashare-Objekte kann das Datashare ändern.

Erforderliche Berechtigungen

Für ALTER DATASHARE sind folgende Berechtigungen erforderlich:

  • Superuser.

  • Benutzer mit der Berechtigung ALTER DATASHARE.

  • Benutzer mit der Berechtigung ALTER oder ALL für das Datashare.

  • Um bestimmte Objekte zu einem Datashare hinzuzufügen, müssen diese Benutzer die Berechtigung für die Objekte haben. Für diesen Fall sollten Benutzer auch Besitzer der Objekte sein oder SELECT-, USAGE- oder ALL-Berechtigungen für die Objekte haben.

Syntax

Die folgende Syntax veranschaulicht, wie Objekte zum Datashare hinzugefügt oder von diesem entfernt werden.

ALTER DATASHARE datashare_name { ADD | REMOVE } {
TABLE schema.table [, ...]
| SCHEMA schema [, ...]
| FUNCTION schema.sql_udf (argtype,...) [, ...]
| ALL TABLES IN SCHEMA schema [, ...]
| ALL FUNCTIONS IN SCHEMA schema [, ...] }

Die folgende Syntax veranschaulicht, wie die Eigenschaften eines Datashares konfiguriert werden.

ALTER DATASHARE datashare_name {
[ SET PUBLICACCESSIBLE [=] TRUE | FALSE ]
[ SET INCLUDENEW [=] TRUE | FALSE FOR SCHEMA schema ] }

Parameter

datashare_name

Der Name der zu ändernden Datashares.

ADD | REMOVE

Eine Klausel, die angibt, ob dem Datashare Objekte hinzugefügt oder daraus entfernt werden sollen.

TABLE schema.table [, ...]

Der Name der Tabelle oder Ansicht im angegebenen Schema, die dem Datashare hinzugefügt werden soll.

SCHEMA schema [, ...]

Der Name des Schemas, das dem Datashare hinzugefügt werden soll.

FUNCTION schema.sql_udf (argtype,...) [, ...]

Der Name der benutzerdefinierten SQL-Funktion mit Argumenttypen, die dem Datashare hinzugefügt werden soll.

ALL TABLES IN SCHEMA schema [, ...]

Eine Klausel, die angibt, ob alle Tabellen und Ansichten im angegebenen Schema zum Datashare hinzugefügt werden sollen.

ALL FUNCTIONS IN SCHEMA schema [, ...] }

Eine Klausel, die das Hinzufügen aller Funktionen im angegebenen Schema zum Datashare festlegt.

[ SET PUBLICACCESSIBLE [=] TRUE | FALSE ]

Eine Klausel, die angibt, ob ein Datashare für öffentlich zugängliche Cluster freigegeben werden kann.

[ SET INCLUDENEW [=] TRUE | FALSE FOR SCHEMA schema ]

Eine Klausel, die angibt, ob zukünftige Tabellen, Ansichten oder benutzerdefinierte SQL-Funktionen (UDFs), die in dem angegebenen Schema erstellt wurden, dem Datashare hinzugefügt werden sollen. Aktuelle Tabellen, Ansichten oder SQL UDFs im angegebenen Schema werden dem Datashare nicht hinzugefügt. Nur Superuser können diese Eigenschaft für jedes Datashare-Schema-Paar ändern. Standardmäßig lautet die INCLUDENEW-Klausel „false“.

Nutzungshinweise für ALTER DATASHARE

  • Die folgenden Benutzer können ein Datashare ändern:

    • Ein Superuser

    • Der Besitzer des Datashares

    • Benutzer mit ALTER- oder ALL-Privilegien für das Datashare

  • Um bestimmte Objekte zu einem Datashare hinzuzufügen, müssen Benutzer die richtigen Berechtigungen für die Objekte haben. Benutzer sollten auch Besitzer der Objekte sein oder SELECT, USAGE- oder ALL-Berechtigungen für die Objekte haben.

  • Sie können Schemata, Tabellen, reguläre Ansichten, spätbindende Ansichten, materialisierte Ansichten und benutzerdefinierte SQL-Funktionen (UDFs) freigeben. Fügen Sie einem Datashare zuerst ein Schema hinzu, bevor Sie Objekte im Schema hinzufügen.

    Wenn Sie ein Schema hinzufügen, fügt Amazon Redshift nicht alle untergeordneten Objekte hinzu. Sie müssen sie explizit hinzufügen.

  • Wir empfehlen Ihnen, bei der Erstellung von AWS Data Exchange-Datashares die Einstellung für den öffentlichen Zugriff zu aktivieren.

  • Im Allgemeinen empfehlen wir, ein AWS Data Exchange-Datashare nicht so zu ändern, dass die öffentliche Zugänglichkeit mit der Anweisung ALTER DATASHARE deaktiviert wird. Wenn Sie dies tun, verlieren die AWS-Konten, die Zugriff auf das Datashare haben, den Zugriff, wenn ihre Cluster öffentlich zugänglich sind. Diese Art der Änderung kann außerdem zu einer Verletzung der Datenproduktbedingungen in führen AWS Data Exchange. Eine Ausnahme dieser Empfehlung wird im Folgenden erklärt.

    Im folgenden Beispiel sehen Sie einen Fehler, der auftritt, wenn bei der Erstellung eines AWS Data Exchange-Datashares die Einstellung deaktiviert ist.

    ALTER DATASHARE salesshare SET PUBLICACCESSIBLE FALSE; ERROR: Alter of ADX-managed datashare salesshare requires session variable datashare_break_glass_session_var to be set to value 'c670ba4db22f4b'

    Um bei einer Änderung eines AWS Data Exchange-Datashares die Deaktivierung der Einstellung für den öffentlichen Zugriff zu erlauben, legen Sie die folgende Variable fest und führen die ALTER DATASHARE-Anweisung erneut aus.

    SET datashare_break_glass_session_var to 'c670ba4db22f4b';
    ALTER DATASHARE salesshare SET PUBLICACCESSIBLE FALSE;

    In diesem Fall generiert Amazon Redshift einen zufälligen Einmalwert zur Festlegung der Sitzungsvariable, um ALTER DATASHARE SET PUBLICACCESSIBLE FALSE für ein AWS Data Exchange-Datashare zu erlauben.

Beispiele

Im folgenden Beispiel wird das Schema public zum Datashare salesshare hinzugefügt.

ALTER DATASHARE salesshare ADD SCHEMA public;

Im folgenden Beispiel wird die Tabelle public.tickit_sales_redshift zum Datashare salesshare hinzugefügt.

ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift;

Im folgenden Beispiel werden alle Tabellen zum Datashare hinzugefügt salesshare.

ALTER DATASHARE salesshare ADD ALL TABLES IN SCHEMA PUBLIC;

Im folgenden Beispiel wird die Tabelle public.tickit_sales_redshift vom Datashare salesshare entfernt.

ALTER DATASHARE salesshare REMOVE TABLE public.tickit_sales_redshift;