Bloqueio anônimo no serviço de consulta
O Serviço de consulta do Adobe Experience Platform oferece suporte a blocos anônimos. O recurso de bloqueio anônimo permite encadear uma ou mais instruções SQL que são executadas em sequência. Permitem também a opção de tratamento de exceções.
O recurso de bloco anônimo é uma maneira eficiente de executar uma sequência de operações ou consultas. A cadeia de consultas no bloco pode ser salva como um modelo e agendada para execução em um horário ou intervalo específico. Essas queries podem ser usadas para gravar e anexar dados para criar um novo conjunto de dados e normalmente são usadas onde você tem uma dependência.
A tabela fornece um detalhamento das seções principais do bloco: execução e tratamento de exceções. As seções são definidas pelas palavras-chave BEGIN
, END
, e EXCEPTION
.
BEGIN
e termina com a palavra-chave END
. Qualquer conjunto de declarações incluído no BEGIN
e END
as palavras-chave serão executadas em sequência e garantem que as consultas subsequentes não sejam executadas até que a consulta anterior na sequência tenha sido concluída.EXCEPTION
. Ele contém o código para capturar e tratar exceções se qualquer uma das instruções SQL na seção de execução falhar. Se qualquer uma das queries falhar, o bloco inteiro será interrompido.Vale observar que um bloco é uma instrução executável e, portanto, pode ser aninhado dentro de outros blocos.
Exemplo de consultas de bloco anônimo
A consulta a seguir mostra um exemplo de instruções SQL de encadeamento. Consulte a Sintaxe SQL no Serviço de consulta para obter mais informações sobre qualquer sintaxe SQL usada.
$$ BEGIN
CREATE TABLE ADLS_TABLE_A AS SELECT * FROM ADLS_TABLE_1....;
....
CREATE TABLE ADLS_TABLE_D AS SELECT * FROM ADLS_TABLE_C....;
EXCEPTION WHEN OTHER THEN SET @ret = SELECT 'ERROR';
END
$$;
No exemplo abaixo, SET
persiste o resultado de um SELECT
consulta na variável local especificada. A variável tem escopo para o bloco anônimo.
A ID do instantâneo é armazenada como uma variável local (@current_sid
). Ele é usado na próxima query para retornar resultados com base no SNAPSHOT do mesmo conjunto de dados/tabela.
Um instantâneo de banco de dados é uma exibição estática somente leitura de um banco de dados do SQL Server. Para obter mais informações sobre a cláusula de snapshot consulte a documentação da sintaxe SQL.
$$ BEGIN
SET @current_sid = SELECT parent_id FROM (SELECT history_meta('your_table_name')) WHERE is_current = true;
CREATE temp table abcd_temp_table AS SELECT count(1) FROM your_table_name SNAPSHOT SINCE @current_sid;
END
$$;
Bloqueio anônimo com clientes de terceiros third-party-clients
Alguns clientes de terceiros podem exigir um identificador separado antes e depois de um bloco SQL para indicar que uma parte do script deve ser tratada como uma única instrução. Se você receber uma mensagem de erro ao usar o Serviço de consulta com um cliente de terceiros, consulte a documentação do cliente de terceiros sobre o uso de um bloco SQL.
Por exemplo, DbVisualizer exige que o delimitador seja o único texto na linha. Em DbVisualizer, o valor padrão para o Identificador Begin é --/
e para o Identificador Final, é /
. Um exemplo de um bloco anônimo em DbVisualizer é visto abaixo:
--/
$$ BEGIN
CREATE TABLE ADLS_TABLE_A AS SELECT * FROM ADLS_TABLE_1....;
....
CREATE TABLE ADLS_TABLE_D AS SELECT * FROM ADLS_TABLE_C....;
EXCEPTION WHEN OTHER THEN SET @ret = SELECT 'ERROR';
END
$$;
/
Para o DbVisualizer em particular, também há uma opção na interface para "Execute the complete buffer as one SQL statement". Consulte a Documentação do DbVisualizer para obter mais informações.
Próximas etapas
Ao ler este documento, agora você tem uma compreensão clara dos blocos anônimos e de como eles são estruturados. Leia as guia de execução de consulta para obter mais informações sobre como gravar consultas.
Você também deve ler sobre como blocos anônimos são usados com o padrão de design de carga incremental para aumentar a eficiência da consulta.