작성자: Shabbir Khanbhai, 폴 랩파스 , Bilal Aslam
비즈니스가 성장함에 따라 데이터 볼륨은 GB에서 TB(또는 그 이상)로 확장되고, 지연 시간 요구 사항은 몇 시간에서 몇 분(또는 그 이하)으로 단축되어 비즈니스에 신선한 인사이트를 제공하는 데 점점 더 많은 비용이 발생합니다. 과거에는 Python 및 Scala 데이터 엔지니어들이 이러한 요구 사항을 충족하기 위해 스트리밍을 사용했지만, SQL 기반의 dbt 파이프라인을 확장해야 하는 분석 엔지니어에게는 이러한 옵션이 없었습니다.
이제 달라졌습니다! 이 블로그에서는 Databricks의 새로운 스트리밍 테이블과 구체화된 뷰를 사용하여 SQL과 dbt의 단순성으로 비즈니스에 신선하고 실시간 인사이트를 제공하는 방법을 보여드리고자 합니다.
2023 Data + AI Summit에서 저희는 Databricks SQL에 스트리밍 테이블과 구체화된 뷰를 도입했습니다. 이 멋진 기능은 Databricks SQL 사용자가 Delta Live Tables 내에 처음 도입된 강력한 새 테이블 구체화 기능에 쉽게 액세스할 수 있도록 하여, 대규모 쿼리를 점진적으로 처리하고 이벤트 데이터 소스에서 직접 스트리밍하는 등의 작업을 수행할 수 있게 해줍니다.
Databricks 환경 내에서 스트리밍 테이블과 구체화된 뷰를 네이티브로 사용하는 것 외에도, Databricks의 dbt 사용자에게도 유용합니다. dbt-databricks는 Databricks에서 데이터 모델을 구축하는 가장 인기 있는 방법 중 하나가 되었습니다. 이는 Databricks SQL의 모든 강력한 기능, 즉 Photon 컴퓨팅 엔진, 즉시 확장되는 서버리스 SQL 웨어하우스 및 Unity Catalog 거버넌스 모델을 dbt의 변환 프레임워크의 보편성과 함께 활용합니다.
dbt v1.6 이상부터 dbt-databricks는 세 가지 주요 측면에서 발전했습니다:
참고: 위의 기능을 더욱 개선할 예정인 dbt v1.7.3 릴리스를 기대해 주세요!
Airline Trips 데모에서 이러한 새 기능을 어떻게 사용할 수 있는지 살펴보겠습니다.
Airline Trips 데모는 대시보드든 AI 모델이든 Databricks에서 최신 비즈니스 인사이트를 위해 실시간 이벤트 데이터를 점진적으로 수집하고 변환하는 방법을 시연하기 위해 만들어졌습니다. 이 데이터셋은 미국 전역에서 발생하는 모든 항공편을 시간에 따라 나타내며, 각 항공편의 출발 및 도착 지연을 캡처합니다.
포함된 도우미 노트북은 이 데이터셋에서 시뮬레이션된 스트림을 설정하며, dbt 프로젝트는 이러한 원시 JSON 이벤트를 가져와 스트리밍 ETL을 통해 구체화된 뷰, 피처 테이블 등의 계층으로 변환하는 데이터 모델을 보여줍니다.
이 리포지토리는 여기에서 공개적으로 사용할 수 있으며, 모든 Databricks 워크스페이스에 기본 제공되는 샘플 데이터를 활용합니다. 자유롭게 따라 해 보세요!

스트리밍 테이블을 활용하는 가장 간단한 방법 중 하나는 AWS의 S3 또는 Azure의 ADLS와 같은 클라우드 데이터 스토리지에서 데이터를 수집하는 것입니다. 업스트림 데이터 소스에서 대량의 이벤트 데이터를 생성하고, 이러한 데이터를 일반적으로 json, csv, parquet 또는 avro 형식으로 스토리지 위치에 저장하는 프로세스가 있을 수 있습니다.
저희 데모에서는 외부 당사자로부터 미국에서 발생하는 모든 항공편의 실시간 피드를 받고, 이 데이터가 들어오는 대로 점진적으로 수집하고 싶다고 가정해 봅시다.
파일을 외부 테이블로 스테이징하거나 타사 도구를 사용하여 데이터 소스에 대한 Delta 테이블을 구체화하는 대신, 스트리밍 테이블을 사용하여 이 문제를 해결할 수 있습니다. 다음은 브론즈 항공편 피드를 위한 모델입니다:
주목해야 할 두 가지 주요 사항은 다음과 같습니다:
참고로, Auto Loader는 설정이 가장 적지만, Kafka, Kinesis 또는 Event Hubs와 같은 이벤트 스트리밍 플랫폼에서 직접 스트리밍하여 훨씬 낮은 지연 시간을 얻을 수도 있습니다. 자세한 내용은 여기를 참조하세요.