사용
explore: explore_name {
sql_preamble: SQL STATEMENT ;;
}
|
계층 구조
sql_preamble |
기본값
없음
허용
SQL 표현식
|
정의
sql_preamble 매개변수는 탐색의 쿼리가 실행되기 전에 실행되는 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을 사용하여 임시 중앙값 추가
Google BigQuery CREATE TEMP FUNCTION 문을 사용하여 중앙값을 계산하고 탐색의 각 쿼리가 실행되기 전에 중앙값 함수를 Google BigQuery SQL에 삽입하는 Google BigQuery에서 사용자 정의 함수 (UDF)를 만듭니다.
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'] }}을 사용합니다.