Utilizzo di una funzione definita dall'utente (UDF) in una vista materializzata - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo di una funzione definita dall'utente (UDF) in una vista materializzata

Puoi utilizzare una UDF scalare in una vista materializzata di Amazon Redshift. Definirle in Python o SQL e fare riferimento ad esse nella definizione della vista materializzata.

Fare riferimento a una UDF in una vista materializzata

La procedura seguente mostra come utilizzare le UDF che eseguono semplici confronti aritmetici, in una definizione di vista materializzata.

  1. Creare una tabella da utilizzare nella definizione della vista materializzata.

    CREATE TABLE base_table (a int, b int);
  2. Creare una funzione scalare definita dall'utente in Python che restituisca un valore booleano che indica se un numero intero è più grande di un numero intero di confronto.

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

    Facoltativamente, creare una UDF funzionalmente simile con SQL, che è possibile usare per confrontare i risultati con la prima.

    CREATE OR REPLACE FUNCTION udf_sql_bool(int, int) RETURNS bool IMMUTABLE AS $$ select $1 > $2; $$ LANGUAGE SQL;
  3. Creare una vista materializzata che selezioni dalla tabella creata e faccia riferimento alla UDF.

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

    Facoltativamente, è possibile creare una vista materializzata che fa riferimento alla UDF SQL.

    CREATE MATERIALIZED VIEW mv_sql_udf AS SELECT udf_sql_bool(a, b) AS a FROM base_table;
  4. Aggiungere i dati alla tabella e aggiornare la vista materializzata.

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

    Facoltativamente, è possibile creare una vista materializzata che fa riferimento alla UDF SQL.

    REFRESH MATERIALIZED VIEW mv_sql_udf;
  5. Eseguire una query sui dati dalla vista materializzata.

    SELECT * FROM mv_python_udf ORDER BY a;

    I risultati della query sono i seguenti:

    a ----- false false true

    Ciò restituisce true per l'ultimo set di valori perché il valore della colonna a (4) è maggiore del valore della colonna b (2).

  6. Facoltativamente, puoi eseguire query su una vista materializzata che fa riferimento alla UDF SQL. I risultati della funzione SQL corrispondono ai risultati della versione Python.

    SELECT * FROM mv_sql_udf ORDER BY a;

    I risultati della query sono i seguenti:

    a ----- false false true

    Ciò restituisce true per l'ultimo set di valori da confrontare.

  7. Utilizzare un'istruzione DROP con CASCADE per eliminare la funzione definita dall'utente e la vista materializzata che vi fa riferimento.

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