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 usare uno scalare UDF in una vista materializzata di Amazon Redshift. Definiscili in python o SQL fai riferimento ad essi nella definizione della vista materializzata.

Fare riferimento a UDF in una vista materializzata

La procedura seguente mostra come UDFs utilizzarlo per eseguire 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, create un valore funzionalmente simile UDF conSQL, che potete utilizzare per confrontare i risultati con il primo.

    CREATE OR REPLACE FUNCTION udf_sql_bool(int, int) RETURNS bool IMMUTABLE AS $$ select $1 > $2; $$ LANGUAGE SQL;
  3. Create una vista materializzata che selezioni dalla tabella creata e faccia riferimento a. 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 faccia riferimento a. SQL UDF

    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 aggiornare la vista materializzata che fa riferimento a. SQL UDF

    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, è possibile interrogare la vista materializzata che fa riferimento a. SQL UDF I risultati della SQL funzione 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. Utilizzate un'DROPistruzione 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;