이 문서는 SQL 및 LookML에 대해 우수한 기존 지식이 있는 사용자를 대상으로 하는 고급 주제입니다.
Looker는 사용자가 측정기준과 측정값을 기반으로 필터를 만들어서 쿼리를 조작할 수 있는 기능을 제공합니다. 이러한 방법으로 많은 사용 사례를 충족시킬 수 있지만 모든 분석 니즈를 지원할 수는 없습니다. 템플릿 필터와 Liquid 매개변수는 지원 가능한 사용 사례의 범위를 방대하게 확장합니다.
SQL 관점에서 측정기준과 측정값은 쿼리에서 가장 바깥쪽의 WHERE
또는 HAVING
절만 변경할 수 있습니다. 하지만 경우에 따라 사용자가 다른 SQL 부분을 조작하도록 허용해야 할 수 있습니다. 템플릿 필터 및 Liquid 매개변수를 사용하면 파생 테이블 일부를 조정하고, 쿼리되는 데이터베이스 테이블을 조정하고, 다목적 측정기준 및 필터를 만드는 등 여러 기능을 사용 설정할 수 있습니다.
템플릿 필터와 Liquid 매개변수는 Liquid 템플릿 언어를 사용해서 SQL 쿼리에 사용자 입력을 삽입합니다. 먼저 LookML 매개변수를 사용해서 상호작용할 사용자에 대해 필드를 만듭니다. 그런 후 Liquid 변수를 사용해서 SQL 쿼리에 사용자 입력을 삽입합니다.
예시
템플릿 필터와 Liquid 매개변수의 효과를 확인하기 위해 몇 가지 예시를 살펴보겠습니다.
템플릿 필터로 동적 파생 테이블 만들기
동북 리전 내에서 고객의 평생 지출을 계산하는 파생 테이블이 있다고 가정해 보세요.
view: customer_facts {
derived_table: {
sql:
SELECT
customer_id, -- Can be made a dimension
SUM(sale_price) AS lifetime_spend -- Can be made a dimension
FROM
order
WHERE
region = 'northeast' -- Can NOT be made a dimension
GROUP BY 1
;;
}
}
이 쿼리에서는 customer_id
및 lifetime_spend
에서 측정기준을 만들 수 있습니다. 하지만 이를 "northeast"로 하드 코딩하는 대신 사용자가 region
을 지정할 수 있도록 한다고 가정해 보세요. region
은 측정기준으로 노출될 수 없으므로 사용자가 일반적으로 이에 대해 필터를 사용할 수 없습니다.
한 가지 옵션은 다음과 같은 템플릿 필터를 사용하는 것입니다.
view: customer_facts {
derived_table: {
sql:
SELECT
customer_id,
SUM(sale_price) AS lifetime_spend
FROM
order
WHERE
{% condition order_region %} order.region {% endcondition %}
GROUP BY 1
;;
}
filter: order_region {
type: string
}
}
단계별 안내는 기본 사용법 섹션을 참조하세요.
Liquid 매개변수로 동적 측정값 만들기
판매된 바지 수를 합산하는 필터링된 측정값이 있다고 고려해 보세요.
measure: pants_count {
filters: [category: "pants"]
}
직관적이지만 카테고리가 십여 개 있다고 가정하면 각 항목에 대해 측정값을 만드는 것이 번거로울 수 있습니다. 또한 사용자의 Explore 환경이 복잡해질 수 있습니다.
한 가지 대안은 다음과 같은 동적 측정값을 만드는 것입니다.
measure: category_count {
type: sum
sql:
CASE
WHEN ${category} = '{% parameter category_to_count %}'
THEN 1
ELSE 0
END
;;
}
parameter: category_to_count {
type: string
}
단계별 안내는 기본 사용법 섹션을 참조하세요.
기본 사용법
1단계: 사용자가 상호작용할 대상 만들기
- 템플릿 필터의 경우
filter
를 추가합니다. - Liquid 매개변수의 경우
parameter
를 추가합니다.
어느 경우이든 이러한 필터는 필드 선택 도구의 필터 전용 필드 섹션 아래에 사용자에게 표시됩니다.
filter
및 parameter
필드 모두 일련의 하위 매개변수를 수락할 수 있으므로 작동 방식을 맞춤설정할 수 있습니다. 전체 목록은 필드 매개변수 문서 페이지를 참조하세요. parameter
필드에 대한 특별한 언급이 포함된 두 가지 옵션이 있습니다.
먼저 parameter
필드는 따옴표로 묶지 않은이라는 특수 유형을 포함할 수 있습니다.
parameter: table_name {
type: unquoted
}
이 유형에서는 문자열과 같이 따옴표로 묶지 않고 SQL에 값을 삽입할 수 있습니다. 이 옵션은 테이블 이름과 같은 SQL 값을 삽입해야 할 때 유용할 수 있습니다.
둘째, parameter
필드에는 사용자 친화적 이름을 삽입하려는 값과 연결할 수 있게 해주는 허용되는 값이라는 옵션이 있습니다. 예를 들면 다음과 같습니다.
parameter: sale_price_metric_picker {
description: "Use with the Sale Price Metric measure"
type: unquoted
allowed_value: {
label: "Total Sale Price"
value: "SUM"
}
allowed_value: {
label: "Average Sale Price"
value: "AVG"
}
allowed_value: {
label: "Maximum Sale Price"
value: "MAX"
}
allowed_value: {
label: "Minimum Sale Price"
value: "MIN"
}
}
2단계: 사용자 입력 적용
두 번째 단계는 Liquid를 사용해서 필요에 따라 템플릿 필터 또는 Liquid 매개변수를 추가하는 것입니다.
템플릿 필터
템플릿 필터의 문법은 다음과 같습니다.
{% condition filter_name %} sql_or_lookml_reference {% endcondition %}
condition
및endcondition
단어는 변경되지 않습니다.filter_name
을 첫 번째 단계에서 만든 필터 이름으로 바꿉니다. 또한 필터 전용 필드를 만들지 않았으면 측정기준을 사용할 수 있습니다.sql_or_lookml_reference
를 사용자 입력과 '같음'으로 설정해야 하는 SQL 또는 LookML로 바꿉니다(이 섹션의 뒷부분에서 자세히 설명함). LookML을 사용하는 경우${view_name.field_name}
LookML 문법을 사용합니다.
앞선 예시인 템플릿 필터로 동적 파생 테이블 만들기에서는 다음을 사용했습니다.
{% condition order_region %} order.region {% endcondition %}
Liquid 태그와 태그 사이에 작성하는 SQL 간의 상호작용을 이해하는 것이 중요합니다. 이러한 템플릿 필터 태그는 항상 논리 표현식으로 변환됩니다. 예를 들어 사용자가 order_region
필터에 "Northeast"를 입력했으면 Looker가 이러한 태그를 다음으로 변환합니다.
order.region = 'Northeast'
즉, Looker에서 사용자 입력을 해석하고 적절한 논리 표현식을 생성합니다.
템플릿 필터가 논리적 표현식을 반환하기 때문에 SQL WHERE
문에 유효한 다른 논리 연산자 및 논리적 표현식과 함께 사용할 수 있습니다. 이전 예시를 사용해서 사용자가 선택한 리전을 제외하고 모든 값을 반환하려면 WHERE
문에 다음을 사용할 수 있습니다.
NOT ({% condition order_region %} order.region {% endcondition %})
또한 LookML 필드를 필터 조건으로 사용하는 것도 유효합니다. LookML 필드에 직접 적용된 필터에 따라 WHERE
문의 값이 결정됩니다.
view: customer_facts {
derived_table: {
sql:
SELECT
customer_id,
SUM(sale_price) AS lifetime_spend
FROM
order
WHERE
{% condition region %} order.region {% endcondition %}
GROUP BY 1
;;
}
dimension: region {
type: string
sql: ${TABLE}.region ;;
}
Liquid 매개변수
Liquid 매개변수의 문법은 다음과 같이 세분화됩니다.
{% parameter parameter_name %}
parameter
단어는 변경되지 않습니다.parameter_name
을 첫 번째 단계에서 만든parameter
이름으로 바꿉니다.
예를 들어 1단계에서 parameter
필드의 입력을 적용하려면 다음과 같은 측정값을 만들면 됩니다.
measure: sale_price_metric {
description: "Use with the Sale Price Metric Picker filter-only field"
type: number
label_from_parameter: sale_price_metric_picker
sql: {% parameter sale_price_metric_picker %}(${sale_price}) ;;
value_format_name: usd
}
템플릿 필터와 Liquid 매개변수 중에서 선택
템플릿 필터와 Liquid 매개변수가 비슷하지만 둘 사이에는 중요한 차이가 있습니다.
사용자에게 보다 유연한 입력(예: 여러 유형의 날짜 범위 또는 문자열 검색 등)을 제공하려는 경우에는 가능한 경우 템플릿 필터를 사용하는 것이 좋습니다. Looker는 사용자 입력을 해석하고 자동으로 적합한 SQL을 작성할 수 있습니다. 따라서 사용자 입력에 대한 모든 가능한 유형을 고려할 필요가 없습니다.
논리적 문을 삽입할 수 없거나 사용자가 입력할 수 있는 제한적인 옵션을 미리 알고 있을 때는 Liquid 매개변수를 사용하세요.