2017-01-21 2 views
1

Google Big Query에서 "채우기"값에 창 함수를 사용하는 데 어려움이 있습니다. 쿼리의 IGNORE 부분이 문제를 일으키는 것으로 보입니다. 아래의 데이터 세트를 가정 할 때, 다른 유효 구매 날짜가 발생할 때까지 각 사회 보장 번호의 "구매 날짜"값을 null로 채우려고합니다. 기본적으로 각 activity_date와 관련하여 최신 구매 일을 추적하고 싶습니다.Google 빅 쿼리 : 앞으로 작성 : IGNORE 창 기능

예를 들어, SS # 000-0000-000을 보면 2016-12-16에서 2016-12-17 2016-12-22 사이의 모든 null 값을 2016-12-22로 채우고 싶습니다. 1-6) 그리고 8-10 세의 구매를 위해 2016-12-23을 작성하십시오. 다른 SS # 111-1111-111에 대해서도 같은 시나리오가 적용됩니다. 여기

Activity_date SS_Number First_Purchase First_Purchase_age Purchase_dates 
2016-12-26 000-0000-000 2016-12-16 10 null 
2016-12-25 000-0000-000 2016-12-16 9 null 
2016-12-24 000-0000-000 2016-12-16 8 null 
2016-12-23 000-0000-000 2016-12-16 7 2016-12-23 
2016-12-22 000-0000-000 2016-12-16 6 null 
2016-12-21 000-0000-000 2016-12-16 5 null 
2016-12-20 000-0000-000 2016-12-16 4 null 
2016-12-19 000-0000-000 2016-12-16 3 null 
2016-12-18 000-0000-000 2016-12-16 2 null 
2016-12-17 000-0000-000 2016-12-16 1 null 
2016-12-16 000-0000-000 2016-12-16 0 2016-12-16 
2016-11-26 111-1111-111 2016-11-16 10 null 
2016-11-25 111-1111-111 2016-11-16 9 null 
2016-11-24 111-1111-111 2016-11-16 8 null 
2016-11-23 111-1111-111 2016-11-16 7 2016-11-23 
2016-11-22 111-1111-111 2016-11-16 6 null 
2016-11-21 111-1111-111 2016-11-16 5 null 
2016-11-20 111-1111-111 2016-11-16 4 null 
2016-11-19 111-1111-111 2016-11-16 3 null 
2016-11-18 111-1111-111 2016-11-16 2 null 
2016-11-17 111-1111-111 2016-11-16 1 null 
2016-11-16 111-1111-111 2016-11-16 0 2016-11-16 

는 내가 가지고있는 쿼리입니다 : 당신이 다른 경우에

#standardSQL 
SELECT 
    activity_date, 
    ss_number, 
    first_purchase, 
    first_purchase_age, 
    purchase_dates, 
    MAX(purchase_dates) OVER (PARTITION BY ss_number ORDER BY activity_date 
          ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW 
) AS filled_purchase_dates 
FROM yourTable 

위의 "해결 방법"특정 사용 사례 작동을 설명하지만, 무엇을 제공 아래

SELECT 
    activity_date, 
    ss_number, 
    first_purchase, 
    first_purchase_age, 
    purchase_dates, 
    LAST_VALUE(purchase_dates) IGNORE NULLS OVER (PARTITION BY ss_number ORDER BY activity_date DESC ROWS BETWEEN UNBOUNDED PRECEEDING AND CURRENT ROW), 
FROM 
    [TABLE] 

답변