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.
SQLFunktionen, die auf dem Leader-Knoten unterstützt werden
Einige Amazon-Redshift-Abfragen werden auf den Rechenknoten verteilt und ausgeführt. Andere Abfragen werden ausschließlich auf dem Führungsknoten ausgeführt.
Der Leader-Knoten verteilt immer dann SQL an die Rechenknoten, wenn eine Abfrage auf vom Benutzer erstellte Tabellen oder Systemtabellen verweist (Tabellen mit einem STL STV Oder-Präfix und Systemansichten mit einem SVL Or-Präfix). SVV Eine Abfrage, die nur auf Katalogtabellen verweist (Tabellen mit einem PG-Präfix wie PG_ TABLE _DEF, die sich auf dem Leader-Knoten befinden) oder die keine Tabellen referenziert, wird ausschließlich auf dem Leader-Knoten ausgeführt.
Einige Amazon Redshift SQL Redshift-Funktionen werden nur auf dem Leader-Knoten und nicht auf den Rechenknoten unterstützt. Eine Abfrage, die eine Führungsknotenfunktion verwendet, darf nur auf dem Führungsknoten und nicht auf den Rechenknoten ausgeführt werden. Andernfalls wird ein Fehler zurückgegeben.
Die Dokumentation für die einzelnen Funktionen, die ausschließlich auf dem Führungsknoten ausgeführt werden können, enthält einen Hinweis darauf, dass die Funktion einen Fehler zurückgibt, wenn sie benutzerdefinierte Tabellen oder Amazon-Redshift-Systemtabellen referenziert. Eine Liste von Funktionen, die ausschließlich auf dem Führungsknoten ausgeführt werden, finden Sie unter Exklusive Führungsknotenfunktionen.
Beispiele
In den folgenden Beispielen wird die TICKIT Beispieldatenbank verwendet. Weitere Informationen zur Beispieldatenbank finden Sie unterBeispieldatenbank.
CURRENT_SCHEMA
Die SCHEMA Funktion CURRENT _ ist eine reine Leader-Node-Funktion. In diesem Beispiel referenziert die Abfrage keine Tabelle, d. h. sie wird ausschließlich auf dem Führungsknoten ausgeführt.
select current_schema();
current_schema --------------- public
Im nächsten Beispiel referenziert die Abfrage eine Systemkatalogtabelle, d. h. sie wird ausschließlich auf dem Führungsknoten ausgeführt.
select * from pg_table_def where schemaname = current_schema() limit 1;
schemaname | tablename | column | type | encoding | distkey | sortkey | notnull ------------+-----------+--------+----------+----------+---------+---------+--------- public | category | catid | smallint | none | t | 1 | t
Im nächsten Beispiel referenziert die Abfrage eine Amazon-Redshift-Systemtabelle, die sich auf den Rechenknoten befindet, d. h. es wird ein Fehler zurückgegeben.
select current_schema(), userid from users;
INFO: Function "current_schema()" not supported. ERROR: Specified types or functions (one per INFO message) not supported on Amazon Redshift tables.
SUBSTR
SUBSTRist auch eine reine Leader-Node-Funktion. Im folgenden Beispiel wird die Abfrage ausschließlich auf dem Führungsknoten ausgeführt, da sie nicht auf eine Tabelle verweist.
SELECT SUBSTR('amazon', 5);
+--------+ | substr | +--------+ | on | +--------+
Im folgenden Beispiel verweist die Abfrage auf eine Tabelle, die sich auf dem Datenverarbeitungsknoten befindet. Dies führt zu einem Fehler.
SELECT SUBSTR(catdesc, 1) FROM category LIMIT 1;
ERROR: SUBSTR() function is not supported (Hint: use SUBSTRING instead)
Um die vorherige Abfrage erfolgreich auszuführen, verwenden Sie. SUBSTRING
SELECT SUBSTRING(catdesc, 1) FROM category LIMIT 1;
+---------------------------------+ | substring | +---------------------------------+ | National Basketball Association | +---------------------------------+
FACTORIAL()
FACTORIAL() ist eine reine Leader-Node-Funktion. Im folgenden Beispiel wird die Abfrage ausschließlich auf dem Führungsknoten ausgeführt, da sie nicht auf eine Tabelle verweist.
SELECT FACTORIAL(5);
factorial ------------- 120
Im folgenden Beispiel verweist die Abfrage auf eine Tabelle, die sich auf dem Datenverarbeitungsknoten befindet. Dies führt zu einem Fehler bei der Ausführung mit dem Abfrage-Editor v2.
create table t(a int); insert into t values (5); select factorial(a) from t;
ERROR: Specified types or functions (one per INFO message) not supported on Redshift tables. Info: Function "factorial(bigint)" not supported.