주요 컨텐츠로 이동
제품

쿼리 태그: 웨어하우스 쿼리에 누락되었던 컨텍스트

비용 속성 지정, 파트너 도구 쿼리 추적, 워크로드 레이블 지정 — 모든 SQL 실행에 대한 사용자 지정 메타데이터 사용.

작성자: JooHo Yeo , Jiabin Hu

  • 팀, 프로젝트, 대시보드 또는 사용자 지정 차원별 공유 웨어하우스 비용 속성 지정
  • dbt(모델 이름), PowerBI(보고서 ID), Tableau(통합 문서 이름) 등에 대한 자동 태깅을 통해 파트너 도구의 쿼리 모니터링 또는 문제 해결
  • SQL 편집기, 노트북, 대시보드, API, 커넥터 및 드라이버 등 어디에서나 쿼리 태그 지정

Databricks SQL는 누가, 어떤 웨어하우스에서, 어떤 도구를 사용하여 실행했는지 등 모든 쿼리의 주요 속성을 자동으로 기록합니다. 하지만 이것만으로는 부족할 때가 많습니다.

Power BI 쿼리가 느리게 실행될 때, 해당 쿼리가 Power BI에서 왔다는 것은 알지만 어떤 대시보드를 수정해야 하는지는 알 수 없습니다. 비용이 급증할 때, 어떤 사용자가 쿼리를 실행했는지는 볼 수 있지만, 어떤 비용 센터나 프로젝트에 비용을 청구해야 하는지는 알 수 없습니다. 누락된 부분은 바로 사용자 지정 컨텍스트이며, Query Tags가 바로 이를 추가합니다.

오늘 저희는 Query Tags의 공개 미리 보기를 출시합니다. Query Tags를 사용하면 각 SQL 실행에 비즈니스 컨텍스트를 키-값 쌍으로 연결하고, 표준 SQL을 통해 시스템 테이블에서 이 모든 것을 쿼리하거나, 단순히 Genie에게 물어볼 수 있습니다. Query Tags는 Query Profile UI에서도 볼 수 있습니다(쿼리 기록 UI의 검색 지원은 출시 예정입니다).

Query Tags는 이미 수백 명의 고객이 매주 수백만 개의 쿼리에 태그를 지정하는 등 강력한 채택률을 보이고 있습니다.

그냥 태그하세요: Query Tags 소개

Query Tags를 사용하면 각 SQL 실행에 사용자 지정 키-값 쌍(예: “project” : “finance_planning”)을 연결합니다. 이러한 태그는 쿼리와 함께 이동하며 쿼리 기록 시스템 테이블에 기록되어 워크로드를 그룹화, 필터링 및 분석하는 데 사용할 수 있습니다.

태그는 세 가지 시나리오에서 가치를 더합니다.

  1. 파트너 도구: dbt, Power BI 또는 Tableau를 사용할 때 dbt 모델 이름, Power BI 보고서 ID 또는 Tableau 통합 문서 이름과 같은 식별자를 모든 쿼리에 전파합니다.
  2. 사용자 지정 애플리케이션: SQL 문 실행 API 또는 커넥터를 통해 앱을 빌드할 때 각 실행에 `customerid`, `applicationname` 또는 `app_version`과 같은 메타데이터를 연결합니다.
  3. Databricks UI에서의 임시 작업: 개발 vs. 프로덕션 환경, 비용 센터, 실험 이름 또는 팀과 같이 관련 있는 차원으로 쿼리를 태그합니다.

이러한 시나리오에 대해 더 자세히 알아보겠습니다.

(1) 모든 파트너 도구 쿼리를 소스까지 추적

dbt, Power BI 및 Tableau의 쿼리는 웨어하우스로 흐르지만, 태그가 없으면 사용자 ID와 어떤 도구에서 왔는지 이상으로는 추적할 수 없습니다. 이러한 도구는 수동 태그 지정 없이 자동으로 Query Tags를 주입하여 이 문제를 해결합니다.

dbt는 모델 이름, 코어 버전, 어댑터 버전 및 자료화 유형으로 모든 쿼리를 자동으로 태그합니다. dbt 모델의 성능이 갑자기 저하되면 정확히 어떤 모델, 어떤 버전, 언제인지 정확히 파악할 수 있습니다.

ASOS의 스태프 엔지니어링 리더인 Dipesh Bhundia와 Dave Couse는 다음과 같이 말했습니다.

"아무것도 구성할 필요 없이 각 SQL 워크로드를 해당 워크로드가 발생하는 dbt 모델에 매핑할 수 있습니다. Query Tags를 사용하면 마침내 dbt를 실행하는 팀별로 웨어하우스 비용을 정확하게 분할할 수 있습니다."

Power BITableau는 연결 수준에서 사용자 지정 Query Tags를 지원합니다. 한 번 설정하면 해당 연결의 모든 쿼리가 자동으로 해당 태그를 전달합니다. Tableau의 경우 고객은 태그 값으로 [WorkbookName]과 같은 매개변수를 사용하는 것이 유용하다고 생각하여 통합 문서의 이름이 변경되어도 속성이 유지됩니다.

쿼리 태그 설정

Query Tags를 지원하는 파트너 도구 전체 목록은 설명서를 참조하세요. 도구가 목록에 없으면 계정 팀에 문의하세요.

(2) 익명의 API 쿼리를 추적 가능한 워크로드로 전환

사용자 지정 애플리케이션은 API 및 커넥터를 통해 웨어하우스에 액세스하지만, 생성된 쿼리에는 애플리케이션 컨텍스트(앱 이름, 팀 이름, 고객 ID 없음)가 없습니다. Query Tags를 사용하면 연결 또는 문 수준에서 이 메타데이터를 연결할 수 있습니다.

SQL 문 실행 API 는 문 수준 태그 지정을 지원합니다. 매개변수로 전달된 태그는 해당 특정 실행에 적용됩니다.

Python Connector는 연결 수준 및 문 수준 태그 지정을 모두 지원합니다. 연결에 팀 이름을 설정하고 필요한 경우 문별로 재정의합니다.

Unit21의 DevOps 엔지니어인 Matthew Haber는 다음과 같이 말했습니다.

"비용 절감을 위해 팀별 웨어하우스에서 공유 웨어하우스로 전환했지만, 어떤 팀이 지출을 주도하는지에 대한 가시성을 잃었습니다. Query Tags를 사용하면 Python 워크로드를 위한 Databricks SQL Connector에서 팀 이름만 전달하면 해당 속성을 다시 얻을 수 있습니다. 웨어하우스를 다시 분할할 필요가 없습니다."

커넥터 및 드라이버 지원(Node.js, Go, JDBC 등) 전체 목록은 설명서를 확인하세요.

(3) 노이즈 속에서 길을 잃지 않도록 자신의 작업을 레이블링

분석가는 일주일에 수백 개의 쿼리(탐색, 프로덕션, 디버깅 등)를 실행하며, 레이블이 없으면 시스템 테이블에서 모두 동일하게 보입니다. Query Tags를 사용하면 SQL 한 줄로, 쿼리를 제출하는 모든 곳(SQL 편집기, 노트북, 대시보드 및 알림)에서 실무자가 즉시 태그를 지정할 수 있습니다.

설정되면 세션의 모든 후속 문은 자동으로 해당 태그를 전달합니다. 모든 쿼리를 개별적으로 주석 처리할 필요가 없습니다. 예를 들어, AI/BI 대시보드의 각 데이터 세트 쿼리에 SET QUERY_TAGS 문을 추가하면 해당 대시보드의 모든 쿼리에 'environment: production' 태그가 지정됩니다.

데이터 실무자는 이를 사용하여 다음을 수행할 수 있습니다.

  • 프로젝트 또는 팀별 임시 분석 태그 지정
  • 실험 또는 A/B 테스트 표시
  • 개발 vs. 프로덕션 워크로드 식별
  • 문제 조사 시 디버깅 컨텍스트 첨부

태그에서 답변으로: 시스템 테이블을 사용한 모니터링

쿼리에 태그가 지정되면 태그는 쿼리 기록 시스템 테이블query_tags 열에 기록됩니다. 이제 어려운 질문이 간단한 SQL이 됩니다.

어떤 팀이 웨어하우스 비용을 주도하고 있습니까?

많은 조직에서 팀 또는 제품별로 공유 웨어하우스 비용을 할당해야 합니다. 쿼리 태그를 사용하면 웨어하우스를 분할하거나 추측할 필요 없이 단일 쿼리로 이를 수행할 수 있습니다.

회귀를 도입한 dbt 모델은 무엇인가요?

파이프라인이 느려지면 웨어하우스뿐만 아니라 어떤 모델인지 알아야 합니다. 자동 주입된 dbt 모델 이름 태그로 system.query.history를 필터링하여 문제를 격리하세요.

또는 Genie에게 질문하여 SQL 작성을 건너뛸 수 있습니다. 쿼리 태그는 시스템 테이블에 비즈니스 컨텍스트를 저장하므로 Genie는 자연어로 워크로드 데이터를 추론할 수 있습니다. 예를 들어: "가장 많은 쿼리를 실행한 dbt 모델은 무엇인가요? 가장 긴 평균 쿼리 시간을 가진 모델은 무엇인가요?”

Natural language query analysis example

쿼리 태그는 다음과 같은 더 많은 모니터링 사용 사례를 지원합니다.

  1. 청구 목적을 위해 query_tags['cost_center']별로 그룹화
  2. 파이프라인 상태를 모니터링하기 위해 query_tags['@@dbt_model_name']로 필터링
  3. 테이블로 워크북별 장기 실행 쿼리 식별
  4. dev와 prod 트래픽을 분리하기 위해 query_tags['env']와 비교

다음 단계

쿼리 태그는 현재 SQL 웨어하우스에 대해 공개 미리 보기로 제공되며, 고객의 모니터링 경험을 더욱 유용하게 만들기 위해 이미 노력하고 있습니다. 업데이트는 문서를 참조하세요.

  • Power BI 자동 태깅: Power BI는 구성 없이 모든 쿼리에 DatasetId 및 ReportId와 같은 메타데이터를 자동으로 첨부합니다. 현재 문서의 단계를 따라 수동으로 활성화할 수 있습니다. 자동 태깅은 다음 Power BI 릴리스부터 기본적으로 활성화됩니다.
  • 더 넓은 커넥터 지원: Python 외에도 Go 및 Node.js에 대한 문장 수준 태깅을 사용할 수 있습니다.
  • UI에서 검색 가능: 곧 쿼리 기록 UI에서 검색을 지원하여 특정 태그(예: "@@dbt_model_name": "my_model")가 있는 쿼리를 검색할 수 있습니다.
  • SQL 웨어하우스 이외의 지원: Serverless Notebooks 및 Jobs에 쿼리 태그를 제공하여 동일한 태깅 및 속성 모델을 노트북 워크로드로 확장합니다.

지금 쿼리 태그를 사용해 보세요

태그가 지정되지 않은 모든 쿼리는 속성 기회 손실입니다. 팀별로 웨어하우스 비용을 분할하거나, 느린 쿼리를 특정 대시보드로 추적하거나, 프로젝트별로 분석가 작업을 레이블링해야 하는 경우 — 쿼리 태그는 이를 수행할 수 있는 컨텍스트를 제공합니다.

dbt를 사용하는 경우 이미 태그를 지정하고 있습니다(쿼리 기록 시스템 테이블 확인). Power BI, Tableau 및 사용자 지정 애플리케이션의 경우 설정에 몇 분이 걸립니다. 임시 작업의 경우 SQL 한 줄이면 됩니다.

쿼리 태그는 현재 모든 클라우드에서 공개 미리 보기로 제공됩니다. 문서로 시작하세요.

(이 글은 AI의 도움을 받아 번역되었습니다. 원문이 궁금하시다면 여기를 클릭해 주세요)

최신 게시물을 이메일로 받아보세요

블로그를 구독하고 최신 게시물을 이메일로 받아보세요.