sql_preamble

사용

explore: explore_name {
  sql_preamble: SQL STATEMENT  ;;
}
계층 구조
sql_preamble
기본값
없음
수락
SQL 표현식

정의

sql_preamble 매개변수는 Explore의 쿼리가 실행되기 전에 실행되는 SQL 문을 지정합니다. sql_preamble의 기본 용도는 Google BigQuery에서 사용자 정의 함수 (UDF)를 만드는 것입니다. 대부분의 데이터베이스 다이얼렉트에서는 데이터베이스 서버에 직접 UDF를 설치할 수 있지만 Google BigQuery는 상태 비저장이므로 sql_preamble에서 이 기능을 제공합니다.

sql_preamble에서 Liquid 사용

sql_preamble 매개변수는 Liquid 및 사용자 속성을 지원하므로 세션 변수 설정, 다양한 웨어하우스 또는 데이터베이스 선택, BigQuery에서 파티션 가지치기 구현과 같은 사용 사례에 동적 SQL 생성이 가능하며, 기본 데이터베이스와 더 직접적으로 상호작용하여 유연한 데이터 필터링이 가능합니다.

sql_preamble 매개변수에서 지원되는 Liquid 사용 패턴은 다음과 같습니다.

sql_preamble에서는 다음 Liquid 사용 패턴이 지원되지 않습니다.

  • value
  • rendered_value
  • filterable_value
  • link
  • linked_value
  • _field._name

예시

sql_preamble를 사용하여 BigQuery 예약 지정

sql_preamble 매개변수에서 BigQuery SET @@reservation SQL 문을 사용하여 Explore의 쿼리에 사용할 Google BigQuery 예약을 지정합니다.

explore: orders {
  sql_preamble:
    SET @@reservation='projects/your-project/locations/your-location/reservations/your-reservation';
}

sql_preamble을 사용하여 임시 중앙값 추가

Google BigQuery CREATE TEMP FUNCTION 문을 사용하여 중앙값을 계산하고 탐색 분석의 각 쿼리가 실행되기 전에 중앙값 함수를 Google BigQuery SQL에 삽입하는 사용자 정의 함수 (UDF)를 Google BigQuery에서 만듭니다.

explore: salary {
  sql_preamble:
    CREATE TEMP FUNCTION MEDIAN(a_num ARRAY<FLOAT64>)
    RETURNS FLOAT64 AS ((
       SELECT
          AVG(num)
        FROM (
          SELECT
            row_number() OVER (ORDER BY num) -1 as rn
            , num
          FROM UNNEST(a_num) num
        )
        WHERE
          rn = TRUNC(ARRAY_LENGTH(a_num)/2)
            OR (
             MOD(ARRAY_LENGTH(a_num), 2) = 0 AND
              rn = TRUNC(ARRAY_LENGTH(a_num)/2)-1 )
    ));
  ;;
}

sql_preamble에서 Liquid를 사용하여 테이블 이름 현지화

sql_preamble에서 Liquid를 사용하여 사용자가 선택한 언어를 기반으로 이름이 지정된 임시 테이블을 만듭니다. 그러면 단일 LookML 모델이 다양한 내부 이름 지정 규칙에 적응할 수 있습니다.

explore: orders {
  sql_preamble: 
    WITH {{ _localization['storage_table_name'] }} AS (select * from users);;
  ...
}

임시 테이블에 mytable과 같은 하드코딩된 이름을 사용하는 대신 이 코드는 Liquid 변수를 storage_table_name 키의 지역 문자열 파일에 정의된 실제 문자열로 대체합니다. 자세한 내용은 Liquid 변수에서 언어 사용을 참고하세요.

서문을 따르는 Looker 쿼리는 이 동적으로 이름이 지정된 테이블을 참조합니다. 예를 들어 SQL 쿼리는 FROM {{ _localization['storage_table_name'] }}를 사용합니다.