Anoniem blok in Query-service
Adobe Experience Platform Query Service ondersteunt anonieme blokken. Met de functie voor anonieme blokken kunt u een of meer SQL-instructies ketenen die op volgorde worden uitgevoerd. Zij bieden ook de mogelijkheid om uitzonderingen af te handelen.
De anonieme blokeigenschap is een efficiënte manier om een opeenvolging van verrichtingen of vragen uit te voeren. De keten van vragen binnen het blok kan als malplaatje worden bewaard en gepland om bij een bepaald tijd of interval te lopen. Deze vragen kunnen worden gebruikt om gegevens te schrijven en toe te voegen om een nieuwe gegevensreeks tot stand te brengen en typisch gebruikt waar u een gebiedsdeel hebt.
De tabel bevat een uitsplitsing van de belangrijkste secties van het blok: uitvoering en afhandeling van uitzonderingen. De secties worden gedefinieerd door de trefwoorden BEGIN
, END
en EXCEPTION
.
BEGIN
en eindigt met het trefwoord END
. Elke set instructies die in de trefwoorden BEGIN
en END
zijn opgenomen, wordt op volgorde uitgevoerd en zorgt ervoor dat volgende query's pas worden uitgevoerd nadat de vorige query in de reeks is voltooid.EXCEPTION
. Het bevat de code om uitzonderingen af te vangen en te behandelen als om het even welke SQL verklaringen in de uitvoeringssectie ontbreken. Als om het even welke vragen ontbreken, wordt het volledige blok tegengehouden.Er moet op worden gewezen dat een blok een uitvoerbare verklaring is en daarom binnen andere blokken kan worden genesteld.
Voorbeeld van anonieme vragen over blokken
De volgende query toont een voorbeeld van het koppelen van SQL-instructies. Zie de SQL syntaxis in het document van de Dienst van de Vraagvoor meer informatie over om het even welke SQL gebruikte syntaxis.
$$ 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
$$;
In het onderstaande voorbeeld blijft SET
het resultaat van een SELECT
-query in de opgegeven lokale variabele behouden. De variabele is scoped aan het anonieme blok.
De momentopname-id wordt opgeslagen als een lokale variabele (@current_sid
). Het wordt dan gebruikt in de volgende vraag om resultaten terug te keren die op SNAPSHOT van de zelfde dataset/de lijst worden gebaseerd. Voor meer informatie over de momentopnameclausulezie de SQL syntaxisdocumentatie.
$$ 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
$$;
Anoniem blok met externe klanten third-party-clients
Bepaalde derdecliënten kunnen een afzonderlijke herkenningsteken vóór en na een SQL blok vereisen om erop te wijzen dat een deel van het manuscript als één enkele verklaring zou moeten worden behandeld. Als u een foutenmelding ontvangt wanneer het gebruiken van de Dienst van de Vraag met een derdecliënt, zou u naar de documentatie van de derdecliënt betreffende het gebruik van een SQL blok moeten verwijzen.
Bijvoorbeeld, DbVisualizer vereist dat het scheidingsteken de enige tekst op de lijn moet zijn. In DbVisualizer, is de standaardwaarde voor Begin Identifier --/
en voor het Eind - Herkenningsteken is het /
. Een voorbeeld van een anoniem blok in DbVisualizer is hieronder te zien:
--/
$$ 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
$$;
/
Voor DbVisualizer in het bijzonder, is er ook een optie in UI aan "Execute the complete buffer as one SQL statement". Zie de documentatie DbVisualizervoor meer informatie.
Volgende stappen
Door dit document te lezen, hebt u nu een duidelijk inzicht in anonieme blokken en hoe ze gestructureerd zijn. Gelieve te lezen de gids van de vraaguitvoeringvoor meer informatie bij het schrijven van vragen.
U zou ook over moeten lezen hoe de anonieme blokken met het stijgende patroon van het ladingsontwerpworden gebruikt om vraagefficiency te verhogen.