Google Drive용 Openflow 커넥터 설정
Google Drive용 Openflow 커넥터 설정
이 주제는 Openflow Connector for Google Drive를 설정하는 단계를 설명해요.
출처: Snowflake 문서
본문
참고: 이 커넥터는 Snowflake Connector Terms가 적용돼요.
이 주제는 Openflow Connector for Google Drive를 설정하는 단계를 설명해요.
전제 조건(Prerequisites)
- About Openflow Connector for Google Drive을 검토했는지 확인해요.
- Set up Openflow - Snowflake Deployments 또는 Set up Openflow - BYOC를 설정했는지 확인해요.
- Openflow - Snowflake Deployments를 사용한다면 configuring required domains을 검토하고, Google Drive 커넥터에 필요한 도메인에 대한 액세스를 부여했는지 확인해요.
자격 증명 가져오기
커넥터를 설정하려면 Snowflake Openflow 프로세서가 Google에서 데이터를 읽을 수 있도록 특정 권한과 계정 설정이 필요해요. 이 액세스는 일부 Openflow가 그 서비스 계정으로 인증할 수 있도록 서비스 계정과 키를 설정함으로써 제공돼요. 자세한 내용은:
Google Drive 관리자로서 다음 단계를 수행해요:
전제 조건
다음 요구 사항을 충족하는지 확인해요:
- Super Admin 권한이 있는 Google 사용자
- 다음 역할이 있는 Google Cloud 프로젝트:
- Organization Policy Administrator
- Organization Administrator
서비스 계정 키 생성 활성화
기본적으로 Google은 서비스 계정 키 생성을 비활성화해요. Openflow가 서비스 계정 JSON을 사용하려면 이 키 생성 정책을 꺼야 해요.
- Organizational Policy Admin 역할이 있는 슈퍼 관리자 계정으로 Google Cloud Console에 로그인해요.
- 조직과 연결된 프로젝트에 있는지 확인해요(조직 안의 프로젝트가 아니라).
- Organization Policies를 클릭해요.
- Disable service account key creation 정책을 선택해요.
- Manage Policy를 클릭하고 강제 적용을 꺼요.
- Set Policy를 클릭해요.
서비스 계정과 키 만들기
- Google Cloud Console을 열고 서비스 계정을 만들 수 있는 액세스가 부여된 사용자로 인증해요.
- 조직의 프로젝트에 있는지 확인해요.
- 왼쪽 내비게이션의 IAM & Admin 아래에서 Service Accounts 탭을 선택해요.
- Create Service Account를 클릭해요.
- 서비스 계정 이름을 입력하고 Create and Continue를 클릭해요.
- Done을 클릭해요. 나열된 서비스 계정 표에서 OAuth 2 Client ID 컬럼을 찾아요. 다음 섹션에서 도메인 전체 위임을 설정하는 데 필요하므로 Client ID를 복사해요.
- 새로 만든 서비스 계정에서, 그 서비스 계정에 대해 나열된 서비스 계정 표 아래의 메뉴를 클릭하고 Manage keys를 선택해요.
- Add key를 선택한 다음 Create new key를 선택해요.
- 기본 선택인 JSON을 그대로 두고 Create를 클릭해요. 키가 브라우저의 Downloads 디렉터리에 .json 파일로 다운로드돼요.
나열된 스코프에 서비스 계정 도메인 전체 위임 부여하기
- Google Admin 계정에 로그인해요.
- Google Apps selector에서 Admin을 선택해요.
- 왼쪽 내비게이션에서 Security와 Access를 확장하고 Data control을 선택한 다음 API Controls를 클릭해요.
- API Controls 화면에서 Manage domain-wide delegation을 선택해요.
- Add new를 클릭해요.
- "서비스 계정과 키 만들기" 섹션에서 가져온 OAuth 2 Client ID와 다음 스코프를 입력해요:
https://www.googleapis.com/auth/drivehttps://www.googleapis.com/auth/drive.metadata.readonlyhttps://www.googleapis.com/auth/admin.directory.group.member.readonlyhttps://www.googleapis.com/auth/admin.directory.group.readonlyhttps://www.googleapis.com/auth/drive.filehttps://www.googleapis.com/auth/drive.metadata
- Authorize를 클릭해요.
Snowflake 계정 설정하기
Openflow 관리자로서 Snowflake 계정을 설정하려면 다음 작업을 수행해요. 기본 SNOWFLAKE_MANAGED 인증 전략을 사용하면 런타임의 execute-as 역할이 커넥터가 Snowflake에 접근할 때 사용하는 신원이 되므로, 그 역할에 다음 권한을 부여해요.
참고: Openflow - BYOC Deployments에 커넥터를 배포하고 권장하는
SNOWFLAKE_MANAGED대신KEY_PAIR인증 전략을 사용한다면, 런타임의 관리 토큰에 의존하는 대신 이 같은 execute-as 역할을 서비스 사용자에게 부여해요. 서비스 사용자를 만들려면 Set up key-pair authentication for Openflow - BYOC Deployments을 참고해요.
데이터베이스, 스키마, 웨어하우스 만들기
- 대상 데이터베이스를 만들어요:
USE ROLE OPENFLOW_ADMIN; CREATE DATABASE IF NOT EXISTS <destination_database>; - 대상 스키마를 만들어요:
CREATE SCHEMA IF NOT EXISTS <destination_database>.<destination_schema>; - 런타임의 execute-as 역할에 필요한 권한을 부여해요:
GRANT USAGE ON DATABASE <destination_database> TO ROLE OPENFLOW_<RUNTIME_NAME>_EXECUTE_AS_RL; GRANT USAGE ON SCHEMA <destination_database>.<destination_schema> TO ROLE OPENFLOW_<RUNTIME_NAME>_EXECUTE_AS_RL; GRANT CREATE TABLE, CREATE DYNAMIC TABLE, CREATE STAGE, CREATE SEQUENCE ON SCHEMA <destination_database>.<destination_schema> TO ROLE OPENFLOW_<RUNTIME_NAME>_EXECUTE_AS_RL; - 웨어하우스를 만들거나(기존 것을 사용하거나) 사용 권한을 부여해요:
CREATE WAREHOUSE IF NOT EXISTS <openflow_warehouse> WITH WAREHOUSE_SIZE = 'XSMALL' AUTO_SUSPEND = 300 AUTO_RESUME = TRUE; GRANT USAGE, OPERATE ON WAREHOUSE <openflow_warehouse> TO ROLE OPENFLOW_<RUNTIME_NAME>_EXECUTE_AS_RL; - 커넥터가 수집한 원시 문서와 테이블에 액세스가 필요한 다른 Snowflake 사용자가 있다면(예: Snowflake에서 커스텀 처리), 그 사용자에게 execute-as 역할을 부여해요.
Cortex Search 권한 부여하기
Ingest files and perform processing with Cortex 사용 사례로 커넥터를 사용한다면 다음 작업도 수행해요:
- 이 커넥터가 만든 Cortex Search 서비스에 대한 읽기 액세스 역할을 만들고, 그 서비스를 사용할 임의의 역할에 이를 부여해요:
USE ROLE SECURITYADMIN; CREATE ROLE IF NOT EXISTS <cortex_search_service_read_only_role>; GRANT ROLE <cortex_search_service_read_only_role> TO ROLE <whatever_roles_will_access_search_service>; - Cortex Search 서비스를 만들 권한을 부여하고, 읽기 전용 역할에 데이터베이스와 스키마 액세스를 부여해요:
GRANT CREATE CORTEX SEARCH SERVICE ON SCHEMA <destination_database>.<destination_schema> TO ROLE OPENFLOW_<RUNTIME_NAME>_EXECUTE_AS_RL; GRANT USAGE ON DATABASE <destination_database> TO ROLE <cortex_search_service_read_only_role>; GRANT USAGE ON SCHEMA <destination_database>.<destination_schema> TO ROLE <cortex_search_service_read_only_role>;
사용 사례 1: 커넥터 정의로 파일만 수집하기
커넥터 정의를 사용해:
- 수집된 파일에 대한 커스텀 처리를 수행
- Google Drive 파일과 권한을 수집하고 최신 상태로 유지
커넥터 설정하기
데이터 엔지니어로서 커넥터를 설치하고 구성하려면 다음 작업을 수행해요:
커넥터 설치하기
데이터 엔지니어로서 커넥터를 설치하려면:
- Openflow의 Connector library 탭으로 이동해요.
- Openflow 커넥터 페이지에서 커넥터를 찾고 Install을 선택해요.
- Select runtime 대화상자에서 Available runtimes 드롭다운 목록에서 런타임을 선택하고 Install을 클릭해요.
참고: 커넥터를 설치하기 전에, 수집된 데이터를 저장할 Snowflake에 데이터베이스와 스키마를 만들었는지 확인해요.
- Snowflake 계정 자격 증명으로 배포에 인증하고, 런타임 애플리케이션이 Snowflake 계정에 접근하는 것을 허용하라는 프롬프트가 나오면 Allow를 선택해요. 커넥터 설치 과정은 완료되는 데 몇 분이 걸려요.
- Snowflake 계정 자격 증명으로 런타임에 인증해요. Openflow 캔버스에 커넥터 프로세스 그룹이 추가된 상태로 나타나요.
커넥터 구성하기
- 가져온 프로세스 그룹을 마우스 오른쪽 버튼으로 클릭하고 Parameters를 선택해요.
- Google Drive Source Parameters, Google Drive Destination Parameters, Google Drive Ingestion Parameters에 설명된 대로 필수 파라미터 값을 입력해요.
Google Drive Source Parameters
| 파라미터 | 설명 |
|---|---|
| Google Delegation User | 서비스 계정이 사용하는 사용자 |
| GCP Service Account JSON | 커넥터가 Google API에 접근하도록 Google Cloud Console에서 다운로드한 서비스 계정 JSON |
Google Drive Destination Parameters
| 파라미터 | 설명 | 필수 |
|---|---|---|
| Destination Database | 데이터가 저장될 데이터베이스. Snowflake에 이미 존재해야 함. 이름은 대소문자를 구분함. 인용되지 않은 식별자는 대문자로 제공 | 예 |
| Destination Schema | 데이터가 저장될 스키마. Snowflake에 이미 존재해야 함. 이름은 대소문자를 구분함. 인용되지 않은 식별자는 대문자로 제공. 예: CREATE SCHEMA SCHEMA_NAME 또는 CREATE SCHEMA schema_name: SCHEMA_NAME 사용. CREATE SCHEMA "schema_name" 또는 CREATE SCHEMA "SCHEMA_NAME": 각각 schema_name 또는 SCHEMA_NAME 사용 |
예 |
| Snowflake Authentication Strategy | 다음 중 하나: Snowflake Openflow Deployment 또는 BYOC: SNOWFLAKE_MANAGED 사용(이 토큰은 Snowflake가 자동 관리함). BYOC 배포는 SNOWFLAKE_MANAGED를 사용하려면 이전에 execute-as roles을 구성해야 함. BYOC: 대안으로 BYOC는 인증 전략 값으로 KEY_PAIR를 사용할 수 있음 | 예 |
| Snowflake Account Identifier | 다음 중 하나: SNOWFLAKE_MANAGED 인증 전략: 비어 있어야 함. KEY_PAIR: [organization-name]-[account-name] 형식의 Snowflake 계정 이름 | 예 |
| Snowflake Private Key | 다음 중 하나: SNOWFLAKE_MANAGED 인증 전략: 비어 있어야 함. KEY_PAIR: PKCS8 표준에 따라 형식화되고 표준 PEM 헤더·푸터를 포함하는 인증용 RSA 개인 키. Snowflake Private Key File 또는 Snowflake Private Key 중 하나는 정의해야 함 | 아니요 |
| Snowflake Private Key File | 다음 중 하나: SNOWFLAKE_MANAGED 인증 전략: 개인 키 파일은 비어 있어야 함. KEY_PAIR: PKCS8 표준에 따라 형식화되고 표준 PEM 헤더·푸터를 포함하는 인증용 RSA 개인 키가 들어 있는 파일을 업로드. 헤더 줄은 -----BEGIN PRIVATE로 시작함. Reference asset 체크박스를 선택해 개인 키 파일을 업로드 |
아니요 |
| Snowflake Private Key Password | 다음 중 하나: SNOWFLAKE_MANAGED 인증 전략: 비어 있어야 함. KEY_PAIR: Snowflake 개인 키 파일과 연결된 비밀번호 제공 | 아니요 |
| Snowflake Role | 다음 중 하나: SNOWFLAKE_MANAGED 인증 전략: 런타임의 execute-as 역할(또는 그 역할에 부여된 하위 역할) 사용. execute-as 역할은 Openflow UI에서 런타임의 View Details로 이동해 찾을 수 있음. KEY_PAIR: 서비스 사용자에 대해 구성된 유효한 역할 사용 | 예 |
| Snowflake Username | 다음 중 하나: SNOWFLAKE_MANAGED 인증 전략: 비어 있어야 함. KEY_PAIR: Snowflake 인스턴스에 연결하는 데 사용되는 사용자 이름 제공 | 예 |
| Snowflake Warehouse | 쿼리를 실행하는 데 사용되는 Snowflake 웨어하우스 | 예 |
Google Drive Ingestion Parameters
| 파라미터 | 설명 |
|---|---|
| Google Drive ID | 콘텐츠와 업데이트를 감시할 Google Shared Drive |
| Google Folder Name | 선택적으로 Google Drive 폴더 식별자(읽기 쉬운 폴더 이름)를 설정해 들어오는 파일을 필터링할 수 있음. 모든 파일을 원하면 "Set Empty String"을 선택함. 설정되면 제공된 폴더 또는 하위 폴더에 있는 파일만 검색됨. 비어 있거나 설정되지 않으면 폴더 필터링이 적용되지 않고 드라이브 아래의 모든 파일이 검색됨 |
| Google Domain | Google Groups와 Drive가 있는 Google Workspace 도메인 |
| File Extensions To Ingest | 수집할 파일 확장자를 지정하는 쉼표로 구분된 목록. 커넥터는 가능하면 먼저 파일을 PDF 형식으로 변환하려고 시도함. 그럼에도 확장자 검사는 원래 파일 확장자에 대해 수행됨. 지정된 확장자 중 일부가 Cortex Parse Document에서 지원되지 않으면 커넥터는 그 파일들을 무시하고 이벤트 로그에 경고 메시지를 기록한 다음 다른 파일을 계속 처리함 |
| Snowflake File Hash Table Name | 콘텐츠가 변경되지 않았을 때 콘텐츠 업데이트를 방지하기 위해 파일 콘텐츠 해시를 저장하는 데 사용되는 내부 테이블 |
- 평면(plane)을 마우스 오른쪽 버튼으로 클릭하고 Enable all Controller Services를 선택해요.
- 가져온 프로세스 그룹을 마우스 오른쪽 버튼으로 클릭하고 Start를 선택해요. 커넥터가 데이터 수집을 시작해요.
사용 사례 2: 커넥터 정의로 파일을 수집하고 Cortex로 처리하기
사전 정의된 플로우 정의를 사용해:
- 조직의 Google Drive 내 공개 문서용 AI 어시스턴트를 만들기
- AI 어시스턴트가 조직의 Google Drive에 지정된 액세스 제어를 준수하도록 하기
커넥터 설정하기
데이터 엔지니어로서 커넥터를 설치하고 구성하려면 다음 작업을 수행해요:
커넥터 설치하기
데이터 엔지니어로서 커넥터를 설치하려면:
- Openflow의 Connector library 탭으로 이동해요.
- Openflow 커넥터 페이지에서 커넥터를 찾고 Install을 선택해요.
- Select runtime 대화상자에서 Available runtimes 드롭다운 목록에서 런타임을 선택하고 Install을 클릭해요.
참고: 커넥터를 설치하기 전에, 수집된 데이터를 저장할 Snowflake에 데이터베이스와 스키마를 만들었는지 확인해요.
- Snowflake 계정 자격 증명으로 배포에 인증하고, 런타임 애플리케이션이 Snowflake 계정에 접근하는 것을 허용하라는 프롬프트가 나오면 Allow를 선택해요. 커넥터 설치 과정은 완료되는 데 몇 분이 걸려요.
- Snowflake 계정 자격 증명으로 런타임에 인증해요. Openflow 캔버스에 커넥터 프로세스 그룹이 추가된 상태로 나타나요.
커넥터 구성하기
- 가져온 프로세스 그룹을 마우스 오른쪽 버튼으로 클릭하고 Parameters를 선택해요.
- Google Drive Cortex Connect Source Parameters, Google Drive Cortex Connect Destination Parameters, Google Drive Cortex Connect Ingestion Parameters에 설명된 대로 필수 파라미터 값을 입력해요.
Google Drive Cortex Connect Source Parameters
| 파라미터 | 설명 |
|---|---|
| Google Delegation User | 서비스 계정이 사용하는 사용자 |
| GCP Service Account JSON | 커넥터가 Google API에 접근하도록 Google Cloud Console에서 다운로드한 서비스 계정 JSON |
Google Drive Cortex Connect Destination Parameters
| 파라미터 | 설명 |
|---|---|
| Destination Database | 데이터가 저장될 데이터베이스. Snowflake에 이미 존재해야 함 |
| Destination Schema | 데이터가 저장될 스키마. Snowflake에 이미 존재해야 함 |
| Snowflake Account Identifier | SNOWFLAKE_MANAGED 인증 전략을 사용할 때는 비워 둠. KEY_PAIR를 사용할 때는 [organization-name]-[account-name] 형식으로 데이터가 저장될 Snowflake 계정 이름 제공 |
| Snowflake Authentication Strategy | 다음 중 하나: Snowflake Openflow Deployment 또는 BYOC: SNOWFLAKE_MANAGED 사용(이 토큰은 Snowflake가 자동 관리함). BYOC 배포는 SNOWFLAKE_MANAGED를 사용하려면 이전에 execute-as roles을 구성해야 함. BYOC: 대안으로 BYOC는 인증 전략 값으로 KEY_PAIR를 사용할 수 있음 |
| Snowflake Private Key | SNOWFLAKE_MANAGED 인증 전략을 사용할 때는 비워 둠. KEY_PAIR를 사용할 때는 PKCS8 표준에 따라 형식화되고 표준 PEM 헤더·푸터를 가진 인증용 RSA 개인 키 제공. Snowflake Private Key File 또는 Snowflake Private Key 중 하나는 정의해야 함 |
| Snowflake Private Key File | SNOWFLAKE_MANAGED 인증 전략을 사용할 때는 비워 둠. KEY_PAIR를 사용할 때는 PKCS8 표준에 따라 형식화되고 표준 PEM 헤더·푸터를 가진 인증용 RSA 개인 키가 들어 있는 파일을 업로드. 헤더 줄은 -----BEGIN PRIVATE로 시작함. Reference asset 체크박스를 선택해 개인 키 파일을 업로드 |
| Snowflake Private Key Password | SNOWFLAKE_MANAGED 인증 전략을 사용할 때는 비워 둠. KEY_PAIR를 사용할 때는 Snowflake Private Key File과 연결된 비밀번호 제공 |
| Snowflake Role | SNOWFLAKE_MANAGED 인증 전략을 사용할 때는 런타임의 execute-as 역할(또는 그 역할에 부여된 하위 역할) 사용. execute-as 역할은 Openflow UI에서 런타임의 View Details로 이동해 찾을 수 있음. Key Pair 인증 전략을 사용할 때는 서비스 사용자에 대해 구성된 유효한 역할 사용 |
| Snowflake Username | SNOWFLAKE_MANAGED 인증 전략을 사용할 때는 비워 둠. KEY_PAIR를 사용할 때는 Snowflake 인스턴스에 연결하는 데 사용되는 사용자 이름 제공 |
| Snowflake Warehouse | 쿼리를 실행하는 데 사용되는 Snowflake 웨어하우스 |
Google Drive Cortex Connect Ingestion Parameters
| 파라미터 | 설명 |
|---|---|
| Google Drive ID | 콘텐츠와 업데이트를 감시할 Google Shared Drive |
| Google Folder Name | 선택적으로 Google Drive 폴더 식별자(읽기 쉬운 폴더 이름)를 설정해 들어오는 파일을 필터링할 수 있음. 모든 파일을 원하면 "Set Empty String"을 선택함. 설정되면 제공된 폴더 또는 하위 폴더에 있는 파일만 검색됨. 비어 있거나 설정되지 않으면 폴더 필터링이 적용되지 않고 드라이브 아래의 모든 파일이 검색됨 |
| Google Domain | Google Groups와 Drive가 있는 Google Workspace 도메인 |
| OCR Mode | AI_PARSE_DOCUMENT로 문서 파싱 함수로 파일을 파싱할 때 사용할 OCR 모드. 값은 OCR 또는 LAYOUT일 수 있음 |
| File Extensions To Ingest | 수집할 파일 확장자를 지정하는 쉼표로 구분된 목록. 커넥터는 가능하면 먼저 파일을 PDF 형식으로 변환하려고 시도함. 그럼에도 확장자 검사는 원래 파일 확장자에 대해 수행됨. 지정된 확장자 중 일부가 Cortex Parse Document에서 지원되지 않으면 커넥터는 그 파일들을 무시하고 이벤트 로그에 경고 메시지를 기록한 다음 다른 파일을 계속 처리함 |
| Snowflake File Hash Table Name | 콘텐츠가 변경되지 않았을 때 콘텐츠 업데이트를 방지하기 위해 파일 콘텐츠 해시를 저장하는 데 사용되는 내부 테이블 |
| Snowflake Cortex Search Service User Role | Cortex Search 서비스에 사용 권한이 할당된 역할의 식별자 |
- 평면을 마우스 오른쪽 버튼으로 클릭하고 Enable all Controller Services를 선택해요.
- 가져온 프로세스 그룹을 마우스 오른쪽 버튼으로 클릭하고 Start를 선택해요. 커넥터가 데이터 수집을 시작해요.
- Cortex Search 서비스를 쿼리해요.
사용 사례 3: 커넥터 정의 커스터마이즈하기
커넥터 정의를 커스터마이즈해 수집된 파일에 대한 커스텀 처리를 수행해요.
커넥터 설정하기
데이터 엔지니어로서 커넥터를 설치하고 구성하려면 다음 작업을 수행해요:
커넥터 설치하기
데이터 엔지니어로서 커넥터를 설치하려면:
- Openflow의 Connector library 탭으로 이동해요.
- Openflow 커넥터 페이지에서 커넥터를 찾고 Install을 선택해요.
- Select runtime 대화상자에서 Available runtimes 드롭다운 목록에서 런타임을 선택하고 Install을 클릭해요.
참고: 커넥터를 설치하기 전에, 수집된 데이터를 저장할 Snowflake에 데이터베이스와 스키마를 만들었는지 확인해요.
- Snowflake 계정 자격 증명으로 배포에 인증하고, 런타임 애플리케이션이 Snowflake 계정에 접근하는 것을 허용하라는 프롬프트가 나오면 Allow를 선택해요. 커넥터 설치 과정은 완료되는 데 몇 분이 걸려요.
- Snowflake 계정 자격 증명으로 런타임에 인증해요. Openflow 캔버스에 커넥터 프로세스 그룹이 추가된 상태로 나타나요.
커넥터 구성하기
- 커넥터 정의를 커스터마이즈해요.
다음 프로세스 그룹을 제거해요:
- Check If Duplicate Content
- Snowflake Stage and Parse PDF
- Update Snowflake Cortex
- Process Google Drive Metadata 프로세스 그룹의 출력에 임의의 커스텀 처리를 연결해요. 각 플로우 파일은 단일 Google Drive 파일 변경을 나타내요. 플로우 파일 속성은
Fetch Google Drive Metadata문서에서 볼 수 있어요.
- 프로세스 그룹 파라미터를 채워요. 사용 사례 1: 커넥터 정의로 파일만 수집하기와 같은 과정을 따라요. 커넥터 정의를 수정한 후에는 모든 파라미터가 필요하지 않을 수 있다는 점에 유의해요.
플로우 실행하기
- 플로우를 실행해요.
- 프로세스 그룹을 시작해요. 플로우가 Snowflake 안에 필요한 모든 객체를 만들 거예요.
- 가져온 프로세스 그룹을 마우스 오른쪽 버튼으로 클릭하고 Start를 선택해요.
- Cortex Search 서비스를 쿼리해요.
Cortex Search 서비스 쿼리하기
Cortex Search 서비스를 사용해 Google Drive의 문서와 채팅하거나 쿼리하는 채팅·검색 애플리케이션을 만들 수 있어요. 커넥터를 설치·구성하고 Google Drive에서 콘텐츠 수집을 시작하면 Cortex Search 서비스를 쿼리할 수 있어요.
Cortex Search 사용에 대한 자세한 내용은 Query a Cortex Search service를 참고해요.
응답 필터링
Cortex Search 서비스의 응답을 특정 사용자가 Google Drive에서 액세스할 수 있는 문서로 제한하려면, Cortex Search를 쿼리할 때 사용자의 사용자 ID 또는 이메일 주소를 포함한 필터를 지정할 수 있어요. 예를 들어 [email protected]_ids 또는 [email protected]_emails를 사용해요.
커넥터가 만든 Cortex Search 서비스의 이름은 Cortex 스키마의 search_service예요. SQL 워크시트에서 다음 SQL 코드를 실행해 Google Drive에서 수집한 파일로 Cortex Search 서비스를 쿼리해요. 다음을 교체해요:
*application_instance_name*: 데이터베이스와 커넥터 애플리케이션 인스턴스의 이름*user_emailID*: 응답을 필터링할 사용자의 이메일 ID*your_question*: 응답을 받을 질문*number_of_results*: 응답에서 반환할 최대 결과 수. 최대값은 1000, 기본값은 10
SELECT PARSE_JSON(
SNOWFLAKE.CORTEX.SEARCH_PREVIEW(
'<application_instance_name>.cortex.search_service',
'{
"query": "<your_question>",
"columns": ["chunk", "web_url"],
"filter": {"@contains": {"user_emails": "<user_emailID>"} },
"limit": <number_of_results>
}'
)
)['results'] AS results
columns에 입력할 수 있는 값의 전체 목록은 다음과 같아요:
| 컬럼 이름 | 타입 | 설명 |
|---|---|---|
full_name |
String | Google Drive 문서 루트에서 파일까지의 전체 경로. 예: folder_1/folder_2/file_name.pdf |
web_url |
String | 브라우저에서 원본 Google Drive 파일을 표시하는 URL |
last_modified_date_time |
String | 항목이 가장 최근에 수정된 날짜와 시간 |
chunk |
String | Cortex Search 쿼리와 일치한 문서의 텍스트 조각 |
user_ids |
Array | 문서에 액세스 권한이 있는 Google Drive 사용자 ID의 배열. 문서에 할당된 모든 Google Groups의 사용자 ID도 포함 |
user_emails |
Array | 문서에 액세스 권한이 있는 Google Drive 사용자 이메일 ID의 배열. 문서에 할당된 모든 Google Groups의 사용자 이메일 ID도 포함 |
예시: 인사(HR) 정보용 AI 어시스턴트 쿼리하기 Cortex Search를 사용해 직원이 최신 버전의 HR 정보(온보딩, 행동 강령, 팀 프로세스, 조직 정책 등)와 채팅할 수 있는 AI 어시스턴트를 쿼리할 수 있어요. 응답 필터를 사용하면 Google Drive에 구성된 액세스 제어를 지키면서 HR 팀원이 직원 계약서를 쿼리하도록 허용할 수 있어요.
Python
다음 코드를 Python 워크시트에서 실행해 Google Drive에서 수집한 파일로 Cortex Search 서비스를 쿼리해요. 데이터베이스에 snowflake.core 패키지를 추가했는지 확인해요. 다음을 교체해요: *application_instance_name*: 데이터베이스와 커넥터 애플리케이션 인스턴스의 이름, *user_emailID*: 응답을 필터링할 사용자의 이메일 ID.
import snowflake.snowpark as snowpark
from snowflake.snowpark import Session
from snowflake.core import Root
def main(session: snowpark.Session):
root = Root(session)
# fetch service
my_service = (root
.databases["<application_instance_name>"]
.schemas["cortex"]
.cortex_search_services["search_service"]
)
# query service
resp = my_service.search(
query="What is my vacation carry over policy?",
columns = ["chunk", "web_url"],
filter = {"@contains": {"user_emails": "<user_emailID>"} },
limit=1
)
return (resp.to_json())
REST API
다음 코드를 명령줄 인터페이스에서 실행해 Google Drive에서 수집한 파일로 Cortex Search 서비스를 쿼리해요. Snowflake REST API에 접근하려면 키 쌍 인증과 OAuth로 인증해야 해요. 자세한 내용은 REST API와 Authenticating Snowflake REST APIs with Snowflake를 참고해요. 다음을 교체해요: *application_instance_name*: 데이터베이스와 커넥터 애플리케이션 인스턴스의 이름, *account_url*: Snowflake 계정 URL(계정 URL 찾기 지침은 Finding the organization and account name for an account 참고).
curl --location "https://<account_url>/api/v2/databases/<application_instance_name>/schemas/cortex/cortex-search-services/search_service" \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header "Authorization: Bearer <CORTE...JWT>" \
--data '{
"query": "What is my vacation carry over policy?",
"columns": ["chunk", "web_url"],
"limit": 1
}'
스테이지에서 파일 찾기
스테이지에 저장된 파일은 읽을 수 없는 이름을 가질 수 있어요. 특정 파일을 찾으려면 메타데이터 테이블을 진실의 원천(source of truth)으로 사용해요. 이 테이블들은 파일 이름과 스테이지에서의 해당 파일 ID 사이의 매핑을 포함해요.
Cortex 지원 설정에서는 다음 쿼리를 사용해 파일을 찾아요:
SELECT DISTINCT METADATA:id FROM DOCS_CHUNKS WHERE METADATA:fullName LIKE '%<file_name>%';
비-Cortex 설정에서는 다음 쿼리를 사용해요:
SELECT FILE_ID FROM DOC_METADATA WHERE FILE_NAME = '<file_name>';
<file_name>을 찾고 있는 파일의 이름 또는 부분 이름으로 교체해요. 스테이지의 파일은 이 쿼리들에서 반환된 ID로 시작해요.