직전 여덟 달력 주의 데이터 선택
최신 데이터가 속한 주를 제외하고 그 직전 여덟 달력 주의 행을 선택합니다. 기준은 데이터셋의 최신 주입니다. 데이터가 정기적으로 갱신될 때는 현재 주와 가까울 수 있지만, 오래된 데이터셋에서는 오늘이 속한 주와 다릅니다.
이 예제는 월요일에 시작하는 ISO 주를 사용합니다. departure_date_time은 분석할 날짜 열입니다. Timestamp를 입력으로 사용한다면 먼저 업무에서 사용할 날짜 기준을 정합니다. 화면에 표시하는 시간대를 바꾸는 것과 날짜 계산의 입력을 변환하는 것은 구분합니다.
Expression 보드를 경로에 직접 추가하거나 Table 화면에서 Expression을 선택하여 아래 열을 차례로 만듭니다. 계산 범위를 줄이려고 입력을 먼저 필터링한다면, 기준 주와 그 직전 여덟 주가 남아 있어야 합니다.
주 시작일
departure_week_start는 각 날짜가 속한 월요일입니다.
CAST(date_trunc('week', "departure_date_time") AS DATE)
DATE_TRUNC의 week 단위는 해당 주의 월요일 0시로 절삭하며, DATE로 변환하여 날짜끼리 비교합니다.
최신 데이터의 주
latest_week_start는 데이터에 있는 주 시작일의 최댓값입니다. 윈도 식은 행을 줄이지 않고 같은 기준값을 각 행에 붙입니다.
max("departure_week_start") OVER ()
직전 여덟 주 포함 여부
within_last_8_weeks는 기준 주보다 앞이면서 기준 월요일에서 56일 전까지의 주를 포함합니다. 하한은 포함하고 기준 주는 제외합니다.
CASE
WHEN "departure_week_start" >= date_sub("latest_week_start", 56)
AND "departure_week_start" < "latest_week_start"
THEN TRUE
ELSE FALSE
END
예를 들어 기준 월요일이 2021-01-04인 가상 사례에서는 2020-11-09부터 2021-01-04 직전까지가 대상입니다. 연말과 ISO 53주를 지나더라도 날짜 간격으로 계산하므로 같은 규칙을 적용합니다. 데이터가 없는 주가 있더라도 여덟 개의 관측된 주를 세는 것이 아니라 여덟 달력 주의 구간을 선택합니다.
두 자리 주 번호
departure_week는 차트 레이블과 식별자에 사용할 두 자리 ISO 주 번호입니다. ISO 주 번호는 1부터 53까지 가능합니다. 1부터 9 앞에 0을 붙이는 CASE 표현식은 다음과 같습니다.
CASE week_of_year("departure_date_time")
WHEN 1 THEN '01'
WHEN 2 THEN '02'
WHEN 3 THEN '03'
WHEN 4 THEN '04'
WHEN 5 THEN '05'
WHEN 6 THEN '06'
WHEN 7 THEN '07'
WHEN 8 THEN '08'
WHEN 9 THEN '09'
ELSE CAST(week_of_year("departure_date_time") AS STRING)
END
같은 값을 LPAD로 만들 수도 있습니다.
lpad(CAST(week_of_year("departure_date_time") AS STRING), 2, '0')
ISO 연도와 주 레이블
연말과 연초에는 날짜의 연도와 ISO 주가 속한 연도가 다를 수 있습니다. 해당 주의 목요일, 즉 주 시작일에서 3일 뒤의 연도를 사용하면 ISO 주의 연도를 얻습니다.
departure_week_label은 다음 식으로 만듭니다.
year(date_add("departure_week_start", 3)) || '.CW' || "departure_week"
예를 들어 2021-01-01은 2020.CW53에 속합니다.
숫자 형태의 연도 및 주 식별자가 필요하면 departure_year_week_as_integer를 추가합니다.
CAST(year(date_add("departure_week_start", 3)) || "departure_week" AS INTEGER)
최신 데이터의 숫자 식별자는 latest_calendar_week로 계산할 수 있습니다.
max("departure_year_week_as_integer") OVER ()
이 숫자 식별자는 표시와 정렬에 사용합니다. 주 사이의 기간은 앞의 주 시작일과 DATE_SUB로 계산합니다.
차트와 갱신 기준
within_last_8_weeks가 true인 행을 남긴 뒤 departure_week_label로 그룹을 표시합니다. 다음은 주별 고유 항공편 수를 보여 주는 예시입니다.
새 입력을 반영하려면 경로를 갱신합니다. 기준을 데이터의 최신 주가 아닌 오늘이 속한 주로 정해야 한다면 latest_week_start 식을 다음으로 바꿉니다.
CAST(date_trunc('week', current_date()) AS DATE)
CURRENT_DATE는 경로를 계산할 때 갱신되므로 현재 날짜 기준 분석에는 정기적인 경로 갱신이 필요합니다. 이 경우 latest_calendar_week는 데이터에 있는 최신 주를 표시하는 별도 식별자이며, 선택 기간의 기준은 latest_week_start입니다.