Référence de schéma des salles blanches de données de collaboration¶
Cette rubrique décrit les schémas de spécification pour toutes les ressources de collaboration. Les spécifications sont indiquées au format YAML.
Les spécifications comportent un champ de version de schéma api_version. Utilisez le numéro de version de l’API indiqué ici ; la prise en charge des versions de schéma antérieures n’est pas garantie.
Version actuelle de l’API de collaboration DCR : 2.0.0
Spécification de collaboration¶
Définit la collaboration de haut niveau. La spécification définit les gestionnaires d’analyses invités, et pour chaque gestionnaire d’analyses, les données et les modèles auxquels il peut accéder et qu’il peut exécuter. Les modèles ou les offres de données listés ici doivent être enregistrés avant d’être inclus dans la spécification de collaboration.
Le propriétaire soumet cette définition en appelant COLLABORATION.INITIALIZE.
Schéma :
api_version: 2.0.0 # Required: Must be "2.0.0"
spec_type: collaboration # Required: Must be "collaboration"
name: <collaboration_name> # Required: Unique name (max 75 chars)
version: <version_string> # Optional: Version identifier (max 20 chars)
description: <collaboration_description> # Optional: Description (max 1,000 chars)
owner: <owner_alias> # Optional: Alias of owner
collaborator_identifier_aliases: # Required: Map aliases to account identifiers
<alias_1>: <account_identifier_1> # One or more alias mappings...
analysis_runners: # Required: Who can run analyses
<analysis_runner_alias>: # One or more analysis runner definitions...
data_providers: # Required: Data providers for this runner
<provider_alias>: # One or more provider definitions...
data_offerings: # Required: List of offerings (can be empty [])
- id: <data_offering_id> # Zero or more data offering IDs...
templates: # Optional: Templates this runner can use
- id: <template_id> # One or more template IDs...
activation_destinations: # Optional: Where results can be sent
snowflake_collaborators: # Optional: Collaborators who can receive results
- <collaborator_alias> # One or more collaborator aliases...
api_versionVersion de l’API de collaboration utilisée. Doit être
2.0.0.spec_typeIdentificateur du type de spécification. Doit être
collaboration.name: collaboration_nameNom convivial pour cette collaboration. Doit être unique dans le compte du créateur et suivre les règles des identificateurs Snowflake (maximum 75 caractères).
version(Facultatif)Identificateur de version pour cette collaboration (maximum 20 caractères). Doit suivre les règles des identificateurs Snowflake. Un bon format à utiliser est YYYY_MM_DD_V#. Par exemple :
2025_10_22_V1.description: collaboration_description(Facultatif)Description de la collaboration lisible par l’utilisateur (maximum 1 000 caractères), destinée aux collaborateurs.
owner: owner_alias(Facultatif)Alias ou identificateur de compte de partage de données du propriétaire de la collaboration. Si non spécifié, le compte qui enregistre cette spécification sera attribué en tant que propriétaire.
collaborator_identifier_aliasesMappage des alias de collaborateurs à leurs identificateurs de compte de partage de données. Seuls les utilisateurs listés ici peuvent participer à la collaboration. Utilisez les alias définis ici pour faire référence à tous les collaborateurs, plutôt que d’utiliser directement leur identificateur de compte de partage de données.
analysis_runnersDécrit qui peut exécuter une analyse dans cette collaboration. Chaque gestionnaire d’analyses est associé à un alias unique. Vous devez autoriser au moins un compte à exécuter une analyse dans cette collaboration.
<analysis_runner_alias>Alias du compte qui peut exécuter une analyse dans cette collaboration. L’alias est défini dans la liste
collaborator_identifier_aliases.data_providersFournisseurs de données dont les données peuvent être accessibles à ce gestionnaire d’analyses. Chaque fournisseur est lié par l’alias défini dans
collaborator_identifier_aliases.data_offeringsListe des offres de données de ce fournisseur de données auxquelles le gestionnaire d’analyses peut accéder, ou un tableau vide
[]. Si des éléments sont présents, chaque élément possède les propriétés suivantes :data_offering_id: ID de référence pour cette offre de données, généré lorsque le fournisseur de données appelleREGISTRY.REGISTER_DATA_OFFERING.
templates(Facultatif)Modèles qui peuvent être utilisés par ce gestionnaire d’analyses. Chaque modèle est référencé par son ID.
activation_destinations(Facultatif)Définit les paramètres d’activation pour les résultats de l’analyse.
snowflake_collaborators(Facultatif)Liste des collaborateurs qui peuvent recevoir des résultats d’analyse activés. Utilisez l’alias depuis la liste
collaborator_identifier_aliasesdans cette spécification. Tous les collaborateurs listés ici doivent disposer des autorisations décrites dans Activer les résultats de la requête.
Exemples¶
api_version: 2.0.0
spec_type: collaboration
name: my_sample_collaboration
owner: Owner
collaborator_identifier_aliases:
Owner: ENG.OWNER
AnalysisRunner_1: ENG.CONSUMER_1
DataProvider_1: ENG.PROVIDER_1
DataProvider_2: ENG.PROVIDER_2
AnalysisRunner_2: ENG.PROVIDER_3
analysis_runners:
AnalysisRunner_1:
data_providers:
DataProvider_1:
data_offerings:
- id: DCR_PREPROD_CI_PROVIDER_ANY_NAME_ZUDFTMULHQ_iuDfn_v0
DataProvider_2:
data_offerings: []
templates:
- id: test_sca_three_party_template_JOaVG_v0
AnalysisRunner_2:
data_providers:
DataProvider_2:
data_offerings: []
templates:
- id: test_sca_three_party_template_JOaVG_v0
Spécification de l’offre de données¶
Définit un ensemble de tables qu’un fournisseur est prêt à partager avec les gestionnaires d’analyses, ainsi que des règles de partage, telles que des politiques, des formats de colonnes et la possibilité d’utiliser la table avec un modèle.
Le fournisseur de données soumet cette définition en appelant REGISTRY.REGISTER_DATA_OFFERING, qui renvoie un ID d’offre qui peut être utilisé dans la définition de la collaboration.
Une offre de données ne sera pas disponible dans une collaboration tant que le compte qui a enregistré l’offre de données ne rejoindra pas la collaboration.
Vous devez disposer du privilège de compte REGISTER DATA OFFERING pour rejoindre toute collaboration dans laquelle vous pouvez activer des données (c’est-à-dire que vous êtes un gestionnaire d’analyses et que la spécification de la collaboration inclut un champ activation_destinations). Pour plus d’informations, consultez le guide de référence de l’API de gestion des accès.
Schéma :
api_version: 2.0.0 # Required: Must be "2.0.0"
spec_type: data_offering # Required: Must be "data_offering"
name: <data_offering_name> # Required: Unique name (max 75 chars)
version: <version_string> # Required: Version identifier (max 20 chars)
description: <data_offering_description> # Optional: Description (max 1,000 chars)
datasets: # Required: Tables to share
- alias: <dataset_name> # One or more dataset items...
data_object_fqn: <database.schema.table_name> # Required: Fully-qualified table name
allowed_analyses: <allowed_analysis_type> # Required: template_only or template_and_freeform_sql
object_class: <object_class> # Optional: ads_log or custom
schema_and_template_policies: # Required: Column definitions
<column_name>: # One or more column definitions...
category: <category_type> # Required: join_standard, join_custom, timestamp, or passthrough
column_type: <format_type> # Required for join_standard category, omitted for other categories.
activation_allowed: <true_or_false> # Optional: Whether column can be used for activation
freeform_sql_policies: # Optional: Policies for freeform SQL queries
aggregation_policy: # Optional: Single aggregation policy
name: <fully_qualified_policy_name>
entity_keys: # Optional: Entity key columns
- <column_name> # One or more column names...
join_policy: # Optional: Single join policy
name: <fully_qualified_policy_name>
columns: # Optional: Columns this policy applies to
- <column_name> # One or more column names...
masking_policies: # Optional: Masking policies
- name: <fully_qualified_policy_name> # One or more masking policy items...
columns: # Optional: Columns this policy applies to
- <column_name> # One or more column names...
projection_policies: # Optional: Projection policies
- name: <fully_qualified_policy_name> # One or more projection policy items...
columns: # Optional: Columns this policy applies to
- <column_name> # One or more column names...
row_access_policy: # Optional: Row access policies
- name: <fully_qualified_policy_name> # One or more row access policy items...
columns: # Optional: Columns this policy applies to
- <column_name> # One or more column names...
require_freeform_sql_policy: <true_or_false> # Optional: Require a policy for freeform SQL
api_versionVersion de l’API de collaboration utilisée. Doit être
2.0.0.spec_typeIdentificateur du type de spécification. Doit être
data_offering.versionIdentificateur de version personnalisé pour cette spécification d’offre de données (20 caractères maximum). Doit suivre les règles des identificateurs Snowflake. La chaîne de version reçoit sa propre colonne dans la réponse à
VIEW_DATA_OFFERINGSetVIEW_REGISTERED_DATA_OFFERINGS; utilisez donc une valeur qui peut être triée par ordre croissant. Exemple :V0name: data_offering_nameNom d’un ensemble de tables et de colonnes à exposer aux collaborateurs. Ce nom est utilisé comme valeur de référence pour l’offre de données dans une définition de collaboration. Vous pouvez créer plusieurs offres de données avec des tables et des colonnes qui se chevauchent pour différents cas d’utilisation. Doit suivre les règles des identificateurs Snowflake avec un maximum de 75 caractères et être unique au sein de votre compte de salles blanches de données Snowflake. La paire
name_versiondoit être unique pour toutes les offres de données de ce compte.description: data_offering_description(Facultatif)Description de l’offre de données (1 000 caractères maximum).
datasetsListe d’un ou plusieurs ensembles de données à mettre à la disposition de la collaboration.
alias: dataset_nameNom pour cet objet de données, utilisé dans
collaboration.run. Doit suivre les règles des identificateurs Snowflake et être unique au sein de cette offre.data_object_fqn: fully_qualified_table_nameDécrit une seule table disponible pour les collaborateurs. Indiquez le nom pleinement qualifié de l’objet source dans votre compte (
database.schema.table_name). La longueur maximale est de 773 caractères.allowed_analyses: allowed_analysis_typeLe type d’analyses que les collaborateurs peuvent effectuer sur cette table. Champ obligatoire avec les valeurs suivantes :
template_only: Le gestionnaire d’analyses peut effectuer des requêtes dans cette table uniquement en utilisant un modèle répertorié dans la définition de la collaboration.template_and_freeform_sql: Le gestionnaire d’analyses peut interroger cette table en utilisant un modèle répertorié dans la définition de la collaboration, ou en utilisant des requêtes SQL de forme libre dans un environnement de code.
object_class(Facultatif)Type d’objet. Une des valeurs suivantes :
ads_log: Les tables et les colonnes listées ici doivent répondre aux exigences du journal des annonces.custom: Ensemble personnalisé de tables et de colonnes qui n’a pas d’exigences particulières.
schema_and_template_policiesFournissez une liste des noms de colonnes de la table listée par
data_object_fqnet définissez les politiques et le format de chaque colonne. Seules les colonnes listées ici sont disponibles pour les collaborateurs. Chaque colonne possède les descripteurs suivants :category: category_typeLa catégorie détermine si un renommage de colonne est appliqué et si une contrainte de format de données doit être appliquée.
categoryetcolumn_typedéterminent le nom de la colonne exposée au gestionnaire d’analyses. Les valeurs suivantes sont prises en charge :join_standard: Il s’agit d’une colonne joignable avec des données dans un format spécifié dans le champcolumn_type. Cette colonne est renommée en valeurcolumn_typedans l’offre de données partagées.join_custom: Il s’agit d’une colonne joignable dans n’importe quel format. Utilisez ceci lorsqu’il n’existe pas decolumn_typeapproprié pour votre colonne de jointure. Le nom de colonne d’origine est utilisé dans l’offre de données partagées.timestamp: Il s’agit d’une colonne projetable qui spécifie un horodatage pour tout événement. La colonne est renomméetimestampdans l’offre de données partagées.passthrough: Il s’agit d’une colonne projetable de tout autre type. Le nom de colonne d’origine est utilisé dans l’offre de données partagées.
column_type: <format_type>(Obligatoire lorsque catégorie=join_standard, ignoré pour les autres types de catégories)Format des données. Si les données ne sont pas conformes à ce format, votre appel à
REGISTER_DATA_OFFERINGéchouera. Fournissez ce champ pour les colonnes oùcategory = join_standard.categoryetcolumn_typedéterminent le nom de la colonne exposée au gestionnaire d’analyses. Vous ne pouvez pas attribuer la même valeurcolumn_typeà plusieurs colonnes d’une même table. Les types de formats suivants sont pris en charge :email: Adresse e-mail brute.hashed_email_sha256: E-mail haché SHA256.hashed_email_b64_encoded: E-mail haché codé en base64.phone: Numéro de téléphone sans ponctuation. Par exemple :2015551212.hashed_phone_sha256: Numéro de téléphone haché SHA256. Le numéro d’origine doit être au formatphone.hashed_phone_b64_encoded: Numéro de téléphone haché codé en base64.device_id: Un ID d’appareil brut, comme un ID publicitaire mobile ou un ID d’appareil CTV.hashed_device_id_sha256: ID d’appareil haché SHA256. L’identifiant d’origine doit être au formatdevice_id.hashed_device_b64_encoded: ID d’appareil haché codé en base64.ip_address: Adresse IP brute au format IPv4.hashed_ip_address_sha256: adresse IPv4 hachée SHA256. L’adresse IP d’origine doit être au formatip_address.hashed_ip_address_b64_encoded: Adresse IP hachée codée en base64.
activation_allowed(Facultatif)Indique si cette colonne peut être utilisée à des fins d’activation. La valeur par défaut est
false.
freeform_sql_policies(Facultatif)Si
allowed_analysescorrespond àtemplate_and_freeform_sql, ce champ facultatif répertorie toutes les politiques de Snowflake qui doivent être appliquées sous forme de requêtes SQL de forme libre exécutées sur cette offre de données. Pour plus d’informations, voir Appliquer la politique à l’offre de données (utilisation des requêtes libres uniquement).
Les types suivants sont pris en charge :
aggregation_policy(Facultatif)Configuration unique de la politique d’agrégation.
name: Nom pleinement qualifié de la politique.
entity_keys(Facultatif) : Liste des noms de colonnes qui servent de clés d’entité pour la politique d’agrégation.join_policy(Facultatif)Configuration unique de la politique de jointure.
name: Nom pleinement qualifié de la politique.
columns(Facultatif) : Liste des noms de colonnes auxquels cette politique s’applique.masking_policies(Facultatif)Tableau des configurations de la politique de masquage.
name: Nom pleinement qualifié de la politique.
columns(Facultatif) : Liste des noms de colonnes auxquels cette politique s’applique.projection_policies(Facultatif)Tableau des configurations de la politique de projection.
name: Nom pleinement qualifié de la politique.
columns(Facultatif) : Liste des noms de colonnes auxquels cette politique s’applique.row_access_policy(Facultatif)Tableau des configurations de la politique d’accès aux lignes.
name: Nom pleinement qualifié de la politique.
columns(Facultatif) : Liste des noms de colonnes auxquels cette politique s’applique.
require_freeform_sql_policy(Facultatif)Indique si cette source de données doit avoir une
freeform_sql_policiesdéfinie. Ce type est utilisé comme un Fail-safe pour empêcher l’ajout d’une source de données qui prend en charge les requêtes SQL de forme libre sans lui attribuer de politiques.
Spécification des ressources du modèle¶
Définit un modèle unique dans une collaboration. Envoyé à REGISTRY.REGISTER_TEMPLATE pour enregistrer un modèle à utiliser dans une collaboration.
Schéma :
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
template: | # Required: JinjaSQL template content
<template_content>
api_versionVersion de l’API de collaboration utilisée. Doit être
2.0.0.spec_typeIdentificateur du type de spécification. Doit être
template.nameNom unique et convivial pour ce modèle. Doit suivre les règles des identificateurs Snowflake avec un maximum de 75 caractères. La paire
name_versiondoit être unique pour tous les modèles de ce compte.versionIdentificateur de version pour ce modèle (20 caractères maximum). Doit suivre les règles des identificateurs Snowflake. La chaîne de version reçoit sa propre colonne dans la réponse à
VIEW_TEMPLATESetVIEW_REGISTERED_TEMPLATES; utilisez donc une valeur qui peut être triée par ordre croissant. Exemple :V0typeType de modèle. Une des valeurs suivantes :
sql_analysis: Modèle pour les opérations d’analyse des données.sql_activation: Modèle pour les opérations d’activation des données.
description: template_description(Facultatif)Description de haut niveau de ce que fait ce modèle (maximum 1 000 caractères).
methodology: methodology_description(Facultatif)Description plus détaillée du fonctionnement de ce modèle (maximum 1 000 caractères).
parameters(Facultatif)Liste de tous les paramètres fournis par l’utilisateur dans ce modèle. Chaque élément peut contenir les champs suivants :
name: Nom du paramètre sous forme d’identificateur Snowflake valide.description(Facultatif) : Description du paramètre lisible par l’utilisateur (maximum 500 caractères).required(Facultatif) : Indique si le paramètre est requis ou non. La valeur par défaut estfalse.default(Facultatif) : Valeur par défaut pour le paramètre, qui peut être n’importe quel type de données.type(Facultatif) : Type de données attendu du paramètre. L’un des types suivants :string,integer,number,boolean,arrayouobject.
templateContenu du modèle. Pour les modèles SQL, contient le modèle JinjaSQL. Pour plus d’informations, voir Conception de modèles pour une collaboration.
Les noms des colonnes exposées au modèle sont déterminés par les valeurs
categoryetcolumn_typepour la colonne dans la définition de l’offre de données. Pour plus d’informations, voir Renommage de colonne source.
Exemple :
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 }};
Spécification de la requête d’analyse¶
Spécifie toutes les informations dont les gestionnaires d’analyses ont besoin pour exécuter une analyse, y compris le modèle à utiliser, les tables à transmettre au modèle et toutes les valeurs des variables utilisées par un modèle. Si vous n’utilisez pas de SQL de forme libre pour interroger des données, tous les gestionnaires d’analyses qui souhaitent effectuer une analyse utilisent cette spécification pour définir le modèle et les données d’entrée.
Schéma :
api_version: 2.0.0 # Required: Must be "2.0.0"
spec_type: analysis # Required: Must be "analysis"
template: <template_id> # Required: ID of the template to use
name: <analysis_name> # Optional: Unique name (max 75 chars)
version: <version_string> # Optional: Version identifier (max 20 chars)
description: <analysis_description> # Optional: Description (max 1,000 chars)
template_configuration: # Optional: Values used when running the template
view_mappings: # Optional: Mappings for shared data
source_tables: # Optional: Tables from data offerings. Populates the source_table array variable.
- <source_table_name> # One or more source table names...
<argument_name>: <view_name> # Custom argument to template view name mapping
local_view_mappings: # Optional: Mappings for local data
my_tables: # Optional: Tables from local data offerings. Populates the my_table array variable.
- <my_table_name> # One or more local table names...
<argument_name>: <view_name> # Custom argument to local template view name mapping
arguments: # Optional: Template arguments as key-value pairs
<argument_name>: <argument_value> # One or more argument key-value pairs...
activation: # Required for activation templates
snowflake_collaborator: <alias> # Collaborator alias for activation destination
segment_name: <segment_name> # Unique segment name for this activation
api_versionVersion de l’API de collaboration utilisée. Doit être
2.0.0.spec_typeIdentificateur du type de spécification. Doit être
analysis.template: template_nameID du modèle à utiliser pour cette analyse, tel que défini dans un YAML de modèle. Doit suivre les règles des identificateurs Snowflake avec un maximum de 75 caractères.
name(Facultatif)Nom unique et convivial pour cette analyse. Doit suivre les règles des identificateurs Snowflake avec un maximum de 75 caractères et être unique au sein de votre compte de salles blanches de données Snowflake.
version(Facultatif)Identificateur de version pour cette spécification d’analyse (maximum 20 caractères). Doit suivre les règles des identificateurs Snowflake et être unique au sein de votre compte pour ce nom d’analyse. Un bon format à utiliser est YYYY_MM_DD_V#. Par exemple :
2025_10_22_V1.description(Facultatif)Description de haut niveau de ce que fait cette analyse (maximum 1 000 caractères).
template_configuration(Facultatif)Valeurs utilisées lors de l’exécution du modèle spécifié.
view_mappings(Facultatif)Mappage des noms des arguments avec les noms des vues des modèles pour les offres de données partagées.
source_tables(Facultatif)Liste des noms de tables à utiliser pour remplir la variable de modèle
source_table. Utilisez les alias de tables spécifiés dans la spécification de l’offre de données. Vous pouvez obtenir une liste des tables disponibles en appelantCOLLABORATION.VIEW_DATA_OFFERINGS. Le format de chaque entrée estcollaborator alias.data offering ID.dataset alias.argument_name: view_nameMappage personnalisé d’un nom d’argument vers un nom de vue de modèle (maximum 255 caractères chacun).
local_view_mappings(Facultatif)Mappage des noms des arguments avec les noms des vues des modèles locaux pour les ensembles de données privés.
my_tables(Facultatif)Liste des noms de tables à utiliser pour remplir la variable de modèle
my_table. Celle-ci n’est disponible que pour les ensembles de données privés que vous avez liés en appelantLINK_LOCAL_DATA_OFFERING. Le format de chaque entrée estcollaborator alias.data offering ID.dataset alias.argument_name: view_nameMappage personnalisé d’un nom d’argument vers un nom de vue de modèle local (maximum 255 caractères chacun).
arguments(Facultatif)Arguments du modèle sous forme de paires clé-valeur. Les valeurs des arguments peuvent être des chaînes, des nombres, des booléens, des tableaux ou des objets, en fonction des exigences du modèle.
activation(Requis pour les modèles d’activation)Configuration spécifique à l’activation requise lors de l’exécution de modèles d’activation.
snowflake_collaboratorAlias de collaborateur pour la destination de l’activation (maximum 25 caractères). Doit correspondre à un alias défini dans la section
collaborator_identifier_aliasesde la spécification de collaboration, et le collaborateur doit être répertorié dans la sectionactivation_destinations.segment_nameNom de segment unique pour cette activation (maximum 255 caractères). Utilisé pour identifier et suivre les résultats de l’activation. Doit suivre les règles des identificateurs Snowflake.