템플릿 스펙(Template specification)
템플릿 스펙(Template specification)
콜라보레이션의 단일 템플릿을 정의해요. 템플릿은 템플릿 스펙과 함께 REGISTER_TEMPLATE를 호출해 등록해요.
본문
기능 — 일반 공개(Generally Available)
현재 지원 리전: 이 리전들에서 사용할 수 있어요.
정부 및 VPS 배포에서는 사용할 수 없어요.
콜라보레이션의 단일 템플릿을 정의해요. 템플릿은 템플릿 스펙과 함께 REGISTER_TEMPLATE를 호출해 등록돼요.
스키마:
api_version: 2.0.0 # Required: Must be "2.0.0"
spec_type: template # Required: Must be "template"
name: <template_name> # Required: Unique name (max 75 chars)
version: <version_string> # Required: Version identifier (max 20 chars)
type: <template_type> # Required: sql_analysis or sql_activation
description: <template_description> # Optional: High-level description (max 1,000 chars)
methodology: <methodology_description> # Optional: Detailed description (max 1,000 chars)
parameters: # Optional: User-provided parameters
- name: <parameter_name> # One or more parameter items...
description: <parameter_description> # Optional: Description (max 500 chars)
required: <true_or_false> # Optional: Whether required (default: false)
default: <default_value> # Optional: Default value
type: <data_type> # Optional: String, integer, number, Boolean, array, or object
code_specs: # Optional: List of code specs used by this template
- <code_spec_id> # One or more code spec IDs.
preset_tables: # Optional: Datasets preset by the template author
- alias: <dataset_alias> # One or more preset tables...
template_view_name: <collaborator_alias>.<data_offering_ID>.<dataset_alias>
template: | # Required: JinjaSQL template content
<template_content>
api_version— 사용된 Collaboration API 버전이에요.2.0.0이어야 해요.spec_type— 스펙 유형 식별자예요.template이어야 해요.name: template_name— 이 템플릿의 고유하고 사용자 친화적인 이름이에요. Snowflake 식별자 규칙을 따르고 최대 75자예요.name/version쌍은 이 계정의 모든 템플릿에서 고유해야 해요.version: version_string— 이 템플릿의 버전 식별자예요(최대 20자). Snowflake 식별자 규칙을 따라야 해요. 버전 문자열은 VIEW_TEMPLATES와 VIEW_REGISTERED_TEMPLATES 응답에 고유한 컬럼으로 주어지므로, 증가하는 값으로 정렬할 수 있는 값을 사용하세요. 예:V0.type— 템플릿 유형이에요. 다음 값 중 하나예요:sql_analysis: 데이터 분석 작업용 템플릿이에요.sql_activation: 데이터 활성화 작업용 템플릿이에요.
description: template_description(선택) — 이 템플릿이 무엇을 하는지에 대한 높은 수준의 설명이에요(최대 1,000자).methodology: methodology_description(선택) — 이 템플릿이 어떻게 작동하는지에 대한 더 자세한 설명이에요(최대 1,000자).parameters(선택) — 이 템플릿의 모든 사용자 제공 파라미터 목록이에요. 각 항목은 다음 필드를 가질 수 있어요:name: 유효한 Snowflake 식별자로서의 파라미터 이름, 최대 255자.description(선택): 파라미터의 사람이 읽을 수 있는 설명(최대 500자).required(선택): 파라미터 필수 여부. 기본값은false.default(선택): 파라미터의 기본값. 어떤 데이터 유형이든 될 수 있어요.type(선택): 파라미터의 예상 데이터 유형.string,integer,number,boolean,array,object중 하나.
code_specs(선택) — 이 템플릿이 참조하는 함수를 정의하는 하나 이상의 코드 스펙이에요. 템플릿이 커스텀 함수를 호출할 때 필요해요. 코드 스펙 ID는 버전 관리되며, 함수의 새 버전에 접근하려면 여기서 코드 스펙 ID를 업데이트해야 해요. 템플릿 자체(비버전 함수 이름을 호출하는 곳)는 업데이트할 필요가 없어요. 코드 스펙 이름에는 밑줄이 있어야 하고 정규식 패턴[A-Za-z]\w{0,74}_\w{1,20}과 일치해야 해요.preset_tables(선택) — 미리보기 기능 — 공개: 모든 계정에서 사용할 수 있어요. 템플릿 작성자가 프리셋한 데이터셋이에요. 분석 실행자는 템플릿을 실행할 때 이 데이터셋을 전달하지 않아요. 분석 실행자가 공급하기로 선택한 데이터셋이 아니라 템플릿이 항상 특정 데이터셋을 읽어야 할 때preset_tables를 사용하세요. 자세한 내용은 프리셋 테이블을 참고하세요. 각 항목은 다음 필드를 가져요:alias: 템플릿 본문에서{{ preset_tables['alias'] }}로 이 데이터셋을 참조하는 데 사용되는 이름이에요. 최대 255자의 유효한 Snowflake 식별자여야 하고 템플릿 안에서 고유해야 해요. 그런 다음 템플릿 본문에서 이 데이터셋에 부여하는 SQL 별칭은p,c, 또는 숫자가 뒤따르는p나c가 될 수 없어요. 그 별칭들은source_table과my_table데이터셋용으로 예약되어 있거든요.template_view_name: 프리셋 테이블로, 형식은collaborator_alias.data_offering_ID.dataset_alias예요. VIEW_DATA_OFFERINGS가 반환한 TEMPLATE_VIEW_NAME 컬럼의 값을 사용하세요.
template— 템플릿 콘텐츠예요. SQL 템플릿의 경우 JinjaSQL 템플릿을 포함해요. 자세한 내용은 템플릿 설계를 참고하세요.
템플릿에 노출되는 컬럼 이름은 데이터 오퍼링 스펙에서 해당 컬럼의 category와 column_type 값에 의해 결정돼요. 자세한 내용은 소스 컬럼 이름 바꾸기를 참고하세요.
예시
분석 실행자에게서 테이블 하나를 받는 템플릿:
api_version: 2.0.0
spec_type: template
name: trivial_template
version: V1
type: sql_analysis
description: Simple one-row template.
methodology: Always returns "1". Requires one source table.
parameters:
- name: row_count
description: Count of rows
required: true
template: |
SELECT 1 FROM IDENTIFIER( {{ source_table[0] }} ) LIMIT {{ row_count }};
게시자 데이터셋을 고정(pin)하고 광고주 데이터셋은 분석 실행자에게서 받는 템플릿:
api_version: 2.0.0
spec_type: template
name: preset_overlap_template
version: V1
type: sql_analysis
description: Overlap count against a fixed publisher audience.
methodology: Joins the preset publisher audience to a runner-supplied table on hashed email.
parameters:
- name: source_tables
description: The advertiser table to compare against the publisher audience
required: true
preset_tables:
- alias: publisher
template_view_name: pub.pub_audience_v2.AUDIENCE
template: |
SELECT COUNT(DISTINCT publisher.hashed_email) AS overlap_count
FROM IDENTIFIER({{ preset_tables['publisher'] }}) AS publisher
INNER JOIN IDENTIFIER({{ source_table[0] }}) AS p1
ON publisher.hashed_email = p1.hashed_email;