Verwendung einer benutzerdefinierten Funktion (UDF) in einer materialisierten Ansicht - 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.

Verwendung einer benutzerdefinierten Funktion (UDF) in einer materialisierten Ansicht

Sie können einen Skalar UDF in einer materialisierten Amazon Redshift Redshift-Ansicht verwenden. Definieren Sie diese entweder in Python oder SQL verweisen Sie in der Definition der materialisierten Ansicht auf sie.

Referenzieren von a UDF in einer materialisierten Ansicht

Das folgende Verfahren zeigt, wie UDFs diese Methode für einfache arithmetische Vergleiche in einer Definition in materialisierter Ansicht verwendet werden kann.

  1. Erstellen Sie eine Tabelle zur Verwendung in der Definition der materialisierten Ansicht.

    CREATE TABLE base_table (a int, b int);
  2. Erstellen Sie eine skalare benutzerdefinierte Funktion in Python, die einen booleschen Wert zurückgibt, der angibt, ob eine Ganzzahl größer als eine Vergleichsganzzahl ist.

    CREATE OR REPLACE FUNCTION udf_python_bool(x1 int, x2 int) RETURNS bool IMMUTABLE AS $$ return x1 > x2 $$ LANGUAGE plpythonu;

    Sie können optional eine Funktion UDF mit ähnlicher Funktion erstellenSQL, mit der Sie die Ergebnisse mit der ersten vergleichen können.

    CREATE OR REPLACE FUNCTION udf_sql_bool(int, int) RETURNS bool IMMUTABLE AS $$ select $1 > $2; $$ LANGUAGE SQL;
  3. Erstellen Sie eine materialisierte Ansicht, die aus der Tabelle, die Sie erstellt haben, auswählt und auf die verweist. UDF

    CREATE MATERIALIZED VIEW mv_python_udf AS SELECT udf_python_bool(a, b) AS a FROM base_table;

    Optional können Sie eine materialisierte Ansicht erstellen, die auf die verweist. SQL UDF

    CREATE MATERIALIZED VIEW mv_sql_udf AS SELECT udf_sql_bool(a, b) AS a FROM base_table;
  4. Fügen Sie der Tabelle Daten hinzu und aktualisieren Sie die materialisierte Ansicht.

    INSERT INTO base_table VALUES (1,2), (1,3), (4,2);
    REFRESH MATERIALIZED VIEW mv_python_udf;

    Optional können Sie die materialisierte Ansicht aktualisieren, die auf die verweist. SQL UDF

    REFRESH MATERIALIZED VIEW mv_sql_udf;
  5. Fragen Sie Daten aus Ihrer materialisierten Ansicht ab.

    SELECT * FROM mv_python_udf ORDER BY a;

    Die Ergebnisse der Abfrage sehen wie folgt aus:

    a ----- false false true

    Dies gibt true für den letzten Satz von Werten zurück, da der Wert für Spalte a (4) größer als der Wert für Spalte b (2) ist.

  6. Optional können Sie die materialisierte Ansicht abfragen, die auf die verweist. SQL UDF Die Ergebnisse für die SQL Funktion stimmen mit den Ergebnissen der Python-Version überein.

    SELECT * FROM mv_sql_udf ORDER BY a;

    Die Ergebnisse der Abfrage sehen wie folgt aus:

    a ----- false false true

    Dies gibt true für den letzten Satz von Werten zurück, die verglichen werden sollen.

  7. Verwenden Sie eine DROP Anweisung mitCASCADE, um die benutzerdefinierte Funktion und die materialisierte Ansicht, die sie referenziert, zu löschen.

    DROP FUNCTION udf_python_bool(int, int) CASCADE;
    DROP FUNCTION udf_sql_bool(int, int) CASCADE;