시간 단위 배치 작업이 구성되어 클라우드 객체 스토리지 컨테이너에서 데이터 파일을 수집합니다. 각 배치는 해당 시간 동안 소스 시스템에서 생성된 모든 레코드를 나타냅니다. 이러한 레코드를 레이크하우스에 처리하는 배치 작업은 지연된 데이터가 누락되지 않도록 충분한 시간 간격을 두고 실행됩니다. user_id 필드는 데이터의 고유 키이며, 다음과 같은 스키마를 갖습니다.
user_id는 BIGINT, username은 STRING, user_utc는 STRING, user_region은 STRING, last_login은 BIGINT, auto_pay는 BOOLEAN, last_updated는 BIGINT입니다. 모든 새 레코드는 account_history라는 테이블에 입력되며, 이 테이블은 소스와 동일한 스키마에 모든 데이터의 전체 기록을 유지합니다. 시스템의 다음 테이블은 account_current이며, 각 고유 user_id에 대한 최신 값을 나타내는 Type 1 테이블로 구현됩니다.
수백만 개의 사용자 계정과 시간당 수만 건의 레코드가 처리된다고 가정할 때, 매시간 배치 작업의 일부로 설명된 account_current 테이블을 효율적으로 업데이트하는 데 사용할 수 있는 구현 방법은 무엇입니까?
- A. 사용자 ID별로 그룹화하고 마지막 업데이트 값의 최댓값을 기준으로 필터링하여 계정 내역 테이블에 대한 쿼리 결과를 사용하여 각 배치마다 계정 현재 테이블을 덮어씁니다.
- B. 계정 내역에서 마지막 업데이트 필드와 최근 처리 시간을 기준으로 레코드를 필터링하고, 사용자 이름이 중복되지 않도록 합니다. 각 사용자 이름에 대해 최신 값을 업데이트하거나 삽입하는 병합 문을 작성하세요.
- C. 자동 로더를 사용하여 계정 기록 디렉터리의 새 파일을 구독하고, 구조화된 스트리밍 트리거를 한 번 실행하여 새로 감지된 파일을 계정 현재 테이블에 일괄 업데이트하도록 구성합니다.
- D. Delta Lake 버전 기록을 사용하여 계정 기록의 최신 버전과 이전 버전 간의 차이점을 가져온 다음 이러한 기록을 계정 현재 상태에 기록합니다.
- E. 계정 내역에서 마지막 업데이트 필드와 최근 처리 시간, 그리고 사용자 ID별 최대 마지막 로그인 시간을 기준으로 레코드를 필터링하고, 각 사용자 ID에 대해 가장 최근 값을 업데이트하거나 삽입하는 병합 문을 작성합니다.
Reveal Solution
Discussion
Correct Answer: E 🗳️
Explanation: Only visible for PrepAwayETE members. You can sign-up / login (it's free).