데이터 엔지니어링 에이전트를 사용하면 자연어 프롬프트를 사용하여 BigQuery에서 데이터 파이프라인을 빌드, 수정, 문제 해결할 수 있습니다. 데이터 엔지니어링 에이전트는 BigQuery로 데이터를 수집하기 위해 데이터 엔지니어링 워크플로를 간소화하는 다음과 같은 기능을 제공합니다.
- Dataform 통합: 에이전트는 Dataform 저장소 및 작업공간 내에서 직접 데이터 파이프라인 코드를 생성하고 구성합니다.
- 계획 생성: 에이전트는 생각을 요약하고 진행하기 전에 에이전트의 계획을 검토하고 확인할 수 있는 계획을 생성할 수 있습니다.
- 코드 유효성 검사: 에이전트는 생성된 코드의 컴파일 오류를 자동으로 검증하고 수정하여 데이터 파이프라인이 작동하는지 확인합니다.
- 자동 데이터 랭글링: 에이전트는 데이터 랭글링을 수행하고 수동 개입 없이 원시 데이터를 구조화된 테이블로 변환합니다.
- 맞춤 요청 사항: 에이전트는 자연어로 특정 규칙과 재사용 가능한 가이드라인을 정의할 수 있는 맞춤 에이전트 요청 사항을 지원합니다.
- 외부 컨텍스트: 에이전트는 추가 컨텍스트를 위해 Knowledge Catalog와 통합됩니다.
- 파이프라인 제어: 작업이 실행되기 전에 생성된 에이전트 계획을 검토하고 맞춤설정할 수 있습니다.
- 최적화: 에이전트는 데이터 파이프라인의 성능을 최적화할 수 있습니다.
- 문제 해결 및 복구: 에이전트는 파이프라인 실패 문제를 해결하고 코드를 수정할 수 있습니다.
데이터 엔지니어링 에이전트를 사용할 수 있는 위치
다음 방법으로 데이터 엔지니어링 에이전트를 사용할 수 있습니다.
- BigQuery 파이프라인 인터페이스 또는 Dataform에서 데이터 파이프라인을 빌드합니다.
- Visual Studio Code에 Google Cloud 데이터 에이전트 키트 확장 프로그램을 설치하여 통합 개발 환경 (IDE)에서 데이터 파이프라인을 빌드합니다.
- 데이터 엔지니어링 에이전트 API를 사용합니다.
데이터 엔지니어링 에이전트가 데이터를 사용하는 방법
데이터 엔지니어링 에이전트는 더 높은 품질의 에이전트 응답을 생성하기 위해 BigQuery 테이블의 샘플 행과 Knowledge Catalog에서 생성된 데이터 스캔 프로필을 비롯한 BigQuery 및 Knowledge Catalog에서 추가 데이터와 메타데이터를 가져올 수 있습니다. 에이전트는 이 데이터를 학습에 사용하지 않습니다. 에이전트 대화 중에 응답을 알리는 추가 컨텍스트로만 데이터를 사용합니다.
데이터 엔지니어링 에이전트가 데이터를 처리하는 위치
데이터 엔지니어링 에이전트가 데이터를 처리하는 위치에 대한 자세한 내용은 BigQuery의 Gemini에서 데이터를 처리하는 위치를 참고하세요.
제한사항
데이터 엔지니어링 에이전트에는 다음과 같은 제한사항이 있습니다.
- 데이터 엔지니어링 에이전트는 다음 파일 유형에 대한 자연어 명령어를 지원하지 않습니다.
- Notebooks
- 데이터 준비
- 데이터 엔지니어링 에이전트는 파이프라인을 실행할 수 없습니다. 파이프라인을 검토하고 실행하거나 예약해야 합니다.
- 데이터 엔지니어링 에이전트는 요청 사항 또는 직접 프롬프트를 통해 제공된 웹 링크 또는 URL을 검색할 수 없습니다.
- 에이전트 요청 사항 파일에서 파일을 가져올 때 가져오기 문법은 `./`, `/` 또는 문자로 시작하는 경로만 지원합니다.
@.// - 데이터 미리보기 기능은
플래그가
true로 설정된 테이블, 선언 또는 쿼리에만 지원됩니다.hasOutput - 데이터 엔지니어링 에이전트에는 AI기술의 일반적인 제한사항이 적용됩니다.
에이전트 기능 및 맞춤설정
다음 섹션에서는 추가 에이전트 기능과 데이터 엔지니어링 에이전트를 맞춤설정하는 다른 방법을 설명합니다.
에이전트 요청 사항
에이전트 안내는 데이터 엔지니어링 에이전트에 대한 자연어 안내로, 에이전트가 일련의 맞춤설정된 사전 정의된 규칙을 따르도록 영구 안내를 저장할 수 있습니다. 에이전트의 결과가 조직 전체에서 일관되도록 하려면 에이전트 요청 사항을 사용하세요(예: 명명 규칙 또는 스타일 가이드 적용).
데이터 엔지니어링 에이전트의 에이전트 요청 사항을 만들려면
GEMINI.MD 컨텍스트
파일
을 에이전트 요청 사항 파일로 만듭니다.
에이전트 요청 사항 파일의 권장사항
에이전트 요청 사항을 사용할 때는 다음을 권장합니다.
- Dataform의 모든 파일 경로는 저장소의 루트를 기준으로 합니다.
GEMINI.md로 요청 사항을 올바르게 가져오려면@file.md문법에 상대 경로를 사용하세요. GEMINI.md에서 가져온 파일 자체에 가져오기가 포함될 수 있으며, 이로 인해 중첩된 구조가 생성될 수 있습니다. 무한 재귀를 방지하기 위해GEMINI.md의 최대 가져오기 깊이는 5단계입니다.- 데이터 파이프라인 간에 요청 사항을 공유하려면 중앙 Dataform 저장소에 요청 사항을 저장하고 작업 Dataform 저장소에 연결합니다. 로컬 요청 사항을 사용하여 파이프라인별 동작에 대한 중앙 규칙을 재정의할 수 있습니다.
- 프로젝트의 일관성을 보장하기 위해 명명 규칙 파일 또는 스타일 가이드에 연결하고 데이터 파이프라인으로 작업할 때 에이전트가 이러한 가이드라인을 따르도록 요청할 수 있습니다.
- 요청 사항 파일에서 데이터 레이어를 제안하여 다양한 유형의 데이터를 함께 그룹화할 수 있습니다.
- 에이전트 요청 사항 파일에서 제목과 목록을 사용하면 데이터 엔지니어링 에이전트의 요청 사항을 구성하고 명확하게 하는 데 도움이 될 수 있습니다.
- 의미 있는 파일 이름을 제공하고 유사한 요청 사항을 파일에 함께 그룹화합니다. Markdown 제목을 사용하여 카테고리, 기능 또는 기능별로 규칙을 논리적으로 구성합니다.
- 충돌하는 요청 사항을 방지하려면 각 요청 사항이 적용되는 특정 조건을 명확하게 정의합니다.
- 프롬프트와 워크플로를 반복하고 개선합니다. 에이전트 동작은 에이전트 출시 및 모델 업그레이드에 따라 시간이 지남에 따라 변경되므로 다양한 프롬프트로 규칙을 반복하여 개선이 필요한 영역을 식별하는 것이 좋습니다. 규칙 파일을 데이터 파이프라인의 변경사항과 동기화합니다.
다음 예에서는 데이터 엔지니어링 에이전트를 효과적으로 사용하기 위한 권장사항을 활용하는 GEMINI.md라는 에이전트 요청 사항 파일을 보여줍니다.
### Naming Conventions
* Datasets: [business_domain]_[use_case] (e.g., ecommerce_sales)
* Tables:
- Raw/External: raw_[source_name]
- Staging: stg_[business_entity]
- Dimension: dim_[dimension_name]
- Fact: fct_[fact_name]
* Dataform Folders:
- sources
- staging
- marts
- dataProducts
* Views: vw_[view_name]
* Columns: snake_case (e.g., order_id, customer_name)
## Cloud Storage data load
* When ingesting data from Cloud Storage, create external tables.
## Null handling
* Filter out null id values
## String normalization
* Standardize string columns by converting to lower case
## Data Cleaning Guidelines
@./generic_cleaning.md
추가 로컬 파일을 에이전트 요청 사항으로 가져오기
@file.md 문법을 사용하여 데이터 엔지니어링 에이전트의 다른 요청 사항 파일을 GEMINI.md 파일로 가져올 수도 있습니다. 자세한 내용은 메모리 가져오기 프로세서를 참고하세요.
자동 데이터 랭글링
데이터 엔지니어링 에이전트를 사용하여 처리되지 않은 원시 데이터를 데이터 분석에 적합한 구조화된 테이블로 변환할 수 있습니다. 요청 시 에이전트는 먼저 각 표준 또는 외부 테이블에서 최대 1,000,000개의 레코드를 샘플링합니다. 그런 다음 에이전트는 이 샘플에서 프로파일링 쿼리를 실행하여 심층 데이터 분석을 수행합니다. 데이터 변환을 생성한 후 에이전트는 이 샘플링 및 프로파일링 프로세스를 반복하여 변환의 품질을 평가합니다. 이러한 데이터 랭글링 변환에는 데이터 불일치, 이상점 또는 유형 불일치 수정이 포함될 수 있습니다. 그런 다음 데이터 엔지니어링 에이전트는 작업이 발생하기 전에 검토하고 개선할 수 있도록 제안된 랭글링 단계를 간략하게 설명하는 계획을 만듭니다.
데이터 엔지니어링 에이전트는 CSV 기반 외부 테이블과 같은 원시 테이블을 추가할 때마다 데이터 랭글링 분석을 시작합니다. 데이터 랭글링 계획을 검토하고 대화형 명령어로 조정할 수 있습니다.
데이터 샘플링 및 프로파일링은 BigQuery 리소스를 사용하며 BigQuery 가격 책정이 적용됩니다.
데이터 엔지니어링 에이전트는 다음과 같은 데이터 랭글링 변환을 지원합니다.
- 데이터 정리. 에이전트는 원시 데이터를 분석하고 이상점 삭제, 누락되거나 일관성 없는 값 채우기(데이터 대치), 중복 데이터 수정, 데이터 형식 표준화(예: 전화번호 또는 주소)와 같은 정리 기회를 제안할 수 있습니다.
- 구조적 변환. 대상 스키마가 제공되면 에이전트는
JSON,ARRAY또는STRUCT유형에서 값을 중첩 해제하거나 추출하고, 여러 열을 하나로 병합하거나, 하나의 열을 여러 열로 분할할 수 있습니다. - 데이터 유형 감지 및 변환. 에이전트는 데이터를 분석하여 적절한 필드 유형을 결정할 수 있습니다. 그런 다음 에이전트는 보안 유형 변환을 수행하여 날짜, 시간, datetime 또는 타임스탬프 필드 내의 형식 불일치를 해결할 수 있습니다.
- 단위 변환. 에이전트는 필드 내의 다양한 단위를 하나의 일관된 단위로 자동 변환하여 데이터를 표준화할 수 있습니다.
정확성을 보장하기 위해 에이전트는 데이터의 대표 샘플을 사용하여 문제를 감지하고 변환 로직을 검증합니다.
에이전트 계획 생성 및 검토
데이터 엔지니어링 에이전트는 요청을 완료하는 데 필요한 목표와 단계를 요약하고 개요를 제공하는 에이전트 계획을 생성할 수 있습니다. 많은 변경사항이 필요한 복잡한 요청으로 에이전트에 프롬프트를 표시할 때는 에이전트가 작업을 수행하기 전에 에이전트의 의도를 검토할 수 있도록 에이전트 계획을 제공하도록 요청하는 것이 좋습니다. 데이터 엔지니어링 에이전트 계획은 일반적으로 다음으로 구성됩니다.
- 특정 요청에 대한 에이전트의 목표
- 에이전트가 계획하는 단계의 대략적인 개요
- 에이전트가 만드는 가정
- 에이전트가 수정할 계획인 파일
- 에이전트가 수행할 계획인 최적화 또는 정리 단계
- 단계별 실행 계획
프롬프트에 계획을 검토하고 승인해야 한다는 요구사항을 포함하여 에이전트가 명시적 승인 없이 작업을 수행하지 않도록 할 수 있습니다. 예를 들면 다음과 같습니다.
Create a plan for a pipeline that finds the top N pick up and drop off locations in NYC. I want to review the plan and approve it before you create the pipeline.
에이전트는 에이전트 계획을 자동으로 생성하고 승인을 요청할 수도 있습니다. 이 결과는 프롬프트가 너무 모호하거나 에이전트가 요청을 이행하기 위해 더 명확한 정보가 필요한 경우에 발생할 수 있습니다.
에이전트 계획 사용에 관한 권장사항은 권장사항을 참고하세요.
Knowledge Catalog에서 컨텍스트 추가
데이터 엔지니어링 에이전트는 BigQuery 테이블 및 열에 용어집 용어를 연결하고 데이터 프로필 스캔을 생성하여 Knowledge Catalog를 사용합니다. 용어집 용어는 특별 처리 요청 사항이 필요한 개인 식별 정보 (PII)가 포함된 열과 같이 추가 컨텍스트가 필요한 열에 태그를 지정하거나 테이블 간에 이름이 다른 일치하는 열을 식별할 수 있습니다.
Knowledge Catalog는 데이터 프로파일링도 활용하여 에이전트 가 테이블 열 내의 데이터 분포를 더 잘 이해하고 에이전트가 더 구체적인 데이터 품질 어설션을 만드는 데 도움이 됩니다.
기존 테이블에 데이터 품질 검사 추가
에이전트에 품질 검사를 추가하도록 요청하면 에이전트는 스키마와 샘플을 기반으로 테이블에 대한 합리적인 검사를 추론합니다. 프롬프트의 일부로 의견이 있는 어설션을 추가할 수도 있습니다. 예를 들면 다음과 같습니다.
Add data quality checks for bigquery-public-data.thelook_ecommerce.users.
데이터 파이프라인 최적화
에이전트에 데이터 파이프라인을 최적화하도록 요청할 수 있습니다. 새 테이블의 DDL을 생성할 때 데이터 엔지니어링 에이전트는 분석된 데이터 사용 패턴을 기반으로 파티셔닝 및 클러스터링을 권장합니다. 또한 에이전트는 다른 파이프라인 최적화를 자동으로 적용할 수 있습니다. 가능한 최적화의 예는 다음과 같습니다.
- 스토리지에서 읽는 데이터를 줄여 기본 비용 및 성능 드라이버 역할을 하는 열 가지치기.
- 실행 계획 초기에 데이터를 필터링하여 후속 작업에서 처리하는 볼륨을 크게 줄이는 조건자 푸시다운.
- 공통 하위 표현식 삭제: 공유 변환 로직을 한 번만 식별하고 계산하여 효율성을 개선하고, 대형 테이블을 여러 번 스캔하고 조인하는 것과 같은 비효율적인 관행을 방지합니다.
- 각 실행에서 전체 테이블을 다시 빌드하는 대신 마지막 실행 이후의 새 데이터 또는 변경된 데이터만 처리하는 증분 모델.
권장사항
데이터 엔지니어링 에이전트 및 Dataform으로 작업할 때 결과를 개선하려면 다음을 수행하는 것이 좋습니다.
일반적인 요청에 에이전트 요청 사항을 사용합니다. 일반적으로 특정 기법을 적용하거나 에이전트에 동일한 수정을 자주 적용하는 경우 에이전트 요청 사항을 일반적인 요청 사항과 요청을 저장하는 중앙 위치로 사용합니다.
에이전트 계획을 활용합니다. 에이전트 계획은 복잡한 파이프라인 작업을 세분화하는 데 도움이 될 수 있습니다. 에이전트 계획은 에이전트 가정과 의도도 보여줄 수 있으므로 이러한 계획을 검토하여 에이전트에 올바른 컨텍스트가 제공되는지 확인하는 것이 좋습니다.
계획을 검토한 후 의견과 변경사항으로 데이터 엔지니어링 에이전트에 프롬프트를 표시하여 계획을 수정할 수 있습니다. 예를 들면 다음과 같습니다.
In the plan, ensure that all of the intermediate tables are views.
경우에 따라 에이전트에 명시적 승인이 필요하지 않은 계획을 생성하도록 요청하는 것이 도움이 될 수 있습니다. 에이전트 계획을 작성하면 데이터 엔지니어링 에이전트가 작업을 세분화하게 되므로 더 나은 결과를 얻을 수 있습니다. 에이전트가 계획을 생성하고 자동으로 실행하도록 강제할 수 있습니다. 예를 들면 다음과 같습니다.
Create a plan for a pipeline that finds the
top N pick up and drop off locations in NYC. You have my explicit pre-approval
to go ahead and execute this plan.
명확하게 작성합니다. 요청을 명확하게 서술하고 모호하게 표현하지 마세요. 가능한 경우 다음 예와 같이 프롬프트를 표시할 때 소스 및 대상 데이터 소스를 제공합니다.
Extract data from the sales.customers table in the us_west_1 region, and load
it into the reporting.dim_customers table in BigQuery. Match the schema of the
destination table.
직접적이고 범위가 지정된 요청을 제공합니다. 한 번에 하나씩만 질문하고 프롬프트를 간결하게 유지합니다. 질문이 두 개 이상인 프롬프트의 경우 다음 예와 같이 질문의 각 고유한 부분을 항목화하여 명확성을 개선합니다.
1. Create a new table named staging.events_cleaned. Use raw.events as the
source. This new table should filter out any records where the user_agent
matches the pattern '%bot%'. All original columns should be included.
2. Next, create a table named analytics.user_sessions. Use
staging.events_cleaned as the source. This table should calculate the
duration for each session by grouping by session_id and finding the
difference between the MAX(event_timestamp) and MIN(event_timestamp).
명시적 요청 사항을 제공하고 주요 용어를 강조합니다. 다음 예와 같이 프롬프트에서 주요 용어 또는 개념을 강조하고 특정 요구사항을 중요하다고 라벨링할 수 있습니다.
When creating the staging.customers table, it is *VERY IMPORTANT* that you
transform the email column from the source table bronze.raw_customers.
Coalesce any NULL values in the email column to an empty string ''.
작업 순서를 지정합니다. 정렬된 작업의 경우 다음 예와 같이 목록에서 프롬프트를 구성합니다. 여기서 나열된 항목은 집중적으로 수행할 수 있는 작은 단계로 나뉩니다.
Create a pipeline with the following steps:
1. Extract data from the ecomm.orders table.
2. Join the extracted data with the marts.customers table on customer_id.
3. Load the final result into the reporting.customer_orders table.
수정하고 반복하세요. 다양한 문구와 접근 방식을 계속 시도하여 가장 좋은 결과를 얻는 방법을 알아보세요. 에이전트가 잘못된 SQL 또는 기타 실수를 생성하는 경우 예 또는 공개 문서를 사용하여 에이전트를 안내합니다.
The previous query was incorrect because it removed the timestamp. Please
correct the SQL. Use the TIMESTAMP_TRUNC function to truncate the
event_timestamp to the nearest hour, instead of casting it as a DATE. For
example: TIMESTAMP_TRUNC(event_timestamp, HOUR).