사용
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 사용 패턴은 다음과 같습니다.
_filters['view_name.field_name']{% date_start date_filter_name %}{% date_end date_filter_name %}{% condition filter_name %} sql_or_lookml_reference {% endcondition %}{% if %} sql_or_lookml_reference {% else %} other_value {% endif %}{% parameter parameter_name %}parameter_name._parameter_value_user_attributes['name_of_attribute']_localization['localization_key']_model._name_explore._name_explore._dashboard_url_query._query_timezoneview_name._in_queryview_name.field_name._in_queryview_name.field_name._is_selectedview_name.field_name._is_filtered_view._name
sql_preamble에서는 다음 Liquid 사용 패턴이 지원되지 않습니다.
valuerendered_valuefilterable_valuelinklinked_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'] }}를 사용합니다.