Snowflake

다음 단계에 따라 Looker를 Snowflake에 연결합니다.

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

Snowflake에서 Looker 사용자 만들기

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

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

-- 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는 선택된 행만 실행합니다.

연결 추가

Looker 인터페이스를 사용하여 데이터베이스 연결을 구성합니다. Looker의 관리 섹션에서 연결을 선택한 후 연결 추가를 클릭합니다. 자세한 내용은 데이터베이스에 Looker 연결 문서 페이지를 참조하세요.

필수 입력란에 연결 정보를 입력합니다.

  • 이름: 연결에 이름을 지정합니다. LookML 모델이 연결을 참조하는 방법입니다.
  • 방언: 눈송이를 선택합니다.
  • 호스트: Snowflake 호스트 이름을 입력합니다. 형식은 <account_name>.snowflakecomputing.com와 같습니다. 지역별 Snowflake 계정 이름 예시를 확인하여 배포에 올바른 값을 사용하고 있는지 확인합니다.
  • 포트: 기본값은 443입니다.
  • Database(데이터베이스): 사용할 기본 데이터베이스를 입력합니다. 이 필드는 대소문자를 구분합니다.
  • 사용자 이름 및 비밀번호: Looker에 연결할 사용자의 사용자 이름과 비밀번호를 입력합니다.
  • 스키마: 기본 스키마를 입력합니다.
  • 영구 파생 테이블: 영구 파생 테이블 (PDT)을 사용 설정하려면 이 체크박스를 선택합니다. 그러면 추가 PDT 필드와 PDT 재정의 열이 표시됩니다.
  • 임시 데이터베이스: PDT가 사용 설정된 경우 이 필드를 사용자에게 테이블을 생성, 삭제, 이름 변경, 변경할 수 있는 전체 권한이 있는 스키마로 설정합니다.
  • 최대 연결 수: 연결 풀 크기(선택사항)입니다. 기본값을 사용하거나 Looker를 데이터베이스에 연결 문서 페이지의 최대 연결 수 섹션에서 이 설정에 대해 자세히 알아볼 수 있습니다.
  • 예상 비용: 연결 시 탐색 쿼리 예상 비용, SQL 러너 쿼리 예상 비용, 집계 인지도 쿼리의 예상 비용 절감을 사용 설정합니다.
  • 데이터베이스 시간대: Snowflake 데이터베이스가 날짜 및 시간을 저장하는 데 사용하는 시간대입니다. 기본값은 UTC입니다. 이는 선택사항입니다.
  • 쿼리 시간대: 검색어를 표시할 시간대입니다. 예: 미국 동부 (미주 – 뉴욕) 이는 선택사항입니다.
  • 추가 매개변수: 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

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

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

연결 추가를 클릭하여 연결을 저장합니다.

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

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

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

  1. Looker에서 그룹 또는 사용자를 추가합니다.
  2. Snowflake 웨어하우스 이름을 저장할 사용자 속성을 정의합니다.

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

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

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

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

  1. 개별 연결 설정을 테스트하려면 창고 이름 값을 할당한 사용자로 sudo를 실행하면 됩니다.

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

Snowflake의 자동 정지 기능

눈송이 창고에는 기본적으로 사용 설정된 자동 정지 기능이 있습니다. 지정된 기간이 지나면 창고가 자동으로 정지됩니다. 웨어하우스가 정지된 경우 모든 쿼리에서 오류가 발생합니다. 이 오류는 대시보드를 통해 표시되지 않으며 (일반적으로 데이터가 표시되지 않음), 탐색 페이지로 쿼리할 때 표시됩니다.

Snowflake는 쿼리 시 웨어하우스를 재개하는 자동 재개 기능도 있습니다. 그러나 웨어하우스를 다시 시작하려면 최대 5분이 걸릴 수 있으며 쿼리가 반환되기 전에 5분 동안 중단됩니다. 이러한 기능은 웨어하우스 탭에서 구성할 수 있습니다.

PDT 지원

영구 파생 테이블을 지원하려면 데이터베이스 및 기본 스키마에 대한 쓰기 액세스 권한이 있는 PDT용 Snowflake 사용자 계정을 만듭니다. Looker 연결 설정 페이지에서 영구 파생 테이블 체크박스를 선택합니다. 그런 다음 PDT 재정의 열에 PDT 사용자의 사용자 이름과 비밀번호를 입력합니다. 자세한 내용은 데이터베이스에 Looker 연결 문서 페이지를 참조하세요.

PDT는 OAuth를 사용하는 눈송이 연결에서 지원되지 않습니다.

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

Snowflake 연결을 위한 OAuth 구성

Looker는 Snowflake 연결을 위한 OAuth를 지원합니다. 즉, 각 Looker 사용자가 Snowflake에 인증하고 자체 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는 캐싱 기간 내에 동일한 쿼리가 실행될 때마다 캐시된 결과를 사용하는 대신 동일한 사용자가 동일한 쿼리를 실행한 경우에만 캐시된 결과를 사용합니다. 캐싱에 대한 자세한 내용은 데이터 그룹을 사용하여 쿼리 캐싱 및 PDT 다시 빌드 문서 페이지를 참조하세요.
  • OAuth를 사용하는 경우 Snowflake 사용자 계정에서 다른 역할로 전환할 수 없습니다. Snowflake 문서에 설명된 대로 Snowflake는 Snowflake 사용자 계정의 기본 역할을 사용합니다. 기본 역할이 ACCOUNTADMIN 또는 SECURITYADMIN인 경우에는 예외입니다. OAuth에서 이러한 역할이 차단되므로 Snowflake는 PUBLIC 역할을 대신 사용합니다. 자세한 내용은 눈송이 문서를 참조하세요.
  • OAuth를 사용한 Snowflake 연결에는 영구 파생 테이블 (PDT)이 지원되지 않습니다.
  • 관리자는 다른 사용자로 sudo를 수행할 때 해당 사용자의 OAuth 액세스 토큰을 사용합니다. 사용자의 액세스 토큰이 만료되면 관리자가 sudoed 사용자를 대신하여 새 토큰을 만들 수 없게 됩니다. 사용자는 Snowflake에 로그인하여 Looker를 재승인해야 합니다. sudo 명령어 사용에 대한 자세한 내용은 사용자 문서 페이지를 참조하세요.

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

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

  1. Snowflake에서 다음 명령어를 실행합니다.
  CREATE SECURITY INTEGRATION LOOKER
    TYPE = OAUTH
    ENABLED = TRUE
    OAUTH_CLIENT = LOOKER
    OAUTH_REDIRECT_URI = 'https://<looker_hostname>/external_oauth/redirect';

여기서 <looker_hostname>는 Looker 인스턴스의 호스트 이름입니다.

  1. 다음 명령어를 실행하여 OAuth 클라이언트 ID와 보안 비밀을 가져옵니다.
  SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('LOOKER');

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

  1. Looker를 데이터베이스에 연결 문서 페이지에 설명된 대로 Looker에서 새로운 Snowflake 웨어하우스 연결을 만듭니다. 새 연결을 만들 때 OAuth 사용 체크박스를 선택합니다. OAuth 사용을 선택하면 OAuth 클라이언트 IDOAuth 클라이언트 보안 비밀번호 입력란이 표시됩니다.

  2. 2단계의 OAUTH_CLIENT_IDOAUTH_CLIENT_SECRET 값을 붙여넣습니다.

  3. 데이터베이스에 Looker 연결 나머지 절차를 완료합니다.

Looker의 데이터베이스 연결을 구성한 후에는 다음 중 하나를 수행하여 연결 자체를 테스트할 수 있습니다.

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

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

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

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

Snowflake에 로그인하여 쿼리 실행

OAuth를 위해 Snowflake 연결이 설정되면 사용자에게 쿼리를 실행하기 전에 Snowflake에 로그인하라는 메시지가 표시됩니다. 여기에는 탐색, 대시보드, Looks, SQL Runner의 쿼리가 포함됩니다. 다음은 사용자가 로그인해야 하는 눈송이 연결을 사용하는 탐색의 예입니다.

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

Looker를 통해 Snowflake 계정에 로그인하려면 다음 단계를 따르세요.

  1. 사용자 메뉴에서 계정을 선택합니다.
  2. OAuth 연결 사용자 인증 정보 섹션까지 아래로 스크롤한 다음 원하는 Snowflake 데이터베이스의 Log In(로그인) 버튼을 클릭합니다.
  3. Snowflake 인터페이스를 통해 Snowflake 사용자 인증 정보를 입력하고 Log In(로그인)을 클릭합니다.
  4. 허용을 클릭하여 Looker에 Snowflake 계정에 대한 액세스 권한을 부여합니다.

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

기능 지원

Looker에서 일부 기능을 지원하려면 데이터베이스 언어도 이 기능을 지원해야 합니다.

Looker 최신 출시 버전에서 Snowflake는 다음과 같은 Looker 기능을 지원합니다.

다음 단계

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