Como usar APIs do desenvolvedor para executar modelos sequencialmente¶
Análises complexas podem exigir que vários modelos sejam executados em uma ordem específica, às vezes usando a saída de um modelo como entrada de outro. Um provedor pode criar uma cadeia de modelos para definir uma sequência de modelos a serem executados em uma ordem específica. Ao definir esta cadeia de modelos, o provedor pode especificar se os resultados de um modelo específico estarão disponíveis para modelos subsequentes na cadeia.
Um usuário de sala limpa executa uma cadeia de modelos para realizar uma análise que executa os modelos na cadeia em sua ordem predefinida.
Sobre resultados intermediários¶
Se um provedor quiser que os resultados de um modelo estejam disponíveis para modelos subsequentes na cadeia de modelos, ele poderá criar um cache para os resultados do modelo. Cada modelo com cache também tem um tempo de expiração para esse cache.
Se um provedor especificar que um modelo tem um cache, na primeira vez que um usuário executar a cadeia de modelos, os resultados desse modelo serão armazenados em uma tabela dentro da sala limpa. Esta tabela subjacente só é acessível à própria sala limpa. Na próxima vez que um usuário executar a cadeia de modelos, Snowflake Data Clean Rooms verifica se o cache expirou antes de executar o modelo. O modelo com os resultados armazenados em cache não será executado novamente, a menos que o cache tenha expirado.
Os modelos subsequentes na cadeia de modelos podem usar o cache como entrada incluindo o parâmetro Jinja apropriado no modelo.
Definição de uma cadeia de modelos¶
Um provedor usa o comando provider.add_template_chain para criar uma cadeia de modelos. Os modelos que o provedor deseja adicionar à nova cadeia de modelos devem existir antes de criar a cadeia de modelos.
O comando provider.add_template_chain aceita os seguintes argumentos:
- Nome de uma sala limpa (string). 
- Nome da cadeia de modelos (string). 
- Modelos na cadeia de modelos (matriz de objetos JSON). 
Para um exemplo de uso do comando provider.add_template_chain para criar uma cadeia de modelos, consulte Exemplo.
Adição de modelos à cadeia de modelos¶
O provedor define quais modelos fazem parte de uma cadeia de modelos passando uma matriz de objetos JSON para provider.add_template_chain, onde cada objeto JSON representa um modelo. A ordem dos objetos JSON determina a ordem em que os modelos são executados.
O objeto JSON para um modelo pode incluir os seguintes campos:
- template_name(string)
- Especifica o modelo que está sendo adicionado à cadeia de modelos. O modelo já deve existir. - Este campo é obrigatório. 
- cache_results(boolean)
- Determina se os resultados do modelo são armazenados em cache para que outros modelos na cadeia de modelos possam acessá-los. Para armazenar os resultados em cache, especifique TRUE. - Este campo é obrigatório. Se TRUE, os campos - output_table_namee- cache_expiration_hourstambém são obrigatórios.
- output_table_name(string)
- Quando - cache_results = TRUE, especifica o nome da tabela Snowflake onde os resultados do modelo são armazenados.- Este campo é obrigatório se - cache_results = TRUE.
- jinja_output_table_param(string)
- Quando - cache_results = TRUE, especifica o nome do parâmetro Jinja que outros modelos devem incluir para aceitar os resultados armazenados em- output_table_name.- Este campo é opcional. 
- cache_expiration_hours(inteiro)
- Quando - cache_results = TRUE, especifica o número de horas antes que os resultados no cache sejam descartados. Quando o cache expira, na próxima vez que a cadeia de modelos for executada, o cache será atualizado com os resultados do modelo.- Este campo é obrigatório se - cache_results = TRUE.
Exemplo¶
Neste exemplo, o provedor deseja:
- Criar uma cadeia de modelos - insights_chainna sala limpa- collab_clean_room.
- Definir a cadeia de modelos para que o modelo - crosswalkseja executado antes do modelo- transaction_insights.
- Armazenar em cache os resultados do modelo - crosswalkpara que eles possam ser usados como entrada para o modelo- transaction_insights.
CALL samooha_by_snowflake_local_db.provider.add_template_chain(
  'collab_clean_room',
  'insights_chain',
  [
    {
      'template_name': 'crosswalk',
      'cache_results': True,
      'output_table_name': 'crosswalk',
      'jinja_output_table_param': 'crosswalk_table_name',
      'cache_expiration_hours': 2190
    },
    {
      'template_name': 'transaction_insights',
      'cache_results': False
    }
  ]
);
Para mais informações sobre cada objeto JSON, consulte Adição de modelos à cadeia de modelos.
Execução de uma cadeia de modelos¶
Um usuário de sala limpa executa o comando consumer.run_analysis para executar uma cadeia de modelos, que é o mesmo comando usado para executar um único modelo. A execução da cadeia de modelos executa cada modelo na cadeia em sua ordem predefinida para obter o resultado final.
O comando consumer.run_analysis aceita argumentos que ele passa para os modelos Jinja na cadeia de modelos. Você pode determinar quais argumentos são esperados pelos modelos na cadeia executando o comando consumer.get_arguments_from_template_chain.
Os argumentos passados para consumer.run_analysis podem ser específicos para um modelo específico na cadeia ou podem ser argumentos para cada modelo na cadeia.
- Argumentos universais
- Se você quiser passar um argumento para cada modelo na cadeia de modelos, a sintaxe é a mesma usada para - consumer.run_analysispara executar um único modelo. Por exemplo, o comando a seguir passa o valor do argumento- where_clausepara todos os modelos na cadeia de modelos:- CALL samooha_by_snowflake_local_db.consumer.run_analysis( 'collab_clean_room', 'insights_chain', ['MY_CONSUMER_DB.C_SCHEMA.CONVERSIONS'], ['PROVIDER_DB.P_SCHEMA.EXPOSURES'], object_construct( 'where_clause', 'p.EMAIL=c.EMAIL' ) ); 
- Argumentos específicos do modelo
- Se você quiser passar um argumento para um modelo específico, adicione outro - object_constructcomo filho do- object_constructde nível superior com o nome do modelo como nome do campo. Por exemplo, o comando a seguir passa o valor do argumento- dimensionssomente para o modelo- crosswalk_template.- CALL samooha_by_snowflake_local_db.consumer.run_analysis( 'collab_clean_room', 'insights_chain', ['MY_CONSUMER_DB.C_SCHEMA.CONVERSIONS'], ['PROVIDER_DB.P_SCHEMA.EXPOSURES'], object_construct( 'where_clause', 'p.EMAIL=c.EMAIL', 'crosswalk_template', object_construct( 'dimensions', ['p.CAMPAIGN'] ) ) ); 
Comandos de cadeia de modelos¶
Você pode usar os seguintes comandos para trabalhar com cadeias de modelos:
| Comando | Descrição | 
|---|---|
| 
 | Cria uma nova cadeia de modelos. | 
| 
 
 | Retorna todas as cadeias de modelos que foram adicionadas à sala limpa. | 
| 
 
 | Retorna a definição de uma cadeia de modelos. | 
| 
 | Descarta uma corrente de modelos da sala limpa. | 
| 
 | Descarta todas as cadeias de modelos da sala limpa. | 
| 
 | Retorna os argumentos esperados para todos os modelos na cadeia de modelos. | 
Para obter mais informações sobre esses comandos, consulte o seguinte: