Google Drive용 Openflow 커넥터 설정

Google Drive용 Openflow 커넥터 설정

이 주제는 Openflow Connector for Google Drive를 설정하는 단계를 설명해요.

출처: Snowflake 문서

본문

참고: 이 커넥터는 Snowflake Connector Terms가 적용돼요.

이 주제는 Openflow Connector for Google Drive를 설정하는 단계를 설명해요.

전제 조건(Prerequisites)

  1. About Openflow Connector for Google Drive을 검토했는지 확인해요.
  2. Set up Openflow - Snowflake Deployments 또는 Set up Openflow - BYOC를 설정했는지 확인해요.
  3. 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을 사용하려면 이 키 생성 정책을 꺼야 해요.

  1. Organizational Policy Admin 역할이 있는 슈퍼 관리자 계정으로 Google Cloud Console에 로그인해요.
  2. 조직과 연결된 프로젝트에 있는지 확인해요(조직 안의 프로젝트가 아니라).
  3. Organization Policies를 클릭해요.
  4. Disable service account key creation 정책을 선택해요.
  5. Manage Policy를 클릭하고 강제 적용을 꺼요.
  6. Set Policy를 클릭해요.

서비스 계정과 키 만들기

  1. Google Cloud Console을 열고 서비스 계정을 만들 수 있는 액세스가 부여된 사용자로 인증해요.
  2. 조직의 프로젝트에 있는지 확인해요.
  3. 왼쪽 내비게이션의 IAM & Admin 아래에서 Service Accounts 탭을 선택해요.
  4. Create Service Account를 클릭해요.
  5. 서비스 계정 이름을 입력하고 Create and Continue를 클릭해요.
  6. Done을 클릭해요. 나열된 서비스 계정 표에서 OAuth 2 Client ID 컬럼을 찾아요. 다음 섹션에서 도메인 전체 위임을 설정하는 데 필요하므로 Client ID를 복사해요.
  7. 새로 만든 서비스 계정에서, 그 서비스 계정에 대해 나열된 서비스 계정 표 아래의 메뉴를 클릭하고 Manage keys를 선택해요.
  8. Add key를 선택한 다음 Create new key를 선택해요.
  9. 기본 선택인 JSON을 그대로 두고 Create를 클릭해요. 키가 브라우저의 Downloads 디렉터리에 .json 파일로 다운로드돼요.

나열된 스코프에 서비스 계정 도메인 전체 위임 부여하기

  1. Google Admin 계정에 로그인해요.
  2. Google Apps selector에서 Admin을 선택해요.
  3. 왼쪽 내비게이션에서 Security와 Access를 확장하고 Data control을 선택한 다음 API Controls를 클릭해요.
  4. API Controls 화면에서 Manage domain-wide delegation을 선택해요.
  5. Add new를 클릭해요.
  6. "서비스 계정과 키 만들기" 섹션에서 가져온 OAuth 2 Client ID와 다음 스코프를 입력해요:
  7. 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을 참고해요.

데이터베이스, 스키마, 웨어하우스 만들기

  1. 대상 데이터베이스를 만들어요:
    USE ROLE OPENFLOW_ADMIN;
    CREATE DATABASE IF NOT EXISTS <destination_database>;
    
  2. 대상 스키마를 만들어요:
    CREATE SCHEMA IF NOT EXISTS <destination_database>.<destination_schema>;
    
  3. 런타임의 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;
    
  4. 웨어하우스를 만들거나(기존 것을 사용하거나) 사용 권한을 부여해요:
    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;
    
  5. 커넥터가 수집한 원시 문서와 테이블에 액세스가 필요한 다른 Snowflake 사용자가 있다면(예: Snowflake에서 커스텀 처리), 그 사용자에게 execute-as 역할을 부여해요.

Cortex Search 권한 부여하기

Ingest files and perform processing with Cortex 사용 사례로 커넥터를 사용한다면 다음 작업도 수행해요:

  1. 이 커넥터가 만든 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>;
    
  2. 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 파일과 권한을 수집하고 최신 상태로 유지

커넥터 설정하기

데이터 엔지니어로서 커넥터를 설치하고 구성하려면 다음 작업을 수행해요:

커넥터 설치하기

데이터 엔지니어로서 커넥터를 설치하려면:

  1. Openflow의 Connector library 탭으로 이동해요.
  2. Openflow 커넥터 페이지에서 커넥터를 찾고 Install을 선택해요.
  3. Select runtime 대화상자에서 Available runtimes 드롭다운 목록에서 런타임을 선택하고 Install을 클릭해요.

참고: 커넥터를 설치하기 전에, 수집된 데이터를 저장할 Snowflake에 데이터베이스와 스키마를 만들었는지 확인해요.

  1. Snowflake 계정 자격 증명으로 배포에 인증하고, 런타임 애플리케이션이 Snowflake 계정에 접근하는 것을 허용하라는 프롬프트가 나오면 Allow를 선택해요. 커넥터 설치 과정은 완료되는 데 몇 분이 걸려요.
  2. Snowflake 계정 자격 증명으로 런타임에 인증해요. Openflow 캔버스에 커넥터 프로세스 그룹이 추가된 상태로 나타나요.
커넥터 구성하기
  1. 가져온 프로세스 그룹을 마우스 오른쪽 버튼으로 클릭하고 Parameters를 선택해요.
  2. 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 콘텐츠가 변경되지 않았을 때 콘텐츠 업데이트를 방지하기 위해 파일 콘텐츠 해시를 저장하는 데 사용되는 내부 테이블
  1. 평면(plane)을 마우스 오른쪽 버튼으로 클릭하고 Enable all Controller Services를 선택해요.
  2. 가져온 프로세스 그룹을 마우스 오른쪽 버튼으로 클릭하고 Start를 선택해요. 커넥터가 데이터 수집을 시작해요.

사용 사례 2: 커넥터 정의로 파일을 수집하고 Cortex로 처리하기

사전 정의된 플로우 정의를 사용해:

  • 조직의 Google Drive 내 공개 문서용 AI 어시스턴트를 만들기
  • AI 어시스턴트가 조직의 Google Drive에 지정된 액세스 제어를 준수하도록 하기

커넥터 설정하기

데이터 엔지니어로서 커넥터를 설치하고 구성하려면 다음 작업을 수행해요:

커넥터 설치하기

데이터 엔지니어로서 커넥터를 설치하려면:

  1. Openflow의 Connector library 탭으로 이동해요.
  2. Openflow 커넥터 페이지에서 커넥터를 찾고 Install을 선택해요.
  3. Select runtime 대화상자에서 Available runtimes 드롭다운 목록에서 런타임을 선택하고 Install을 클릭해요.

참고: 커넥터를 설치하기 전에, 수집된 데이터를 저장할 Snowflake에 데이터베이스와 스키마를 만들었는지 확인해요.

  1. Snowflake 계정 자격 증명으로 배포에 인증하고, 런타임 애플리케이션이 Snowflake 계정에 접근하는 것을 허용하라는 프롬프트가 나오면 Allow를 선택해요. 커넥터 설치 과정은 완료되는 데 몇 분이 걸려요.
  2. Snowflake 계정 자격 증명으로 런타임에 인증해요. Openflow 캔버스에 커넥터 프로세스 그룹이 추가된 상태로 나타나요.
커넥터 구성하기
  1. 가져온 프로세스 그룹을 마우스 오른쪽 버튼으로 클릭하고 Parameters를 선택해요.
  2. 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 서비스에 사용 권한이 할당된 역할의 식별자
  1. 평면을 마우스 오른쪽 버튼으로 클릭하고 Enable all Controller Services를 선택해요.
  2. 가져온 프로세스 그룹을 마우스 오른쪽 버튼으로 클릭하고 Start를 선택해요. 커넥터가 데이터 수집을 시작해요.
  3. Cortex Search 서비스를 쿼리해요.

사용 사례 3: 커넥터 정의 커스터마이즈하기

커넥터 정의를 커스터마이즈해 수집된 파일에 대한 커스텀 처리를 수행해요.

커넥터 설정하기

데이터 엔지니어로서 커넥터를 설치하고 구성하려면 다음 작업을 수행해요:

커넥터 설치하기

데이터 엔지니어로서 커넥터를 설치하려면:

  1. Openflow의 Connector library 탭으로 이동해요.
  2. Openflow 커넥터 페이지에서 커넥터를 찾고 Install을 선택해요.
  3. Select runtime 대화상자에서 Available runtimes 드롭다운 목록에서 런타임을 선택하고 Install을 클릭해요.

참고: 커넥터를 설치하기 전에, 수집된 데이터를 저장할 Snowflake에 데이터베이스와 스키마를 만들었는지 확인해요.

  1. Snowflake 계정 자격 증명으로 배포에 인증하고, 런타임 애플리케이션이 Snowflake 계정에 접근하는 것을 허용하라는 프롬프트가 나오면 Allow를 선택해요. 커넥터 설치 과정은 완료되는 데 몇 분이 걸려요.
  2. Snowflake 계정 자격 증명으로 런타임에 인증해요. Openflow 캔버스에 커넥터 프로세스 그룹이 추가된 상태로 나타나요.
커넥터 구성하기
  1. 커넥터 정의를 커스터마이즈해요. 다음 프로세스 그룹을 제거해요:
    • Check If Duplicate Content
    • Snowflake Stage and Parse PDF
    • Update Snowflake Cortex
    • Process Google Drive Metadata 프로세스 그룹의 출력에 임의의 커스텀 처리를 연결해요. 각 플로우 파일은 단일 Google Drive 파일 변경을 나타내요. 플로우 파일 속성은 Fetch Google Drive Metadata 문서에서 볼 수 있어요.
  2. 프로세스 그룹 파라미터를 채워요. 사용 사례 1: 커넥터 정의로 파일만 수집하기와 같은 과정을 따라요. 커넥터 정의를 수정한 후에는 모든 파라미터가 필요하지 않을 수 있다는 점에 유의해요.

플로우 실행하기

  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로 시작해요.

더 알아보기 (Learn more)