SQL-Funktionen, die auf dem Führungsknoten unterstützt werden - 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.

SQL-Funktionen, die auf dem Führungsknoten 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 Führungsknoten verteilt SQL auf den Datenverarbeitungsknoten, wenn eine Abfrage benutzererstellte Tabellen oder Systemtabellen (Tabellen mit einem STL- oder STV-Präfix und Systemansichten mit einem SVL- oder SVV-Präfix) referenziert. Eine Abfrage, die nur Katalogtabellen (Tabellen mit einem PG-Präfix wie PG_TABLE_DEF, die sich auf dem Führungsknoten befinden) oder keine Tabellen referenziert, wird ausschließlich auf dem Führungsknoten ausgeführt.

Einige SQL-Funktionen von Amazon Redshift werden nur auf dem Führungsknoten 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 unter. Beispieldatenbank

CURRENT_SCHEMA

Die Funktion CURRENT_SCHEMA ist eine exklusiven Führungsknotenfunktion. 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

SUBSTR ist außerdem eine exklusive Führungsknotenfunktion. 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)

Verwenden Sie SUBSTRING, um die vorherige Abfrage erfolgreich auszuführen.

SELECT SUBSTRING(catdesc, 1) FROM category LIMIT 1; +---------------------------------+ | substring | +---------------------------------+ | National Basketball Association | +---------------------------------+

FAKTORIELL ()

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 bei der Ausführung mit dem Abfrage-Editor v2 zu einem Fehler.

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.