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 instruções incluídas nas palavras-chave BEGIN
e END
será executado em sequência e garante que as consultas subsequentes não serão 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 o documento 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 uma consulta SELECT
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. Para obter mais informações sobre a cláusula de instantâneo, 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 requer que o delimitador seja o único texto na linha. Em DbVisualizer, o valor padrão do Identificador de Início é --/
e do Identificador de Término é /
. 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 DbVisualizer em particular, também há uma opção na interface do usuário 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 o guia de execução da consulta para obter mais informações sobre como gravar consultas.
Você também deve ler sobre como os blocos anônimos são usados com o padrão de design de carga incremental para aumentar a eficiência da consulta.