Snowflake

Looker를 Snowflake에 연결하려면 다음 단계를 따르세요.

  1. Snowflake에서 Looker 사용자를 만들고 액세스 권한을 프로비저닝합니다.
  2. Looker에서 데이터베이스 연결을 설정합니다.

네트워크 트래픽 암호화

Looker 애플리케이션과 데이터베이스 사이에 네트워크 트래픽을 암호화하는 것이 가장 좋습니다. 안전한 데이터베이스 액세스 사용 설정 문서 페이지에 설명된 옵션 중 하나를 고려해 보세요.

Snowflake에서 Looker 사용자 만들기

Looker 사용자를 만들려면 다음 명령어를 사용하는 것이 좋습니다. 각 줄을 개별적으로 실행해야 합니다.

필요한 경우 ON FUTURE 키워드를 추가하여 새로 만든 객체에서 GRANT 문을 유지합니다. 새 테이블이 생성될 때 GRANT 문을 다시 실행할 필요가 없도록 Looker에서 사용할 모든 스키마의 테이블에 이 명령어를 실행하는 것이 좋습니다.

-- change role to ACCOUNTADMIN
use role ACCOUNTADMIN;

-- create role for looker
create role if not exists looker_role;
grant role looker_role to role SYSADMIN;
    -- Note that we are not making the looker_role a SYSADMIN,
    -- but rather granting users with the SYSADMIN role to modify the looker_role

-- create a user for looker
create user if not exists looker_user
password = '<enter password here>';
grant role looker_role to user looker_user;
alter user looker_user
set default_role = looker_role
default_warehouse = 'looker_wh';

-- change role
use role SYSADMIN;

-- create a warehouse for looker (optional)
create warehouse if not exists looker_wh

-- set the size based on your dataset
warehouse_size = medium
warehouse_type = standard
auto_suspend = 1800
auto_resume = true
initially_suspended = true;
grant all privileges
on warehouse looker_wh
to role looker_role;

-- grant read only database access (repeat for all database/schemas)
grant usage on database <database> to role looker_role;
grant usage on schema <database>.<schema> to role looker_role;

-- rerun the following any time a table is added to the schema
grant select on all tables in schema <database>.<schema> to role looker_role;
-- or
grant select on future tables in schema <database>.<schema> to role looker_role;

-- create schema for looker to write back to
use database <database>;
create schema if not exists looker_scratch;
use role ACCOUNTADMIN;
grant ownership on schema looker_scratch to role SYSADMIN revoke current grants;
grant all on schema looker_scratch to role looker_role;

이전 명령어를 Snowflake 연결 패널에 배치로 붙여넣는 경우 모든 쿼리 체크박스를 선택하여 모든 줄이 실행되도록 합니다. 기본적으로 Snowflake는 선택한 줄만 실행합니다.

데이터베이스에 대한 Looker 연결 만들기

Looker의 관리 섹션에서 연결을 선택한 후 연결 추가를 클릭합니다.

연결 세부정보를 작성합니다. 대다수의 설정은 대부분의 데이터베이스 언어에 공통적으로 적용됩니다. 자세한 내용은 데이터베이스에 Looker 연결 문서 페이지를 참조하세요. 다음은 일부 설정에 대한 설명입니다.

  • 이름: 연결에 이름을 지정합니다. 이는 LookML 모델이 연결을 참조하는 방법입니다.
  • 언어: Snowflake를 선택합니다.
  • 호스트: Snowflake 호스트 이름을 입력합니다. <account_name>.snowflakecomputing.com와 같이 표시됩니다. 리전별 Snowflake 계정 이름 예시를 확인하여 배포에 올바른 값을 사용하는지 확인합니다.
  • 포트: 기본값은 443입니다.
  • 데이터베이스: 사용할 기본 데이터베이스를 입력합니다. 이 필드는 대소문자를 구분합니다.
  • 스키마: 기본 스키마를 입력합니다.
  • 인증: 데이터베이스 계정 또는 OAuth를 선택합니다.
    • 데이터베이스 계정을 사용하여 Looker에 연결하는 데 사용할 Snowflake 사용자 계정의 사용자 이름비밀번호를 지정합니다.
    • 연결에 OAuth를 구성하려면 OAuth를 사용합니다.
  • PDT 사용 설정: 이 전환 버튼으로 영구 파생 테이블(PDT)을 사용 설정합니다. PDT를 사용 설정하면 추가 PDT 필드와 연결에 대한 PDT 재정의 섹션이 표시됩니다.
  • 임시 데이터베이스: PDT가 사용 설정된 경우 사용자가 테이블을 생성, 삭제, 이름 변경, 변경할 수 있는 전체 권한이 있는 스키마로 이 필드를 설정합니다.
  • 노드당 최대 연결 수: 이 설정은 처음에 기본값으로 두어도 됩니다. 이 설정에 대한 자세한 내용은 Looker를 데이터베이스에 연결 문서 페이지의 최대 연결 수 섹션을 참조하세요.
  • 예상 비용: 연결에서 Explore 쿼리 비용 예상, SQL Runner 쿼리 비용 예상, 집계 인식 쿼리의 절감액 예상을 사용 설정합니다.
  • 데이터베이스 시간대: Snowflake 데이터베이스에서 날짜 및 시간을 저장하는 데 사용하는 시간대입니다. 기본값은 UTC입니다. 이는 선택사항입니다.
  • 쿼리 시간대: 쿼리를 표시할 시간대입니다. 예를 들어 미국 동부(미주 - 뉴욕)이며 이는 선택사항입니다.
  • 추가 JDBC 매개변수: Snowflake JDBC 드라이버에서 JDBC 매개변수를 추가합니다.

    • warehouse=<YOUR WAREHOUSE NAME>를 추가합니다.
    • 또한 기본적으로 Looker는 세션마다 다음과 같은 Snowflake 매개변수를 설정합니다.

      • TIMESTAMP_TYPE_MAPPING=TIMESTAMP_LTZ
      • JDBC_TREAT_DECIMAL_AS_INT=FALSE
      • TIMESTAMP_INPUT_FORMAT=AUTO
      • AUTOCOMMIT=TRUE

      추가 JDBC 매개변수 필드에 대체 값(예: &AUTOCOMMIT=FALSE)을 설정하여 이러한 각 매개변수를 재정의할 수 있습니다.

제대로 연결되었는지 확인하려면 테스트를 클릭합니다. 문제 해결 정보는 데이터베이스 연결 테스트 문서 페이지를 참조하세요.

이 설정을 저장하려면 연결을 클릭합니다.

그룹별 또는 사용자별로 Snowflake 웨어하우스 지정

Looker 사용자 속성을 사용하여 개별 Looker 사용자 또는 그룹에 별도의 Snowflake 웨어하우스를 할당할 수 있습니다. 예를 들어 다양한 수준의 컴퓨팅 성능이 필요한 사용자가 있는 경우에 유용합니다. 컴퓨팅 리소스가 더 많은 웨어하우스를 필요로 하는 사용자에게만 할당하고, 리소스가 적은 웨어하우스는 요구사항이 적은 사용자에게 할당할 수 있습니다.

그룹 또는 사용자별로 웨어하우스를 지정하려면 다음 안내를 따르세요.

  1. Looker에서 그룹 또는 사용자를 추가합니다.
  2. Looker에서 Snowflake 웨어하우스 이름이 저장될 사용자 속성을 정의합니다. 이 속성에 snowflake_wh와 같은 이름을 지정할 수 있습니다.

  3. 방금 정의한 사용자 속성에서 웨어하우스 이름 값을그룹 또는사용자에 할당합니다.

  4. 연결 설정 페이지의 추가 JDBC 매개변수 필드에 다음을 추가합니다. 여기서 snowflake_warehouse는 정의한 사용자 속성 이름으로 바꿉니다.

      warehouse={{ _user_attributes['snowflake_warehouse'] }}
    

    예를 들면 다음과 같습니다.

  5. 개별 연결 설정을 테스트하려면 웨어하우스 이름 값을 할당한 사용자로 sudo를 수행하면 됩니다.

이 절차에 대한 자세한 안내는 Red Pill Analytics 블로그를 참조하세요.

Snowflake의 자동 정지 기능

Snowflake 웨어하우스에는 기본적으로 사용 설정되는 자동 정지 기능이 있습니다. 지정된 기간이 지나면 웨어하우스가 자동 정지됩니다. 웨어하우스가 정지되면 모든 쿼리에서 오류가 발생합니다. 이 오류는 대시보드에 표시되지 않지만(보통은 데이터가 표시되지 않음) Explore 페이지로 쿼리할 때 표시됩니다.

Snowflake에는 쿼리 시 웨어하우스를 재개하는 자동 재개 기능도 있습니다. 하지만 웨어하우스를 재개하려면 최대 5분이 걸릴 수 있으므로 쿼리가 5분간 대기하다가 돌아옵니다. 이러한 기능은 Looker에서 구성할 수 없습니다. Snowflake UI의 웨어하우스 탭에서 이 기능을 사용 설정합니다.

PDT 지원

영구 파생 테이블 지원의 경우 데이터베이스와 Looker에서 PDT를 만드는 데 사용하는 임시 스키마에 대한 쓰기 액세스 권한이 있는 PDT용 Snowflake 사용자 계정을 만듭니다. Looker 연결 설정 페이지의 영구 파생 테이블(PDT) 섹션에서 PDT 사용 설정 전환 버튼을 켭니다. 그런 다음 임시 데이터베이스 필드에 Looker가 PDT를 만드는 데 사용할 임시 스키마의 이름을 입력합니다. 그런 후 PDT 재정의 섹션에서 PDT 사용자의 사용자 이름과 비밀번호를 입력합니다. 자세한 내용은 데이터베이스에 Looker 연결 문서 페이지를 참조하세요.

OAuth를 사용하는 Snowflake 연결에는 PDT가 지원되지 않습니다.

Snowflake 연결의 경우 Looker는 AUTOCOMMIT 매개변수의 값을 TRUE(Snowflake의 기본값)로 설정합니다. Looker가 PDT 등록 시스템을 유지하기 위해 실행하는 SQL 명령어에는 AUTOCOMMIT가 필요합니다.

Snowflake 연결을 위한 OAuth 구성

Looker는 Snowflake 연결에 OAuth를 지원합니다. 즉, 각 Looker 사용자가 Snowflake에 인증하고 Looker에서 자체 Snowflake 사용자 계정으로 데이터베이스에서 쿼리를 실행하도록 승인합니다.

OAuth를 사용하면 데이터베이스 관리자가 다음을 수행할 수 있습니다.

  • 데이터베이스에 대해 쿼리를 실행하는 Looker 사용자 감사
  • Snowflake 권한을 사용하여 역할 기반 액세스 제어 시행
  • 여러 위치에 Snowflake ID와 비밀번호를 삽입하는 대신 Snowflake에 액세스하는 모든 프로세스와 작업에 OAuth 토큰 사용
  • Snowflake를 통해 특정 사용자의 승인 취소

OAuth를 사용하는 Snowflake 연결의 경우 OAuth 토큰이 만료되면 사용자가 주기적으로 다시 로그인해야 합니다. Snowflake OAuth 토큰의 유효 기간은 Snowflake 자체를 통해 설정됩니다.

OAuth를 사용하는 Snowflake의 경우 다음에 유의하세요.

  • 사용자가 Snowflake 토큰이 만료되도록 허용하면 소유한 일정 또는 알림이 모두 영향을 받습니다. 이를 방지하기 위해 Looker는 현재 활성 Snowflake OAuth 토큰이 만료되기 전에 각 일정의 소유자와 각 알림에 알림 이메일을 전송합니다. Looker에서는 토큰이 만료되기 14일, 7일, 1일 전에 알림 이메일을 전송합니다. 사용자는 Looker 사용자 페이지로 이동하여 데이터베이스에 Looker를 다시 승인하고 일정 및 알림이 중단되지 않도록 할 수 있습니다. 자세한 내용은 사용자 계정 설정 맞춤설정하기 문서 페이지를 참조하세요.
  • OAuth를 사용하는 Snowflake 연결은 '사용자별'이므로 캐싱 정책은 쿼리뿐만 아니라 사용자별로 적용됩니다. 즉, Looker는 캐싱 기간 내에 동일한 쿼리가 실행될 때마다 캐시된 결과를 사용하는 대신 동일한 사용자가 캐싱 기간 내에 동일한 쿼리를 실행한 경우에만 캐시된 결과를 사용합니다. 캐싱에 대한 자세한 내용은 쿼리 캐싱 문서 페이지를 참조하세요.
  • OAuth를 사용하는 경우 Snowflake 사용자 계정에서 다른 역할로 전환할 수 없습니다. Snowflake 문서에 설명된 대로 Snowflake는 기본 역할이 ACCOUNTADMIN 또는 SECURITYADMIN이 아닌 한 Snowflake 사용자 계정의 기본 역할을 사용합니다. 이러한 역할은 OAuth에서 차단되므로 Snowflake는 대신 PUBLIC 역할을 사용합니다. 자세한 내용은 Snowflake 문서를 참조하세요.
  • OAuth를 사용하는 Snowflake 연결에는 영구 파생 테이블 (PDT)이 지원되지 않습니다.
  • 관리자는 다른 사용자로 sudo를 실행할 때 해당 사용자의 OAuth 액세스 토큰을 사용합니다. 사용자의 액세스 토큰이 만료되면 관리자가 sudo 사용자를 대신하여 새 토큰을 만들 수 없게 됩니다. 사용자는 Snowflake에 로그인하여 Looker를 재승인해야 합니다. sudo 명령어 사용에 대한 자세한 내용은 사용자 문서 페이지를 참조하세요.

Looker로 OAuth용 Snowflake 데이터베이스 구성

OAuth를 사용하여 Looker에 대한 Snowflake 연결을 만들려면 Snowflake에서 OAuth 통합을 설정해야 합니다. 그러려면 ACCOUNTADMIN 권한이 있는 Snowflake 사용자 계정이 필요합니다.

  1. Snowflake에서 다음 명령어를 실행합니다. 여기서 <looker_hostname>은 Looker 인스턴스의 호스트 이름입니다.

      CREATE SECURITY INTEGRATION LOOKER
        TYPE = OAUTH
        ENABLED = TRUE
        OAUTH_CLIENT = LOOKER
        OAUTH_REDIRECT_URI = 'https://<looker_hostname>/external_oauth/redirect';
    
  2. 다음 명령어를 실행하여 OAuth 클라이언트 ID와 보안 비밀을 가져옵니다.

      SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('LOOKER');
    

    응답에는 OAUTH_CLIENT_IDOAUTH_CLIENT_SECRET가 포함되며 이 절차의 후반부에 필요합니다.

  3. Looker에서 데이터베이스에 Looker 연결 문서 페이지에 설명된 대로 Snowflake 웨어하우스에 대한 새 연결을 만듭니다. 새 연결을 만들 때 인증 입력란에서 OAuth 옵션을 선택합니다. OAuth 옵션을 선택하면 Looker에 OAuth 클라이언트 IDOAuth 클라이언트 보안 비밀번호 필드가 표시됩니다.

  4. 이 절차의 앞부분에 있는 데이터베이스에서 가져온 OAUTH_CLIENT_IDOAUTH_CLIENT_SECRET 값을 붙여넣습니다.

  5. Looker를 데이터베이스에 연결 절차의 나머지 부분을 완료합니다.

Looker의 데이터베이스 연결을 구성한 후 다음 중 한 가지 방법으로 연결 자체를 테스트할 수 있습니다.

  • 데이터베이스에 Looker 연결 문서 페이지에 설명된 대로 연결 설정 페이지 하단에서 테스트 버튼을 선택합니다.
  • 연결 문서 페이지에 설명된 대로 연결 관리 페이지의 연결 목록 옆에 있는 테스트 버튼을 선택합니다.

이 외에도 다음을 수행하여 연결을 테스트하고 모델에 배포할 수 있습니다.

  1. Looker에서 개발 모드로 이동합니다.
  2. Snowflake 연결을 사용하는 Looker 프로젝트의 프로젝트 파일로 이동합니다.
  3. 모델 파일을 열고 모델의 connection 값을 새 Snowflake 연결 이름으로 바꾼 다음 모델 파일을 저장합니다.
  4. 모델의 Explore 또는 대시보드 중 하나를 열고 쿼리를 실행합니다. 쿼리를 실행하려고 하면 Looker에 Snowflake에 로그인하라는 메시지가 표시됩니다.
  5. Snowflake의 로그인 메시지에 따라 Snowflake 사용자 인증 정보를 입력합니다.

Snowflake에 로그인하면 Looker에서 쿼리로 돌아갑니다. 쿼리가 올바르게 실행되면 새 연결 값을 커밋하고 변경사항을 프로덕션에 배포할 수 있습니다.

Snowflake에 로그인하여 쿼리 실행

Snowflake 연결이 OAuth에 설정되면 사용자에게 쿼리를 실행하기 전에 Snowflake에 로그인하라는 메시지가 표시됩니다. 여기에는 Explore, 대시보드, Looker, SQL Runner의 쿼리가 포함됩니다.

계정 페이지의 OAuth 연결 사용자 인증 정보 섹션에서 Snowflake에 로그인할 수도 있습니다.

Looker를 사용하여 Snowflake 계정에 로그인하려면 다음 안내를 따르세요.

  1. Looker 사용자 메뉴를 클릭합니다.
  2. 계정을 선택합니다.
  3. 계정 페이지에서 OAuth 연결 사용자 인증 정보 섹션까지 아래로 스크롤하여 원하는 Snowflake 데이터베이스의 로그인 버튼을 선택합니다.

Snowflake 로그인 팝업 창이 표시됩니다. Snowflake 사용자 인증 정보를 입력하고 로그인을 선택한 다음 허용을 선택하여 Looker에 Snowflake 계정에 대한 액세스 권한을 부여합니다.

Looker를 통해 Snowflake에 로그인하면 사용자 계정 맞춤설정 문서 페이지에 설명된 대로 계정 페이지를 통해 언제든지 사용자 인증 정보를 로그아웃하거나 재승인할 수 있습니다.

기능 지원

Looker가 특정 기능을 지원하려면 데이터베이스 언어도 해당 기능을 지원해야 합니다.

Snowflake는 Looker 24.8부터 다음 기능을 지원합니다.

특성 지원 여부
지원 수준
지원됨
Looker(Google Cloud 핵심 서비스)
대칭 집계
파생 테이블
영구 SQL 파생 테이블
영구 기본 파생 테이블
안정적인 뷰
쿼리 종료
SQL 기반 피벗
시간대
SSL
소계
JDBC 추가 파라미터
대소문자 구분
위치 유형
목록 유형
백분위수
고유 백분위수
아니요
SQL Runner 표시 프로세스
아니요
SQL Runner 설명 테이블
SQL Runner 표시 색인
아니요
SQL Runner 선택 10
SQL Runner 카운트
SQL 설명
OAuth 사용자 인증 정보
컨텍스트 주석
연결 풀링
HLL 스케치
집계 인식
증분 PDT
밀리초
마이크로초
구체화된 뷰
아니요
대략적인 고유값
아니요

다음 단계

데이터베이스를 Looker에 연결한 후 사용자의 로그인 옵션을 구성합니다.