오늘, Databricks는 ANSI SQL/PSM 스크립팅 언어를 지원한다고 발표했습니다!
Databricks에서 이제 SQL 스크립팅을 사용할 수 있습니다. 이를 통해 이미 알고 있는 SQL에 직접 루핑 및 제어 흐름과 같은 절차적 논리를 도입할 수 있습니다. Databricks에서의 스크립팅은 오픈 표준을 기반으로 하며 Apache Spark™와 완벽하게 호환됩니다.
SQL을 주로 사용하는 사용자들에게 이는 Databricks의 확장성과 AI 기능을 활용하면서 직접 Lakehouse에서 작업하는 것을 더욱 쉽게 만듭니다.
이미 Databricks를 사용하고 있다면, SQL 스크립팅은 특히 관리 로직과 ELT 작업을 구축하는 데 유용하게 사용할 수 있습니다. 주요 기능은 다음과 같습니다:
기능 목록은 여기까지 — 실제 예제를 살펴봅시다. 이 노트북을 사용하여 함께 따라갈 수 있습니다.
관리 작업과 데이터 정리는 기업 데이터 관리에서 항상 필요하며, 일상적이며 피할 수 없습니다. 과거 기록을 정리하고, 혼합된 형식을 표준화하고, 새로운 명명 규칙을 적용하고, 열 이름을 변경하고, 데이터 유형을 확장하고, 열 마스크를 추가해야 합니다. 이러한 작업을 자동화할수록 시스템이 시간이 지남에 따라 더욱 신뢰성 있고 관리하기 쉬워집니다. 일반적인 예: 테이블의 모든 STRING 열에 대해 대소문자를 구분하지 않는 동작을 강제합니다.
SQL 스크립팅이 이러한 스키마 관리를 반복 가능하고 간단하게 만드는 방법을 살펴봅시다.
이 예에서는 employees라는 테이블의 모든 적용 가능한 열에 대해 문자열 정렬 및 비교에 대한 새로운 정책을 적용하려고 합니다. 우리는 표준 정렬 유형인 UTF8_LCASE를 사용하여 이 테이블의 값 정렬 및 비교가 항상 대소문자를 구분하지 않도록 보장할 것입니다. 이 표준을 적용하면 사용자는 정렬 사용의 성능 이점을 누릴 수 있으며, 사용자가 쿼리에서 LOWER()를 적용할 필요가 없어 코드가 단순화됩니다.
우리는 어떤 테이블과 정렬 유형을 변경할지 지정하기 위해 위젯을 사용할 것입니다. 정보 스키마를 사용하여 해당 테이블에서 STRING 타입의 모든 기존 열을 찾아서 그들의 콜레이션을 변경할 것입니다. 우리는 열 이름을 배열로 수집할 것입니다. 마지막으로, 우리는 변경된 열에 대한 새로운 통계를 모두 한 스크립트에서 수집할 것입니다.
위 스크립트의 자연스러운 확장은 이를 스키마의 모든 테이블에 확장하고, 정렬 변경을 반영하기 위해 뷰를 새로 고치는 것입니다.
'더러운 데이터'보다 더 흔한 문제가 있을까요? 다른 시스템, 장치, 그리고 사람들로부터의 데이터는 반드시 차이점이나 실수가 있을 것이며, 이를 수정해야 합니다. 데이터가 정리되지 않으면 잘못된 결과를 얻을 수 있고 중요한 통찰력을 놓칠 수 있습니다. LLM에 쓰레기를 넣으면 쓰레기 응답을 기대할 수 있습니다.
이 블로그를 포함한 모든 출판물의 골칫거리인 오타를 포함한 예를 살펴보겠습니다. 우리는 description이라는 열에 자유 텍스트 항목이 포함된 테이블을 가지고 있습니다. 텍스트의 문제점, 철자 및 문법 오류를 포함하여, 영어를 아는 사람이라면 누구나 알 수 있습니다. 데이터를 이 상태로 두면 텍스트를 분석하거나 검사하려고 하면 나중에 분명히 문제가 발생할 것입니다. SQL 스크립팅으로 이 문제를 해결해 봅시다! 먼저, 정보 스키마에서 이 열 이름을 가진 테이블을 추출합니다. 그런 다음 ai_fix_grammar()를 사용하여 철자 오류를 수정합니다. 이 함수는 비결정적입니다. 그래서 우리는 MERGE 를 사용하여 우리의 목표를 달성합니다.
흥미로운 개선점은 ai_classify() 가 열 이름이나 샘플 데이터로부터 열이 자유 형식 텍스트를 포함하는지 추론하게 하는 것일 수 있습니다. SQL 스크립팅은 관리 작업과 지저분한 데이터 정리를 효율적이고 간단하게 만듭니다.
고객들은 오늘날 ETL을 위해 SQL을 사용합니다. 왜 그럴까요? SQL은 조인, 집계, 필터링 등의 강력한 데이터 변환 기능을 지원하며, 직관적인 구문을 사용하여 파이프라인 코드를 어떤 데이터 엔지니어라도 쉽게 확장, 업데이트, 유지 관리할 수 있습니다. 이제 SQL 스크립팅을 통해 고객들은 이전에 복잡했던 접근 방식을 단순화하거나 순수 SQL로 더 복잡한 로직을 처리할 수 있습니다.
물리적 제품을 판매하는 사람이라면 판매를 모니터링하고 출하를 추적하는 과정이 있을 것입니다. 일반적인 데이터 관리 패턴은 거래, 출하, 배송, 반품을 추적하기 위해 여러 테이블을 모델링하는 것입니다. 거래 모니터링은 비즈니스에 중요하며, 모든 중요한 프로세스와 마찬가지로 예상치 못한 값의 처리가 필요합니다. SQL 스크립팅을 사용하면, 조건부 CASE 문을 활용하여 거래를 적절한 테이블로 파싱하는 것이 쉽고, 오류가 발생하면 예외를 잡을 수 있습니다.
이 예제에서는 이벤트 유형에 따라 행이 알려진 목표 테이블 세트로 라우팅되어야 하는 원시 트랜잭션 테이블을 고려합니다. 스크립트가 알려지지 않은 이벤트를 만나면 사용자 정의 예외가 발생합니다. 세션 변수는 스크립트 가 완료되거나 예외를 만나기 전에 얼마나 진행되었는지를 추적합니다.
이 예제 스크립트는 더 많은 데이터를 폴링하기 위해 외부 루프로 확장될 수 있습니다. SQL 스크립팅을 사용하면 데이터 전체를 관리하고 업데이트하는 데 필요한 힘과 유연성을 모두 갖게 됩니다. SQL 스크립팅은 어떤 데이터 관리 작업도 처리하고 데이터 처리 흐름을 효율적으로 제어할 수 있는 능력을 제공합니다.
Databricks 블로그와 다가오는 SQL 세션 그리고 Data + AI Summit에 주목하세요. 임시 테이블, SQL 저장 프로시저 등에 대한 지원을 시작할 준비를 하고 있습니다!
기존 Databricks 사용자가 일상적인 유지 보수를 하든, 대규모 마이그레이션을 조정하든, SQL 스크립팅은 활용해야 할 기능입니다. SQL 스크립팅은 SQL 스크립팅 | Databricks 문서에서 자세히 설명되어 있습니다.
이 예제들은 바로 이 SQL 스크립팅 노트북에서 직접 시도해 볼 수 있습니다. 자세한 내용은 이 시리즈의 2부에서 SQL 스크립팅 구조와 사용 방법에 대해 다룰 예정이니, 기대해 주세요.
(이 글은 AI의 도움을 받아 번역되었습니다. 원문이 궁금하시다면 여기를 클릭해 주세요)