이 페이지에서는 측정값의 일부인
type
매개변수를 설명합니다.
type
은 측정기준, 필터, 매개변수 유형 문서 페이지에 설명된 측정기준 또는 필터의 일부로 사용할 수도 있습니다.
type
는dimension_group
매개변수 문서 페이지에 설명된 측정기준 그룹의 일부로 사용할 수도 있습니다.
용도
measure: field_name {
type: measure_field_type
}
}
계층 구조
type |
가능한 필드 유형
측정결제 가능
측정 유형 |
이 페이지에는 측정에 할당할 수 있는 다양한 유형에 대한 세부정보가 포함되어 있습니다. 측정에는 한 가지 유형만 있을 수 있으며 유형을 지정하지 않으면 기본값은 string
입니다.
일부 측정 유형에는 관련 섹션에 설명된 지원 매개변수가 있습니다.
유형 카테고리 측정
각 측정 유형은 다음 카테고리 중 하나에 속합니다. 다음 카테고리는 측정 유형이 집계를 실행하는지 여부, 측정 유형이 참조할 수 있는 필드 유형, filters
매개변수를 사용하여 측정 유형을 필터링할 수 있는지 여부를 결정합니다.
- 집계 측정: 집계 측정 유형은
sum
및average
과 같은 집계를 수행합니다. 집계 측정값은 측정기준만 참조할 수 있으며 다른 측정값은 참조할 수 없습니다. 이는filters
매개변수와 함께 사용할 수 있는 유일한 측정 유형입니다. - 비집계 측정: 집계가 아닌 측정은 이름에서 알 수 있듯이
number
및yesno
와 같이 집계를 실행하지 않는 측정 유형입니다. 이러한 측정 유형은 간단한 변환을 수행하고 집계를 수행하지 않으므로 집계 측정값 또는 이전에 집계된 측정기준만 참조할 수 있습니다. 이러한 측정 유형에서는filters
매개변수를 사용할 수 없습니다. - SQL 후 측정: SQL 후 측정은 Looker에서 쿼리 SQL을 생성한 후 특정 계산을 수행하는 특별한 측정 유형입니다. 숫자 측정값 또는 숫자 측정기준만 참조할 수 있습니다. 이러한 측정 유형에서는
filters
매개변수를 사용할 수 없습니다.
유형 정의 목록
유형 | 카테고리 | 설명 |
---|---|---|
average |
집계 | 열 내에 값의 평균 (평균)을 생성합니다. |
average_distinct |
집계 | 비정규화된 데이터를 사용할 때 값의 평균을 올바르게 생성합니다. 자세한 설명은 아래 정의를 참고하세요. |
count |
집계 | 행 수 생성 |
count_distinct |
집계 | 열 내의 고유 값 개수를 생성합니다. |
date |
비집계 | 날짜가 포함된 측정의 경우 |
list |
집계 | 열 내의 고유 값 목록을 생성합니다. |
max |
집계 | 열 내에 최댓값을 생성합니다. |
median |
집계 | 열 내에 있는 값의 중간값 (중간값)을 생성합니다. |
median_distinct |
집계 | 조인이 팬아웃을 일으킬 때 값의 중앙값 (중간값)을 올바르게 생성합니다. 자세한 설명은 아래 정의를 참고하세요. |
min |
집계 | 열 내에 최솟값을 생성합니다. |
number |
비집계 | 숫자가 포함된 측정의 경우 |
percent_of_previous |
SQL 이후 | 표시된 행 간의 비율 차이를 생성합니다. |
percent_of_total |
SQL 이후 | 표시된 각 행의 총계 백분율을 생성합니다. |
percentile |
집계 | 열 내에 지정된 백분위수의 값을 생성합니다. |
percentile_distinct |
집계 | 조인으로 인해 팬아웃이 발생할 때 지정된 백분위수에서 값이 올바르게 생성됩니다. 자세한 설명은 아래 정의를 참고하세요. |
running_total |
SQL 이후 | 표시된 각 행의 누계를 생성합니다. |
string |
비집계 | 문자 또는 특수문자가 포함된 측정의 경우 (MySQL의 GROUP_CONCAT 함수에서와 같이) |
sum |
집계 | 열 내의 값의 합계를 생성합니다. |
sum_distinct |
집계 | 비정규화된 데이터를 사용할 때는 값의 합계를 적절하게 생성합니다. 자세한 설명은 아래 정의를 참고하세요. |
yesno |
비집계 | 참 또는 거짓인지 표시할 필드 |
int |
비집계 |
삭제된 5.4
type: number 로 대체됨 |
average
type: average
는 특정 필드에 있는 값의 평균을 냅니다. SQL의 AVG
함수와 유사합니다. 하지만 원시 SQL 작성과 달리 Looker는 쿼리의 조인에 팬아웃이 포함되어 있어도 평균을 올바르게 계산합니다.
type: average
측정의 sql
매개변수는 숫자 테이블 열, LookML 측정기준 또는 LookML 측정기준의 조합을 생성하는 유효한 SQL 표현식을 사용할 수 있습니다.
type: average
필드는 value_format
또는 value_format_name
매개변수를 사용하여 형식을 지정할 수 있습니다.
예를 들어 다음 LookML은 sales_price
측정기준을 평균화하여 avg_order
라는 필드를 만든 다음 금액 형식 ($1,234.56)으로 표시합니다.
measure: avg_order {
type: average
sql: ${sales_price} ;;
value_format_name: usd
}
average_distinct
type: average_distinct
은 비정규화된 데이터 세트에 사용합니다. sql_distinct_key
매개변수로 정의된 고유한 값을 기준으로 지정된 필드에서 반복되지 않은 값의 평균을 냅니다.
이는 예시를 통해 더 명확하게 설명할 수 있는 고급 개념입니다. 다음과 같이 비정규화된 테이블을 생각해 보세요.
주문 항목 ID | 주문 ID | 주문 배송 |
---|---|---|
1 | 1 | 10,000원 |
2 | 1 | 10,000원 |
3 | 2 | 20,000원 |
4 | 2 | 20,000원 |
5 | 2 | 20,000원 |
이 경우 각 주문에 여러 행이 있음을 알 수 있습니다. 따라서 order_shipping
열에 간단한 type: average
측정값을 추가하면 실제 평균은 15.00이더라도 16.00이 됩니다.
# Will NOT calculate the correct average
measure: avg_shipping {
type: average
sql: ${order_shipping} ;;
}
정확한 결과를 얻으려면 sql_distinct_key
매개변수를 사용하여 Looker에 각 고유 항목 (이 경우에는 각 순 주문)을 식별하는 방법을 설명합니다. 그러면 정확한 15.00 금액이 계산됩니다.
# Will calculate the correct average
measure: avg_shipping {
type: average_distinct
sql_distinct_key: ${order_id} ;;
sql: ${order_shipping} ;;
}
sql_distinct_key
의 모든 고유한 값은 sql
에 상응하는 하나의 값만 가져야 합니다. 즉, 위 예는 order_id
가 1인 모든 행의 order_shipping
가 10.00이고 order_id
가 2인 모든 행의 order_shipping
가 20.00이라는 식으로 계속 이어집니다.
type: average_distinct
필드는 value_format
또는 value_format_name
매개변수를 사용하여 형식을 지정할 수 있습니다.
count
type: count
는 SQL의 COUNT
함수와 유사한 테이블 수를 수행합니다. 하지만 원시 SQL 작성과 달리 Looker는 쿼리의 조인에 팬아웃이 포함되어 있어도 개수를 올바르게 계산합니다.
type: count
측정값은 sql
매개변수를 지원하지 않습니다. type: count
측정값은 테이블의 기본 키를 기준으로 테이블 수를 실행하기 때문입니다. 테이블의 기본 키가 아닌 필드에서 테이블 수를 수행하려면 type: count_distinct
측정값을 사용합니다.
예를 들어 다음 LookML은 number_of_products
필드를 만듭니다.
view: products {
measure: number_of_products {
type: count
drill_fields: [product_details*] # optional
}
}
사용자가 클릭할 때 집계를 구성하는 개별 레코드를 확인할 수 있도록 type: count
측정을 정의할 때 drill_fields
(필드용) 매개변수를 제공하는 것이 매우 일반적입니다.
탐색에서
type: count
측정 값을 사용하면 시각화가 결과 값에 'Count'라는 단어가 아닌 뷰 이름으로 라벨을 지정합니다. 혼동을 피하려면 뷰 이름을 복수로 지정하거나 시각화 설정의 시리즈에서 전체 필드 이름 표시를 선택하거나view_label
을 사용하여 보기 이름의 복수형을 사용하는 것이 좋습니다.
기본 키가 아닌 필드에서 COUNT
(COUNT_DISTINCT
아님)를 수행하려면 type: number
측정값을 사용하면 됩니다. 자세한 내용은 고객센터 도움말 count
와 count_distinct
측정 유형 간의 차이점을 참고하세요.
filters
매개변수를 사용하여 type: count
측정값에 필터를 추가할 수 있습니다.
count_distinct
type: count_distinct
는 지정된 필드의 고유 값 수를 계산합니다. SQL의 COUNT DISTINCT
함수를 사용합니다.
type: count_distinct
측정의 sql
매개변수는 테이블 열, LookML 측정기준 또는 LookML 측정기준의 조합을 생성하는 유효한 SQL 표현식을 사용할 수 있습니다.
예를 들어 다음 LookML은 고유한 고객 ID 수를 계산하는 number_of_unique_customers
필드를 만듭니다.
measure: number_of_unique_customers {
type: count_distinct
sql: ${customer_id} ;;
}
filters
매개변수를 사용하여 type: count_distinct
측정값에 필터를 추가할 수 있습니다.
date
type: date
는 날짜가 포함된 필드에 사용됩니다.
type: date
측정의 sql
매개변수는 날짜를 생성하는 유효한 SQL 표현식을 사용할 수 있습니다. 대부분의 SQL 집계 함수는 날짜를 반환하지 않으므로 이 유형은 실제로 거의 사용되지 않습니다. 한 가지 일반적인 예외는 날짜 측정기준의 MIN
또는 MAX
입니다.
type: date
를 사용하여 최대 또는 최소 날짜 측정 만들기
최대 또는 최소 날짜에 대한 측정값을 생성하려는 경우 처음에 type: max
또는 type: min
측정값을 사용하는 것이 적합하다고 생각할 수 있습니다. 그러나 이러한 측정 유형은 숫자 필드와만 호환됩니다. 대신 type: date
의 측정값을 정의하고 sql
매개변수에 참조된 날짜 필드를 MIN()
또는 MAX()
함수로 래핑하여 최대 또는 최소 날짜를 캡처할 수 있습니다.
updated
라는 type: time
의 측정기준 그룹이 있다고 가정해 보겠습니다.
dimension_group: updated {
type: time
timeframes: [time, date, week, month, raw]
sql: ${TABLE}.updated_at ;;
}
type: date
의 측정값을 만들어 다음과 같이 이 측정기준 그룹의 최대 날짜를 캡처할 수 있습니다.
measure: last_updated_date {
type: date
sql: MAX(${updated_raw}) ;;
convert_tz: no
}
이 예에서는 type: max
측정값을 사용하여 last_updated_date
측정을 만드는 대신 MAX()
함수가 sql
매개변수에 적용됩니다. 또한 측정기준 측정값 updated
의 정의에서 시간대 전환이 이미 발생했으므로 last_updated_date
측정값에서 convert_tz
매개변수가 no
로 설정되어 측정에서 이중 시간대 전환을 방지합니다. 자세한 내용은 convert_tz
매개변수에 관한 문서를 참고하세요.
last_updated_date
측정의 LookML 예에서 string
는 type
의 기본값이므로 type: date
를 생략하고 그 값을 문자열로 처리할 수 있습니다. 그러나 type: date
를 사용하면 사용자를 위한 필터링 기능이 향상됩니다.
또한 last_updated_date
측정 정의가 ${updated_date}
기간이 아닌 ${updated_raw}
기간을 참조합니다. ${updated_date}
에서 반환된 값이 문자열이므로 대신 ${updated_raw}
를 사용하여 실제 날짜 값을 참조해야 합니다.
datatype
매개변수를 type: date
와 함께 사용하면 데이터베이스 테이블에서 사용하는 날짜 데이터 유형을 지정하여 쿼리 성능을 개선할 수 있습니다.
날짜/시간 열의 최대 또는 최소 측정값 만들기
type: datetime
열의 최댓값을 계산하는 것은 약간 다릅니다. 이 경우 다음과 같이 유형을 선언하지 않고 측정값을 만들 수 있습니다.
measure: last_updated_datetime {
sql: MAX(${TABLE}.datetime_string_field) ;;
}
list
type: list
는 지정된 필드에 고유한 값 목록을 만듭니다. MySQL의 GROUP_CONCAT
함수와 유사합니다.
type: list
측정값에 sql
매개변수를 포함하지 않아도 됩니다. 대신 list_field
매개변수를 사용하여 목록을 만들 측정기준을 지정합니다.
사용법은 다음과 같습니다.
measure: field_name {
type: list
list_field: my_field_name
}
}
예를 들어 다음 LookML은 name
측정기준을 기반으로 name_list
측정을 만듭니다.
measure: name_list {
type: list
list_field: name
}
list
의 다음 사항에 유의하세요.
list
측정 유형은 필터링을 지원하지 않습니다.type: list
측정에는filters
매개변수를 사용할 수 없습니다.list
측정 유형은 대체 연산자 ($)를 사용하여 참조할 수 없습니다.type: list
구문을 참조하는${}
구문을 사용할 수 없습니다.
list
에 지원되는 데이터베이스 언어
Looker 프로젝트에서 type: list
를 지원하려면 데이터베이스 언어에서도 Looker를 지원해야 합니다. 다음 표는 최신 Looker 버전에서 type: list
를 지원하는 언어를 보여줍니다.
max
type: max
는 지정된 필드에서 가장 큰 값을 찾습니다. SQL의 MAX
함수를 사용합니다.
type: max
측정의 sql
매개변수는 숫자 테이블 열, LookML 측정기준 또는 LookML 측정기준의 조합을 생성하는 유효한 SQL 표현식을 사용할 수 있습니다.
type: max
측정값은 숫자 필드와만 호환되므로 type: max
측정값을 사용하여 최대 날짜를 찾을 수는 없습니다. 대신, 이전에 date
섹션의 예에서 본 것처럼 type: date
측정값의 sql
매개변수에 MAX()
함수를 사용하여 최대 날짜를 캡처할 수 있습니다.
type: max
필드는 value_format
또는 value_format_name
매개변수를 사용하여 형식을 지정할 수 있습니다.
예를 들어 다음 LookML은 sales_price
측정기준을 확인하여 largest_order
라는 필드를 만든 다음 금액 형식 ($1,234.56)으로 표시합니다.
measure: largest_order {
type: max
sql: ${sales_price} ;;
value_format_name: usd
}
현재 문자열이나 날짜에 type: max
측정값을 사용할 수 없지만 다음과 같이 MAX
함수를 직접 추가하여 이러한 필드를 만들 수 있습니다.
measure: latest_name_in_alphabet {
type: string
sql: MAX(${name}) ;;
}
median
type: median
는 지정된 필드의 값에 중간값을 반환합니다. 이는 데이터에 단순한 평균 (평균)을 왜곡하는 몇 가지 매우 크거나 작은 이상점 값이 있는 경우 특히 유용합니다.
다음과 같은 표를 살펴보세요.
주문 항목 ID | 비용 | 중점 -------------:|--------------: 2 | 10.00 | 4 | 10.00 | 3 | 20.00 | 중간값 1 | 80.00 | 5 | 90.00 |
쉽게 볼 수 있도록 테이블이 비용별로 정렬되지만 결과에 영향을 주지는 않습니다. average
유형은 42 (모든 값을 더하고 5로 나눈 값)를 반환하지만 median
유형은 중간값인 20.00을 반환합니다.
짝수 개의 값이 있는 경우 중간값에 가장 가까운 두 값의 평균을 구해 중앙값을 계산합니다. 다음과 같이 짝수 행의 테이블이 있다고 가정해 보겠습니다.
주문 항목 ID | 비용 | 중점 -->
중간값인 중앙값은 (20 + 80)/2 = 50
입니다.
중앙값은 50번째 백분위수 값과 같습니다.
type: median
측정의 sql
매개변수는 숫자 테이블 열, LookML 측정기준 또는 LookML 측정기준의 조합을 생성하는 유효한 SQL 표현식을 사용할 수 있습니다.
type: median
필드는 value_format
또는 value_format_name
매개변수를 사용하여 형식을 지정할 수 있습니다.
예
예를 들어 다음 LookML은 sales_price
측정기준을 평균화하여 median_order
라는 필드를 만든 다음 금액 형식 ($1,234.56)으로 표시합니다.
measure: median_order {
type: median
sql: ${sales_price} ;;
value_format_name: usd
}
median
관련 고려사항
팬아웃과 관련된 필드에 median
를 사용하는 경우 Looker에서 대신 median_distinct
를 사용하려고 시도합니다. 하지만 medium_distinct
는 특정 언어에만 지원됩니다. median_distinct
를 방언에 사용할 수 없는 경우 Looker에서 오류를 반환합니다. median
는 50번째 백분위수로 간주될 수 있기 때문에 오류에 해당 방사가 고유한 백분위수를 지원하지 않습니다.
median
에 지원되는 데이터베이스 언어
Looker 프로젝트에서 median
유형을 지원하려면 데이터베이스 언어에서도 Looker를 지원해야 합니다. 다음 표는 최신 Looker 버전에서 median
유형을 지원하는 언어를 보여줍니다.
쿼리에 팬아웃이 있으면 Looker에서 median
를 median_distinct
으로 변환하려고 시도합니다. median_distinct
지원 언어에서만 성공합니다.
median_distinct
조인에 팬아웃이 포함된 경우 type: median_distinct
를 사용합니다. sql_distinct_key
매개변수로 정의된 고유한 값을 기준으로 지정된 필드에서 반복되지 않은 값의 평균을 냅니다. 측정에 sql_distinct_key
매개변수가 없으면 Looker에서 primary_key
필드를 사용하려고 시도합니다.
주문 항목과 주문 표를 조인하는 쿼리의 결과를 생각해 보세요.
주문 항목 ID | 주문 ID | 주문 배송 |
---|---|---|
1 | 1 | 10 |
2 | 1 | 10 |
3 | 2 | 20 |
4 | 3 | 50 |
5 | 3 | 50 |
6 | 3 | 50 |
이 경우 각 주문에 여러 행이 있음을 알 수 있습니다. 각 쿼리가 여러 주문 항목에 매핑되므로 이 쿼리에는 팬아웃이 포함되었습니다. median_distinct
는 이를 고려하여 고유한 값 10, 20, 50 사이의 중앙값을 찾아 20이 되도록 합니다.
정확한 결과를 얻으려면 sql_distinct_key
매개변수를 사용하여 Looker에 각 고유 항목 (이 경우에는 각 순 주문)을 식별하는 방법을 설명합니다. 이렇게 하면 정확한 금액이 계산됩니다.
measure: median_shipping {
type: median_distinct
sql_distinct_key: ${order_id} ;;
sql: ${order_shipping} ;;
}
sql_distinct_key
의 모든 고유한 값은 측정값의 sql
매개변수에 해당하는 하나의 값만 가져야 합니다. 즉, 위 예시는 order_id
가 1인 모든 행의 order_shipping
가 10이고, order_id
가 2인 모든 행의 order_shipping
가 20인 식입니다.
type: median_distinct
필드는 value_format
또는 value_format_name
매개변수를 사용하여 형식을 지정할 수 있습니다.
median_distinct
관련 고려사항
medium_distinct
측정 유형은 특정 언어에만 지원됩니다. median_distinct
를 방언에 사용할 수 없는 경우 Looker에서 오류를 반환합니다. median
는 50번째 백분위수로 간주될 수 있기 때문에 오류에 해당 방사가 고유한 백분위수를 지원하지 않습니다.
median_distinct
에 지원되는 데이터베이스 언어
Looker 프로젝트에서 median_distinct
유형을 지원하려면 데이터베이스 언어에서도 Looker를 지원해야 합니다. 다음 표는 최신 Looker 버전에서 median_distinct
유형을 지원하는 언어를 보여줍니다.
min
type: min
는 지정된 필드에서 가장 작은 값을 찾습니다. SQL의 MIN
함수를 사용합니다.
type: min
측정의 sql
매개변수는 숫자 테이블 열, LookML 측정기준 또는 LookML 측정기준의 조합을 생성하는 유효한 SQL 표현식을 사용할 수 있습니다.
type: min
측정값은 숫자 필드와만 호환되므로 type: min
측정치를 사용하여 최소 날짜를 찾을 수 없습니다. 대신 type: date
측정값의 sql
매개변수에 MIN()
함수를 사용하면 최솟값을 캡처할 수 있습니다. type: date
측정값과 함께 MAX()
함수를 사용하여 최댓값을 캡처할 수 있기 때문입니다. 이 내용은 이전에 이 페이지의 date
섹션에서 확인할 수 있습니다. 여기에는 sql
매개변수에 MAX()
함수를 사용하여 최대 날짜를 찾는 예시가 포함되어 있습니다.
type: min
필드는 value_format
또는 value_format_name
매개변수를 사용하여 형식을 지정할 수 있습니다.
예를 들어 다음 LookML은 sales_price
측정기준을 확인하여 smallest_order
라는 필드를 만든 다음 금액 형식 ($1,234.56)으로 표시합니다.
measure: smallest_order {
type: min
sql: ${sales_price} ;;
value_format_name: usd
}
현재 문자열이나 날짜에 type: min
측정값을 사용할 수 없지만 다음과 같이 MIN
함수를 직접 추가하여 이러한 필드를 만들 수 있습니다.
measure: earliest_name_in_alphabet {
type: string
sql: MIN(${name}) ;;
}
number
type: number
는 숫자 또는 정수와 함께 사용됩니다. type: number
의 측정은 집계를 수행하지 않으며, 다른 측정에 관해 간단한 변환을 수행합니다. 다른 측정값을 기준으로 측정값을 정의하는 경우 중첩 집계 오류를 방지하기 위해 새 측정값은 type: number
여야 합니다.
type: number
측정의 sql
매개변수는 숫자 또는 정수가 되는 유효한 SQL 표현식을 사용할 수 있습니다.
type: number
필드는 value_format
또는 value_format_name
매개변수를 사용하여 형식을 지정할 수 있습니다.
예를 들어 다음 LookML은 total_sale_price
및 total_gross_margin
집계 측정값을 기반으로 total_gross_margin_percentage
라는 측정값을 생성하고 이를 소수점 이하 두 자리 (12.34%)로 백분율 형식으로 표시합니다.
measure: total_sale_price {
type: sum
value_format_name: usd
sql: ${sale_price} ;;
}
measure: total_gross_margin {
type: sum
value_format_name: usd
sql: ${gross_margin} ;;
}
measure: total_gross_margin_percentage {
type: number
value_format_name: percent_2
sql: ${total_gross_margin}/ NULLIF(${total_sale_price},0) ;;
}
위의 예에서는 NULLIF()
SQL 함수를 사용하여 0으로 나누기 오류를 삭제합니다.
type: number
관련 고려사항
type: number
측정값을 사용할 때 유의해야 할 몇 가지 중요한 사항이 있습니다.
type: number
의 측정값은 다른 측정기준이 아닌 다른 측정값에 대해서만 산술 연산을 수행할 수 있습니다.- Looker의 대칭 집계는 조인에서 연산될 때 측정값
type: number
의 SQL에서 집계 함수를 보호하지 않습니다. filters
매개변수는type: number
측정값과 함께 사용할 수 없지만filters
문서에서 해결 방법을 설명합니다.type: number
측정값은 사용자에게 추천을 제공하지 않습니다.
percent_of_previous
type: percent_of_previous
는 셀과 열의 이전 셀 간의 백분율 차이를 계산합니다.
type: percent_of_previous
측정의 sql
매개변수는 다른 숫자 측정값을 참조해야 합니다.
type: percent_of_previous
필드는 value_format
또는 value_format_name
매개변수를 사용하여 형식을 지정할 수 있습니다. 그러나 value_format_name
매개변수의 백분율 형식은 type: percent_of_previous
측정값과 호환되지 않습니다. 이 비율 형식은 값에 100을 곱하기 때문에 이전 계산의 백분율이 왜곡됩니다.
다음 예에서 이 LookML은 count
측정값을 기준으로 측정값 count_growth
를 만듭니다.
measure: count_growth {
type: percent_of_previous
sql: ${count} ;;
}
Looker UI는 다음과 같습니다.
percent_of_previous
값은 정렬 순서에 따라 다릅니다. 정렬을 변경하는 경우 쿼리를 다시 실행하여 percent_of_previous
값을 다시 계산해야 합니다. 쿼리가 피봇팅되는 경우 percent_of_previous
는 열이 아닌 행 전반에서 실행됩니다. 현재 이 동작을 변경할 수 없습니다.
또한 percent_of_previous
측정값은 데이터베이스에서 데이터가 반환된 후 계산됩니다. 즉, 다른 측정값에서 percent_of_previous
측정값을 참조하면 안 됩니다. 이는 다른 시간에 계산될 수 있으므로 정확한 결과를 얻지 못할 수 있습니다. 이는 percent_of_previous
측정값을 필터링할 수 없음을 의미합니다.
percent_of_total
type: percent_of_total
는 열 합계에서 셀 부분을 계산합니다. 이 비율은 가능한 모든 행의 총계가 아니라 쿼리에서 반환된 행의 총계에 대해 계산됩니다. 하지만 쿼리에서 반환하는 데이터가 행 한도를 초과하는 경우 필드 값이 null로 표시됩니다. 총계의 비율을 계산하려면 전체 결과가 필요하기 때문입니다.
type: percent_of_total
측정의 sql
매개변수는 다른 숫자 측정값을 참조해야 합니다.
type: percent_of_total
필드는 value_format
또는 value_format_name
매개변수를 사용하여 형식을 지정할 수 있습니다. 그러나 value_format_name
매개변수의 백분율 형식은 type: percent_of_total
측정값과 호환되지 않습니다. 이러한 백분율 형식은 값에 100을 곱하여 percent_of_total
계산 결과를 왜곡합니다.
다음 예에서 이 LookML은 total_gross_margin
측정값을 기준으로 측정값 percent_of_total_gross_margin
를 만듭니다.
measure: percent_of_total_gross_margin {
type: percent_of_total
sql: ${total_gross_margin} ;;
}
Looker UI는 다음과 같습니다.
쿼리가 피봇팅되는 경우 percent_of_total
는 열이 아닌 행 전반에서 실행됩니다. 이렇게 하지 않으려면 direction: "column"
를 측정 정의에 추가합니다.
또한 percent_of_total
측정값은 데이터베이스에서 데이터가 반환된 후 계산됩니다. 즉, 다른 측정값에서 percent_of_total
측정값을 참조하면 안 됩니다. 이는 다른 시간에 계산될 수 있으므로 정확한 결과를 얻지 못할 수 있습니다. 이는 percent_of_total
측정값을 필터링할 수 없음을 의미합니다.
percentile
type: percentile
는 지정된 필드에 있는 값의 지정된 백분위수 값을 반환합니다. 예를 들어 75번째 백분위수를 지정하면 데이터 세트의 다른 값의 75% 보다 큰 값이 반환됩니다.
Looker는 반환할 값을 식별하기 위해 총 데이터 값 수를 계산하고 지정된 백분위수에 데이터 값 합계를 곱합니다. 데이터가 실제로 정렬되는 방식에 상관없이 Looker에서는 값이 증가하는 과정에서 데이터 값의 상대적 순서를 파악합니다. 아래에 설명된 것처럼 Looker가 반환하는 데이터 값은 계산이 정수인지 아닌지에 따라 다릅니다.
계산된 값이 정수가 아닌 경우
Looker는 계산된 값을 반올림하고 이를 사용하여 반환할 데이터 값을 식별합니다. 19개의 테스트 점수 모음 예시에서 75번째 백분위수는 19 * .75 = 14.25로 식별됩니다. 즉, 값의 75% 가 첫 14개의 데이터 값, 즉 15번째 값보다 낮은 것입니다. 따라서 Looker는 15번째 데이터 값 (87)을 데이터 값의 75% 보다 큰 값으로 반환합니다.
계산된 값이 정수인 경우
약간 더 복잡한 경우 Looker는 해당 위치의 데이터 값과 다음 데이터 값의 평균을 반환합니다. 이를 이해하기 위해 20개의 테스트 점수 집합을 살펴보겠습니다. 75번째 백분위수는 20 * .75=15로 식별됩니다. 즉, 15번째 위치의 데이터 값은 75번째 백분위수의 일부이고 데이터 값의 75% 이상인 값을 반환해야 합니다. Looker는 15번째 포지션 (82)과 16번째 포지션 (87)의 평균값을 반환하여 75%를 보장합니다. 이 평균 (84.5)은 데이터 값 세트에 존재하지 않지만 데이터 값의 75% 보다 큽니다.
필수 및 선택 매개변수
percentile:
키워드를 사용하여 분수 값(반환된 값 미만이어야 하는 데이터의 비율)을 지정합니다. 예를 들어 percentile: 75
를 사용하여 데이터 순서대로 75번째 백분위수에 값을 지정하거나 percentile: 10
를 사용하여 10번째 백분위수에 값을 반환합니다. 50번째 백분위수의 값을 찾으려면 percentile: 50
를 지정하거나 중앙값 유형을 사용하면 됩니다.
type: percentile
측정의 sql
매개변수는 숫자 테이블 열, LookML 측정기준 또는 LookML 측정기준의 조합을 생성하는 유효한 SQL 표현식을 사용할 수 있습니다.
type: percentile
필드는 value_format
또는 value_format_name
매개변수를 사용하여 형식을 지정할 수 있습니다.
예
예를 들어 다음 LookML은 test_scores
측정기준에서 75번째 백분위수에 있는 값을 반환하는 test_scores_75th_percentile
라는 필드를 만듭니다.
measure: test_scores_75th_percentile {
type: percentile
percentile: 75
sql: ${TABLE}.test_scores ;;
}
percentile
관련 고려사항
팬아웃에 관련된 필드에 percentile
를 사용하면 Looker에서 대신 percentile_distinct
를 사용하려고 시도합니다. percentile_distinct
를 방언에 사용할 수 없는 경우 Looker에서 오류를 반환합니다. 자세한 내용은 percentile_distinct
에 지원되는 언어를 참고하세요.
percentile
에 지원되는 데이터베이스 언어
Looker 프로젝트에서 percentile
유형을 지원하려면 데이터베이스 언어에서도 Looker를 지원해야 합니다. 다음 표는 최신 Looker 버전에서 percentile
유형을 지원하는 언어를 보여줍니다.
percentile_distinct
type: percentile_distinct
는 특수 형식의 백분위수로, 조인에 팬아웃이 포함되는 경우 사용해야 합니다. sql_distinct_key
매개변수로 정의된 고유한 값을 기준으로 지정된 필드에서 반복되지 않은 값을 사용합니다. 측정에 sql_distinct_key
매개변수가 없으면 Looker에서 primary_key
필드를 사용하려고 시도합니다.
주문 항목과 주문 표를 조인하는 쿼리의 결과를 생각해 보세요.
주문 항목 ID | 주문 ID | 주문 배송 |
---|---|---|
1 | 1 | 10 |
2 | 1 | 10 |
3 | 2 | 20 |
4 | 3 | 50 |
5 | 3 | 50 |
6 | 3 | 50 |
7 | 4 | 70 |
8 | 4 | 70 |
9 | 5 | 110 |
10 | 5 | 110 |
이 경우 각 주문에 여러 행이 있음을 알 수 있습니다. 각 쿼리가 여러 주문 항목에 매핑되므로 이 쿼리에는 팬아웃이 포함되었습니다. percentile_distinct
는 이를 고려하여 고유한 값 10, 20, 50, 70, 110을 사용하여 백분위수 값을 찾습니다. 25번째 백분위수는 두 번째 고유 값(20)을 반환하는 반면 80번째 백분위수는 네 번째 및 다섯 번째 고유 값(90)의 평균을 반환합니다.
필수 및 선택 매개변수
percentile:
키워드를 사용하여 분수 값을 지정합니다. 예를 들어 percentile: 75
를 사용하여 데이터 순서대로 75번째 백분위수에 값을 지정하거나 percentile: 10
를 사용하여 10번째 백분위수에 값을 반환합니다. 50번째 백분위수에서 값을 찾으려면 median_distinct
유형을 대신 사용할 수 있습니다.
정확한 결과를 얻으려면 sql_distinct_key
매개변수를 사용하여 Looker가 각 고유 항목 (이 경우에는 각 순 주문)을 식별하는 방법을 지정합니다.
다음은 percentile_distinct
를 사용하여 90번째 백분위수에 값을 반환하는 예입니다.
measure: order_shipping_90th_percentile {
type: percentile_distinct
percentile: 90
sql_distinct_key: ${order_id} ;;
sql: ${order_shipping} ;;
}
sql_distinct_key
의 모든 고유한 값은 측정값의 sql
매개변수에 해당하는 하나의 값만 가져야 합니다. 즉, 위 예시는 order_id
가 1인 모든 행의 order_shipping
가 10이고, order_id
가 2인 모든 행의 order_shipping
가 20인 식입니다.
type: percentile_distinct
필드는 value_format
또는 value_format_name
매개변수를 사용하여 형식을 지정할 수 있습니다.
percentile_distinct
관련 고려사항
percentile_distinct
를 방언에 사용할 수 없는 경우 Looker에서 오류를 반환합니다. 자세한 내용은 percentile_distinct
에 지원되는 언어를 참고하세요.
percentile_distinct
에 지원되는 데이터베이스 언어
Looker 프로젝트에서 percentile_distinct
유형을 지원하려면 데이터베이스 언어에서도 Looker를 지원해야 합니다. 다음 표는 최신 Looker 버전에서 percentile_distinct
유형을 지원하는 언어를 보여줍니다.
running_total
type: running_total
는 열을 따라 셀의 누적 합계를 계산합니다. 행을 피봇으로 만든 경우를 제외하고는 행의 합계를 계산하는 데 사용할 수 없습니다.
type: running_total
측정의 sql
매개변수는 다른 숫자 측정값을 참조해야 합니다.
type: running_total
필드는 value_format
또는 value_format_name
매개변수를 사용하여 형식을 지정할 수 있습니다.
예를 들어 다음 LookML은 total_sale_price
측정값을 기반으로 cumulative_total_revenue
측정을 만듭니다.
measure: cumulative_total_revenue {
type: running_total
sql: ${total_sale_price} ;;
value_format_name: usd
}
Looker UI는 다음과 같습니다.
running_total
값은 정렬 순서에 따라 다릅니다. 정렬을 변경하는 경우 쿼리를 다시 실행하여 running_total
값을 다시 계산해야 합니다. 쿼리가 피봇팅되는 경우 running_total
는 열이 아닌 행 전반에서 실행됩니다. 이렇게 하지 않으려면 direction: "column"
를 측정 정의에 추가합니다.
또한 running_total
측정값은 데이터베이스에서 데이터가 반환된 후 계산됩니다. 즉, 다른 측정값에서 running_total
측정값을 참조하면 안 됩니다. 이는 다른 시간에 계산될 수 있으므로 정확한 결과를 얻지 못할 수 있습니다. 이는 running_total
측정값을 필터링할 수 없음을 의미합니다.
string
type: string
는 문자 또는 특수문자가 포함된 필드에 사용됩니다.
type: string
측정의 sql
매개변수는 문자열을 생성하는 유효한 SQL 표현식을 사용할 수 있습니다. 실제로 대부분의 SQL 집계 함수는 문자열을 반환하지 않으므로 이 유형은 거의 사용되지 않습니다. 한 가지 일반적인 예외는 MySQL의 GROUP_CONCAT
함수이지만 Looker는 이러한 사용 사례에 type: list
를 제공합니다.
예를 들어 다음 LookML은 category
라는 필드의 고유한 값을 결합하여 category_list
필드를 생성합니다.
measure: category_list {
type: string
sql: GROUP_CONCAT(${category}) ;;
}
이 예시에서는 string
가 type
의 기본값이므로 type: string
를 생략할 수 있습니다.
sum
type: sum
는 지정된 필드의 값을 더합니다. SQL의 SUM
함수와 유사합니다. 하지만 원시 SQL 작성과 달리 Looker는 쿼리의 조인에 팬아웃이 포함되어 있더라도 합계를 올바르게 계산합니다.
type: sum
측정의 sql
매개변수는 숫자 테이블 열, LookML 측정기준 또는 LookML 측정기준의 조합을 생성하는 유효한 SQL 표현식을 사용할 수 있습니다.
type: sum
필드는 value_format
또는 value_format_name
매개변수를 사용하여 형식을 지정할 수 있습니다.
예를 들어 다음 LookML은 sales_price
측정기준을 합산하여 total_revenue
라는 필드를 만든 다음 금액 형식 ($1,234.56)으로 표시합니다.
measure: total_revenue {
type: sum
sql: ${sales_price} ;;
value_format_name: usd
}
sum_distinct
type: sum_distinct
은 비정규화된 데이터 세트에 사용합니다. sql_distinct_key
매개변수로 정의된 고유한 값을 기준으로 지정된 필드에 반복되지 않은 값을 더합니다.
이는 예시를 통해 더 명확하게 설명할 수 있는 고급 개념입니다. 다음과 같이 비정규화된 테이블을 생각해 보세요.
주문 항목 ID | 주문 ID | 주문 배송 |
---|---|---|
1 | 1 | 10,000원 |
2 | 1 | 10,000원 |
3 | 2 | 20,000원 |
4 | 2 | 20,000원 |
5 | 2 | 20,000원 |
이 경우 각 주문에 여러 행이 있음을 알 수 있습니다. 따라서 order_shipping
열에 간단한 type: sum
측정값을 추가하면 수집된 총 배송비가 실제로 30.00이더라도 총 80.00이 됩니다.
# Will NOT calculate the correct shipping amount
measure: total_shipping {
type: sum
sql: ${order_shipping} ;;
}
정확한 결과를 얻으려면 sql_distinct_key
매개변수를 사용하여 Looker에 각 고유 항목 (이 경우에는 각 순 주문)을 식별하는 방법을 설명합니다. 그러면 정확한 30.00 금액이 계산됩니다.
# Will calculate the correct shipping amount
measure: total_shipping {
type: sum_distinct
sql_distinct_key: ${order_id} ;;
sql: ${order_shipping} ;;
}
sql_distinct_key
의 모든 고유한 값은 sql
에 상응하는 하나의 값만 가져야 합니다. 즉, 위 예는 order_id
가 1인 모든 행의 order_shipping
가 10.00이고 order_id
가 2인 모든 행의 order_shipping
가 20.00이라는 식으로 계속 이어집니다.
type: sum_distinct
필드는 value_format
또는 value_format_name
매개변수를 사용하여 형식을 지정할 수 있습니다.
yesno
type: yesno
는 참 또는 거짓을 나타내는 필드를 만듭니다. 값은 탐색 UI에 Yes 및 No로 표시됩니다.
type: yesno
측정의 sql
매개변수는 TRUE
또는 FALSE
로 평가되는 유효한 SQL 표현식을 사용합니다. 조건이 TRUE
로 평가되면 사용자에게 Yes가 표시되고 그렇지 않으면 No가 표시됩니다.
type: yesno
측정값의 SQL 표현식에는 집계만 포함되어야 합니다. 즉, SQL 집계 또는 LookML 측정값 참조입니다. 집계가 아닌 LookML 측정기준 또는 SQL 표현식에 대한 참조가 포함된 yesno
필드를 만들려면 측정값이 아닌 type: yesno
와 함께 차원을 사용합니다.
type: number
의 측정값과 마찬가지로 type: yesno
가 있는 측정은 집계를 실행하지 않으며 다른 집계를 참조합니다.
예를 들어 아래의 total_sale_price
측정값은 주문 내 주문 항목의 총 판매가의 합계입니다. is_large_total
라는 두 번째 측정값은 type: yesno
입니다. is_large_total
측정에는 total_sale_price
값이 $1,000보다 큰지 평가하는 sql
매개변수가 있습니다.
measure: total_sale_price {
type: sum
value_format_name: usd
sql: ${sale_price} ;;
drill_fields: [detail*]
}
measure: is_large_total {
description: "Is order total over $1000?"
type: yesno
sql: ${total_sale_price} > 1000 ;;
}
다른 필드의 type: yesno
필드를 참조하려면 type: yesno
필드를 불리언으로 취급해야 합니다 (즉, 이미 true 또는 false 값을 포함하는 것처럼). 예를 들면 다음과 같습니다.
measure: is_large_total {
description: "Is order total over $1000?"
type: yesno
sql: ${total_sale_price} > 1000 ;;
}
}
# This is correct
measure: reward_points {
type: number
sql: CASE WHEN ${is_large_total} THEN 200 ELSE 100 END ;;
}
# This is NOT correct
measure: reward_points {
type: number
sql: CASE WHEN ${is_large_total} = 'Yes' THEN 200 ELSE 100 END ;;
}