구체화된 뷰의 사용자 정의 함수(UDF) 사용 - Amazon Redshift

구체화된 뷰의 사용자 정의 함수(UDF) 사용

Amazon Redshift 구체화된 뷰에서 스칼라 UDF를 사용할 수 있습니다. 이를 Python 또는 SQL로 정의하고 구체화된 뷰 정의에서 참조합니다.

구체화된 뷰에서의 UDF 참조

다음 절차는 구체화된 뷰 정의에서 간단한 산술 비교를 수행하는 UDF를 사용하는 방법을 보여줍니다.

  1. 구체화된 뷰 정의에서 사용할 테이블을 생성합니다.

    CREATE TABLE base_table (a int, b int);
  2. 정수가 비교 정수보다 큰지 여부를 나타내는 부울 값을 반환하는 Python에서 스칼라 사용자 정의 함수를 만듭니다.

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

    선택적으로 SQL과 기능이 유사한 UDF를 생성하여 결과를 첫 번째 함수와 비교할 수 있습니다.

    CREATE OR REPLACE FUNCTION udf_sql_bool(int, int) RETURNS bool IMMUTABLE AS $$ select $1 > $2; $$ LANGUAGE SQL;
  3. 생성한 테이블에서 선택하고 UDF를 참조하는 구체화된 뷰를 생성합니다.

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

    선택적으로 SQL UDF를 참조하는 구체화된 뷰를 생성할 수 있습니다.

    CREATE MATERIALIZED VIEW mv_sql_udf AS SELECT udf_sql_bool(a, b) AS a FROM base_table;
  4. 테이블에 데이터를 추가하고 구체화된 뷰를 새로 고칩니다.

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

    선택적으로 SQL UDF를 참조하는 구체화된 뷰를 새로 고칠 수 있습니다.

    REFRESH MATERIALIZED VIEW mv_sql_udf;
  5. 구체화된 뷰의 데이터를 쿼리합니다.

    SELECT * FROM mv_python_udf ORDER BY a;

    쿼리의 결과는 다음과 같습니다.

    a ----- false false true

    a(4)의 값이 열 b(2)의 값보다 크기 때문에 마지막 값 집합에 대해 true가 반환됩니다.

  6. 선택적으로 SQL UDF를 참조하는 구체화된 뷰를 쿼리할 수 있습니다. SQL 함수의 결과는 Python 버전의 결과와 일치합니다.

    SELECT * FROM mv_sql_udf ORDER BY a;

    쿼리의 결과는 다음과 같습니다.

    a ----- false false true

    이렇게 하면 비교할 마지막 값 집합에 대해 true가 반환됩니다.

  7. CASCADE와 함께 DROP 문을 사용하여 사용자 정의 함수와 이를 참조하는 구체화된 뷰를 삭제합니다.

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