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_name
ecache_expiration_hours
també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 emoutput_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_chain
na sala limpacollab_clean_room
.Definir a cadeia de modelos para que o modelo
crosswalk
seja executado antes do modelotransaction_insights
.Armazenar em cache os resultados do modelo
crosswalk
para que eles possam ser usados como entrada para o modelotransaction_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_analysis
para executar um único modelo. Por exemplo, o comando a seguir passa o valor do argumentowhere_clause
para 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_construct
como filho doobject_construct
de nível superior com o nome do modelo como nome do campo. Por exemplo, o comando a seguir passa o valor do argumentodimensions
somente para o modelocrosswalk_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: