Snowflake 자동화
Snowflake 데이터 웨어하우스 워크플로우를 자동화하세요 — 데이터베이스 탐색, 스키마 및 테이블 조회, 임의 SQL 실행(SELECT, DDL, DML), 그리고 Snowflake 데이터 작업을 크로스-앱 파이프라인에 통합하세요.
툴킷 문서: composio.dev/toolkits/snowflake
설정
- Composio MCP 서버를 클라이언트에 추가:
https://rube.app/mcp - 연결 요청 시 Snowflake 계정 연결 (계정 자격 증명 또는 키-페어 인증)
- 아래 워크플로우 사용 시작
핵심 워크플로우
1. 데이터베이스 목록 조회
SNOWFLAKE_SHOW_DATABASES를 사용하여 선택적 필터링 및 Time Travel 지원으로 사용 가능한 데이터베이스를 탐색합니다.
도구: SNOWFLAKE_SHOW_DATABASES
입력:
- like_pattern: 문자열 (SQL 와일드카드, 예: "%test%") -- 대소문자 구분 안함
- starts_with: 문자열 (예: "PROD") -- 대소문자 구분
- limit: 정수 (최대 10000)
- history: 불리언 (Time Travel 보존 기간 내 삭제된 데이터베이스 포함)
- terse: 불리언 (열의 하위 집합 반환: created_on, name, kind, database_name, schema_name)
- role: 문자열 (실행에 사용할 역할)
- warehouse: 문자열 (선택 사항, SHOW DATABASES에는 필요하지 않음)
- timeout: 정수 (초)
2. 스키마 탐색
SNOWFLAKE_SHOW_SCHEMAS를 사용하여 데이터베이스 내 또는 계정 전체의 스키마를 나열합니다.
도구: SNOWFLAKE_SHOW_SCHEMAS
입력:
- database: 문자열 (데이터베이스 컨텍스트)
- in_scope: "ACCOUNT" | "DATABASE" | "<특정_데이터베이스_이름>"
- like_pattern: 문자열 (SQL 와일드카드 필터)
- starts_with: 문자열 (대소문자 구분 접두사)
- limit: 정수 (최대 10000)
- history: 불리언 (삭제된 스키마 포함)
- terse: 불리언 (하위 집합 열만)
- role, warehouse, timeout: 문자열/정수 (선택 사항)
3. 테이블 목록 조회
SNOWFLAKE_SHOW_TABLES를 사용하여 행 수, 크기, 클러스터링 키를 포함한 메타데이터로 테이블을 탐색합니다.
도구: SNOWFLAKE_SHOW_TABLES
입력:
- database: 문자열 (데이터베이스 컨텍스트)
- schema: 문자열 (스키마 컨텍스트)
- in_scope: "ACCOUNT" | "DATABASE" | "SCHEMA" | "<특정_이름>"
- like_pattern: 문자열 (예: "%customer%")
- starts_with: 문자열 (예: "FACT", "DIM", "TEMP")
- limit: 정수 (최대 10000)
- history: 불리언 (삭제된 테이블 포함)
- terse: 불리언 (하위 집합 열만)
- role, warehouse, timeout: 문자열/정수 (선택 사항)
4. SQL 문 실행
SNOWFLAKE_EXECUTE_SQL을 사용하여 SELECT 쿼리, DDL(CREATE/ALTER/DROP) 및 DML(INSERT/UPDATE/DELETE)을 파라미터화된 바인딩과 함께 실행합니다.
도구: SNOWFLAKE_EXECUTE_SQL
입력:
- statement: 문자열 (필수) -- SQL 문(들), 여러 문은 세미콜론으로 구분
- database: 문자열 (대소문자 구분, DEFAULT_NAMESPACE로 폴백)
- schema_name: 문자열 (대소문자 구분)
- warehouse: 문자열 (대소문자 구분, 컴퓨팅 바운드 쿼리에 필수)
- role: 문자열 (대소문자 구분, DEFAULT_ROLE로 폴백)
- bindings: 객체 (SQL 인젝션 방지를 위한 파라미터화된 쿼리 값)
- parameters: 객체 (Snowflake 세션 수준 파라미터)
- timeout: 정수 (초, 0 = 최대 604800초)
예시:
"SELECT * FROM my_table LIMIT 100;""CREATE TABLE test (id INT, name STRING);""ALTER SESSION SET QUERY_TAG='mytag'; SELECT COUNT(*) FROM my_table;"
알려진 문제점
| 문제점 | 설명 |
|---|---|
| 대소문자 구분 | SNOWFLAKE_EXECUTE_SQL에서 데이터베이스, 스키마, 웨어하우스, 역할 이름은 대소문자를 구분합니다. |
| 컴퓨팅에 웨어하우스 필요 | SELECT 및 DML 쿼리는 실행 중인 웨어하우스가 필요합니다. SHOW 명령어는 필요하지 않습니다. |
| 다중 문 실행 | 세미콜론으로 구분된 여러 문은 자동으로 순차 실행됩니다. |
| SQL 인젝션 방지 | 사용자 제공 값에는 항상 bindings 파라미터를 사용하여 인젝션 공격을 방지하세요. |
| LIMIT으로 페이지네이션 | SHOW 명령어는 limit(최대 10000) 및 커서 기반 페이지네이션을 위한 from_name을 지원합니다. |
| Time Travel | history: true로 설정하여 보존 기간 내에 있는 삭제된 객체를 포함합니다. |
빠른 참조
| 도구 슬러그 | 설명 |
|---|---|
SNOWFLAKE_SHOW_DATABASES | 필터링 및 Time Travel 지원으로 데이터베이스 목록 조회 |
SNOWFLAKE_SHOW_SCHEMAS | 데이터베이스 내 또는 계정 전체의 스키마 목록 조회 |
SNOWFLAKE_SHOW_TABLES | 메타데이터(행 수, 크기, 클러스터링)와 함께 테이블 목록 조회 |
SNOWFLAKE_EXECUTE_SQL | 파라미터화된 바인딩으로 SQL 실행: SELECT, DDL, DML |
Composio 제공