SQL-syntaxis in Query Service
U kunt standaard ANSI SQL voor SELECT
verklaringen en andere beperkte bevelen in de Dienst van de Vraag van Adobe Experience Platform gebruiken. In dit document wordt de SQL-syntaxis beschreven die wordt ondersteund door Query Service .
Vragen SELECTEREN select-queries
De volgende syntaxis definieert een query SELECT
die wordt ondersteund door Query Service :
[ WITH with_query [, ...] ]
SELECT [ ALL | DISTINCT [( expression [, ...] ) ] ]
[ * | expression [ [ AS ] output_name ] [, ...] ]
[ FROM from_item [, ...] ]
[ SNAPSHOT { SINCE start_snapshot_id | AS OF end_snapshot_id | BETWEEN start_snapshot_id AND end_snapshot_id } ]
[ WHERE condition ]
[ GROUP BY grouping_element [, ...] ]
[ HAVING condition [, ...] ]
[ WINDOW window_name AS ( window_definition ) [, ...] ]
[ { UNION | INTERSECT | EXCEPT | MINUS } [ ALL | DISTINCT ] select ]
[ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]
[ LIMIT { count | ALL } ]
[ OFFSET start ]
In de sectie met tabbladen hieronder vindt u de beschikbare opties voor de trefwoorden FROM, GROUP en WITH.
code language-sql |
---|
|
code language-sql |
---|
|
code language-sql |
---|
|
code language-sql |
---|
|
code language-sql |
---|
|
code language-sql |
---|
|
code language-sql |
---|
|
code language-sql |
---|
|
code language-sql |
---|
|
code language-sql |
---|
|
code language-sql |
---|
|
De volgende subsecties bevatten details over extra clausules die u in uw vragen kunt gebruiken, op voorwaarde dat zij het hierboven geschetste formaat volgen.
component SNAPSHOT
Deze clausule kan worden gebruikt om gegevens over een lijst incrementeel te lezen die op momentopname IDs wordt gebaseerd. Een momentopname identiteitskaart is een controlepuntteller die door een aantal wordt vertegenwoordigd van het type Long dat op een lijst van het gegevenshoeveeltal wordt toegepast telkens als het gegeven aan het wordt geschreven. De component SNAPSHOT
koppelt zich aan de tabelrelatie waarmee deze wordt gebruikt.
[ SNAPSHOT { SINCE start_snapshot_id | AS OF end_snapshot_id | BETWEEN start_snapshot_id AND end_snapshot_id } ]
Voorbeeld
SELECT * FROM table_to_be_queried SNAPSHOT SINCE start_snapshot_id;
SELECT * FROM table_to_be_queried SNAPSHOT AS OF end_snapshot_id;
SELECT * FROM table_to_be_queried SNAPSHOT BETWEEN start_snapshot_id AND end_snapshot_id;
SELECT * FROM table_to_be_queried SNAPSHOT BETWEEN HEAD AND start_snapshot_id;
SELECT * FROM table_to_be_queried SNAPSHOT BETWEEN end_snapshot_id AND TAIL;
SELECT * FROM (SELECT id FROM table_to_be_queried BETWEEN start_snapshot_id AND end_snapshot_id) C
(SELECT * FROM table_to_be_queried SNAPSHOT SINCE start_snapshot_id) a
INNER JOIN
(SELECT * from table_to_be_joined SNAPSHOT AS OF your_chosen_snapshot_id) b
ON a.id = b.id;
In de onderstaande tabel wordt de betekenis van elke syntaxisoptie in de component SNAPSHOT uitgelegd.
SINCE start_snapshot_id
AS OF end_snapshot_id
BETWEEN start_snapshot_id AND end_snapshot_id
start_snapshot_id
en inclusief de end_snapshot_id
.BETWEEN HEAD AND start_snapshot_id
start_snapshot_id
geretourneerd.BETWEEN end_snapshot_id AND TAIL
end-snapshot_id
aan het eind van de dataset (exclusief momentopname ID). Dit betekent dat als end_snapshot_id
de laatste momentopname in de dataset is, de vraag nul rijen zal terugkeren omdat er geen momentopnamen voorbij die laatste momentopname zijn.SINCE start_snapshot_id INNER JOIN table_to_be_joined AS OF your_chosen_snapshot_id ON table_to_be_queried.id = table_to_be_joined.id
table_to_be_queried
en koppelt deze aan de gegevens uit table_to_be_joined
zoals deze zich op your_chosen_snapshot_id
bevonden. Verbinden is gebaseerd op passende IDs van de kolommen van identiteitskaart van de twee lijsten die worden aangesloten bij.Een SNAPSHOT
-component werkt met een tabel- of tabelalias, maar niet boven op een subquery of weergave. Een SNAPSHOT
-component werkt overal waar een SELECT
-query op een tabel kan worden toegepast.
U kunt HEAD
en TAIL
ook gebruiken als speciale verschuivingswaarden voor opnamen. Het gebruik van HEAD
verwijst naar een verschuiving vóór de eerste opname, terwijl TAIL
verwijst naar een verschuiving na de laatste opname.
resolve_fallback_snapshot_on_failure
) wordt geplaatst:- Als de facultatieve fallback gedragsvlag wordt geplaatst, kiest de Dienst van de Vraag de vroegste beschikbare momentopname, plaatst het als beginmomentopname, en keert de gegevens tussen de vroegste beschikbare momentopname en de gespecificeerde eindmomentopname terug. Dit gegeven is inclusief van de vroegste beschikbare momentopname.
WHERE-component
Standaard zijn overeenkomsten die worden geproduceerd door een WHERE
-component op een SELECT
-query hoofdlettergevoelig. Als u wilt dat overeenkomsten niet hoofdlettergevoelig zijn, kunt u het trefwoord ILIKE
gebruiken in plaats van LIKE
.
[ WHERE condition { LIKE | ILIKE | NOT LIKE | NOT ILIKE } pattern ]
De logica van de clausules LIKE en ILIKE wordt verklaard in de volgende lijst:
WHERE condition LIKE pattern
~~
WHERE condition NOT LIKE pattern
!~~
WHERE condition ILIKE pattern
~~*
WHERE condition NOT ILIKE pattern
!~~*
Voorbeeld
SELECT * FROM Customers
WHERE CustomerName ILIKE 'a%';
Deze vraag keert klanten met namen terug die in "A"of "a"beginnen.
VERBINDEN
Een SELECT
-query die gebruikmaakt van verbindingen, heeft de volgende syntaxis:
SELECT statement
FROM statement
[JOIN | INNER JOIN | LEFT JOIN | LEFT OUTER JOIN | RIGHT JOIN | RIGHT OUTER JOIN | FULL JOIN | FULL OUTER JOIN]
ON join condition
UNIE, INTERSECT EN BEHALVE
De clausules UNION
, INTERSECT
en EXCEPT
worden gebruikt om vergelijkbare rijen van twee of meer tabellen te combineren of uit te sluiten:
SELECT statement 1
[UNION | UNION ALL | UNION DISTINCT | INTERSECT | EXCEPT | MINUS]
SELECT statement 2
TABEL MAKEN ALS SELECT create-table-as-select
De volgende syntaxis definieert een query CREATE TABLE AS SELECT
(CTAS):
CREATE TABLE table_name [ WITH (schema='target_schema_title', rowvalidation='false', label='PROFILE') ] AS (select_query)
schema
rowvalidation
true
.label
profile
om uw dataset zoals toegelaten voor profiel te etiketteren. Dit betekent dat uw dataset automatisch voor profiel duidelijk wordt aangezien het wordt gecreeerd. Zie het afgeleide document met kenmerkextensies voor meer informatie over het gebruik van label
.select_query
SELECT
. De syntaxis van de SELECT
vraag kan in de UITGEZOCHTE vraagsectieworden gevonden.Voorbeeld
CREATE TABLE Chairs AS (SELECT color, count(*) AS no_of_chairs FROM Inventory i WHERE i.type=="chair" GROUP BY i.color)
CREATE TABLE Chairs WITH (schema='target schema title', label='PROFILE') AS (SELECT color, count(*) AS no_of_chairs FROM Inventory i WHERE i.type=="chair" GROUP BY i.color)
CREATE TABLE Chairs AS (SELECT color FROM Inventory SNAPSHOT SINCE 123)
SELECT
moet een alias hebben voor de statistische functies zoals COUNT
, SUM
, MIN
, enzovoort. De instructie SELECT
kan ook met of zonder haakjes () worden geleverd. U kunt een SNAPSHOT
-component opgeven om incrementele delta's in de doeltabel te lezen.INVOEGEN IN
De opdracht INSERT INTO
wordt als volgt gedefinieerd:
INSERT INTO table_name select_query
table_name
select_query
SELECT
. De syntaxis van de SELECT
vraag kan in de UITGEZOCHTE vraagsectieworden gevonden.Voorbeeld
INSERT INTO Customers SELECT SupplierName, City, Country FROM OnlineCustomers;
INSERT INTO Customers AS (SELECT * from OnlineCustomers SNAPSHOT AS OF 345)
SELECT
verklaring tussen haakjes (). Het schema van het resultaat van de instructie SELECT
moet bovendien overeenkomen met het schema van de tabel die is gedefinieerd in de instructie INSERT INTO
. U kunt een SNAPSHOT
-component opgeven om incrementele delta's in de doeltabel te lezen.De meeste velden in een echt XDM-schema zijn niet gevonden op het hoofdniveau en SQL staat het gebruik van puntnotatie niet toe. Als u een realistisch resultaat wilt bereiken met geneste velden, moet u elk veld in het INSERT INTO
-pad toewijzen.
Als u geneste paden wilt INSERT INTO
, gebruikt u de volgende syntaxis:
INSERT INTO [dataset]
SELECT struct([source field1] as [target field in schema],
[source field2] as [target field in schema],
[source field3] as [target field in schema]) [tenant name]
FROM [dataset]
Voorbeeld
INSERT INTO Customers SELECT struct(SupplierName as Supplier, City as SupplierCity, Country as SupplierCountry) _Adobe FROM OnlineCustomers;
DROP TABLE
Met de opdracht DROP TABLE
wordt een bestaande tabel verwijderd en wordt de aan de tabel gekoppelde map uit het bestandssysteem verwijderd als dit geen externe tabel is. Als de tabel niet bestaat, treedt een uitzondering op.
DROP TABLE [IF EXISTS] [db_name.]table_name
IF EXISTS
DATABASE MAKEN
Met de opdracht CREATE DATABASE
maakt u een ADLS-database (Azure Data Lake Storage).
CREATE DATABASE [IF NOT EXISTS] db_name
DATABASE DROP
Met de opdracht DROP DATABASE
verwijdert u de database uit een instantie.
DROP DATABASE [IF EXISTS] db_name
IF EXISTS
DROP SCHEMA
De opdracht DROP SCHEMA
laat een bestaand schema vallen.
DROP SCHEMA [IF EXISTS] db_name.schema_name [ RESTRICT | CASCADE]
IF EXISTS
RESTRICT
CASCADE
WEERGAVE MAKEN create-view
Een SQL-weergave is een virtuele tabel die is gebaseerd op de resultaatset van een SQL-instructie. Maak een weergave met de instructie CREATE VIEW
en geef deze een naam. U kunt die naam dan gebruiken om naar de resultaten van de vraag terug te verwijzen. Hierdoor is het gemakkelijker om complexe query's opnieuw te gebruiken.
De volgende syntaxis bepaalt een CREATE VIEW
vraag voor een dataset. Deze dataset kan een ADLS of versnelde opslagdataset zijn.
CREATE VIEW view_name AS select_query
view_name
select_query
SELECT
. De syntaxis van de SELECT
vraag kan in de UITGEZOCHTE vraagsectieworden gevonden.Voorbeeld
CREATE VIEW V1 AS SELECT color, type FROM Inventory
CREATE OR REPLACE VIEW V1 AS SELECT model, version FROM Inventory
De volgende syntaxis definieert een query CREATE VIEW
die een weergave maakt in de context van een database en schema.
Voorbeeld
CREATE VIEW db_name.schema_name.view_name AS select_query
CREATE OR REPLACE VIEW db_name.schema_name.view_name AS select_query
db_name
schema_name
view_name
select_query
SELECT
. De syntaxis van de SELECT
vraag kan in de UITGEZOCHTE vraagsectieworden gevonden.Voorbeeld
CREATE VIEW <dbV1 AS SELECT color, type FROM Inventory;
CREATE OR REPLACE VIEW V1 AS SELECT model, version FROM Inventory;
WEERGAVEN TONEN
De volgende vraag toont de lijst van meningen.
SHOW VIEWS;
Db Name | Schema Name | Name | Id | Dataset Dependencies | Views Dependencies | TYPE
----------------------------------------------------------------------------------------------
qsaccel | profile_agg | view1 | view_id1 | dwh_dataset1 | | DWH
| | view2 | view_id2 | adls_dataset | adls_views | ADLS
(2 rows)
DROP VIEW
De volgende syntaxis definieert een query DROP VIEW
:
DROP VIEW [IF EXISTS] view_name
IF EXISTS
view_name
Voorbeeld
DROP VIEW v1
DROP VIEW IF EXISTS v1
Anoniem blok anonymous-block
Een anoniem blok bestaat uit twee secties: uitvoerbaar en uitzondering-behandelend secties. In een anoniem blok, is de uitvoerbare sectie verplicht. De sectie voor de afhandeling van uitzonderingen is echter optioneel.
In het volgende voorbeeld ziet u hoe u een blok maakt met een of meer instructies die samen moeten worden uitgevoerd:
$$BEGIN
statementList
[EXCEPTION exceptionHandler]
$$END
exceptionHandler:
WHEN OTHER
THEN statementList
statementList:
: (statement (';')) +
Hieronder ziet u een voorbeeld waarin anonieme blokken worden gebruikt.
$$BEGIN
SET @v_snapshot_from = select parent_id from (select history_meta('email_tracking_experience_event_dataset') ) tab where is_current;
SET @v_snapshot_to = select snapshot_id from (select history_meta('email_tracking_experience_event_dataset') ) tab where is_current;
SET @v_log_id = select now();
CREATE TABLE tracking_email_id_incrementally
AS SELECT _id AS id FROM email_tracking_experience_event_dataset SNAPSHOT BETWEEN @v_snapshot_from AND @v_snapshot_to;
EXCEPTION
WHEN OTHER THEN
DROP TABLE IF EXISTS tracking_email_id_incrementally;
SELECT 'ERROR';
$$END;
Voorwaardelijke instructies in een anoniem blok conditional-anonymous-block-statements
De IF-THEN-ELSE controlestructuur laat de voorwaardelijke uitvoering van een lijst van verklaringen toe wanneer een voorwaarde als WAAR wordt geëvalueerd. Deze controlestructuur is alleen van toepassing binnen een anoniem blok. Als deze structuur als standalone bevel wordt gebruikt, resulteert het in een syntaxisfout ("Ongeldig bevel buiten Anoniem Blok").
Het codefragment hieronder demonstreert de juiste indeling voor een voorwaardelijke instructie IF-THEN-ELSE in een anoniem blok.
IF booleanExpression THEN
List of statements;
ELSEIF booleanExpression THEN
List of statements;
ELSEIF booleanExpression THEN
List of statements;
ELSE
List of statements;
END IF
Voorbeeld
In het onderstaande voorbeeld wordt SELECT 200;
uitgevoerd.
$$BEGIN
SET @V = SELECT 2;
SELECT @V;
IF @V = 1 THEN
SELECT 100;
ELSEIF @V = 2 THEN
SELECT 200;
ELSEIF @V = 3 THEN
SELECT 300;
ELSE
SELECT 'DEFAULT';
END IF;
END$$;
Deze structuur kan met raise_error();
worden gebruikt om een aangepast foutbericht te retourneren. Het codeblok dat hieronder wordt weergegeven, eindigt het anonieme blok met 'aangepast foutbericht'.
Voorbeeld
$$BEGIN
SET @V = SELECT 5;
SELECT @V;
IF @V = 1 THEN
SELECT 100;
ELSEIF @V = 2 THEN
SELECT 200;
ELSEIF @V = 3 THEN
SELECT 300;
ELSE
SELECT raise_error('custom error message');
END IF;
END$$;
Geneste IF-instructies
Geneste IF-instructies worden ondersteund binnen anonieme blokken.
Voorbeeld
$$BEGIN
SET @V = SELECT 1;
IF @V = 1 THEN
SELECT 100;
IF @V > 0 THEN
SELECT 1000;
END IF;
END IF;
END$$;
Uitzonderingsblokken
Uitzonderingsblokken worden ondersteund binnen anonieme blokken.
Voorbeeld
$$BEGIN
SET @V = SELECT 2;
IF @V = 1 THEN
SELECT 100;
ELSEIF @V = 2 THEN
SELECT raise_error(concat('custom-error for v= ', '@V' ));
ELSEIF @V = 3 THEN
SELECT 300;
ELSE
SELECT 'DEFAULT';
END IF;
EXCEPTION WHEN OTHER THEN
SELECT 'THERE WAS AN ERROR';
END$$;
Automatisch naar JSON auto-to-json
De Dienst van de vraag steunt een facultatieve zitting-vlakke instelling om complexe gebieden van het hoogste niveau van interactieve UITGEZOCHTE vragen als koorden van JSON terug te keren. Met de instelling auto_to_json
kunnen gegevens van complexe velden worden geretourneerd als JSON en vervolgens in JSON-objecten worden geparseerd met behulp van standaardbibliotheken.
STEL de functiemarkering auto_to_json
in op true voordat u de SELECT-query met complexe velden uitvoert.
set auto_to_json=true;
Voordat u de markering auto_to_json
instelt
De volgende tabel bevat een voorbeeld van een queryresultaat voordat de instelling auto_to_json
wordt toegepast. In beide scenario's werd dezelfde SELECT-query (zoals hieronder wordt weergegeven) gebruikt die een tabel met complexe velden als doel had.
SELECT * FROM TABLE_WITH_COMPLEX_FIELDS LIMIT 2;
De resultaten zijn als volgt:
_id | _experience | application | commerce | dataSource | device | endUserIDs | environment | identityMap | placeContext | receivedTimestamp | timestamp | userActivityRegion | web | _adcstageforpqs
-----------------------------------+----------------------------------------------------------------------------+--------------+----------------------------------------------+------------+--------------------------------------------------------------------+--------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------+-------------------------------------------------------------------------+-----------------------+-----------------------+--------------------+--------------------------------------------------------------------------------------+-----------------
31892EE15DE00000-401D52664FF48A52 | ("("("(1,1)","(1,1)")","(-209479095,4085488201,-2105158467,2189808829)")") | (background) | (NULL,"(USD,NULL)",NULL,NULL,NULL,NULL,NULL) | (475341) | (32,768,1024,205202,https://ns.adobe.com/xdm/external/deviceatlas) | ("("(31892EE080007B35-E6CE00000000000,"(AAID)",t)")") | ("(en-US,f,f,t,1.6,"Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; ja-jp) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7",490,1125)",xo.net,64.3.235.13) | [AAID -> "{(31892EE080007B35-E6CE00000000000,t)}"] | ("("(34.01,-84.0)",lawrenceville,US,524,30043,ga)",600) | 2022-09-02 19:47:14.0 | 2022-09-02 19:47:14.0 | (UT1) | ("(f,Search Results,"(1.0)")","(http://www.google.com/search?ie=UTF-8&q=,internal)") |
31892EE15DE00000-401B92664FF48AE8 | ("("("(1,1)","(1,1)")","(-209479095,4085488201,-2105158467,2189808829)")") | (background) | (NULL,"(USD,NULL)",NULL,NULL,NULL,NULL,NULL) | (475341) | (32,768,1024,205202,https://ns.adobe.com/xdm/external/deviceatlas) | ("("(31892EE100007BF3-215FE00000000001,"(AAID)",t)")") | ("(en-US,f,f,t,1.5,"Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; ja-jp) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7",768,556)",ntt.net,219.165.108.145) | [AAID -> "{(31892EE100007BF3-215FE00000000001,t)}"] | ("("(34.989999999999995,138.42)",shizuoka,JP,392005,420-0812,22)",-240) | 2022-09-02 19:47:14.0 | 2022-09-02 19:47:14.0 | (UT1) | ("(f,Home - JJEsquire,"(1.0)")","(NULL,typed_bookmarked)") |
(2 rows)
Na het instellen van de markering auto_to_json
In de volgende tabel ziet u het verschil in resultaten dat de instelling auto_to_json
heeft op de resulterende gegevensset. Dezelfde SELECT-query werd in beide scenario's gebruikt.
_id | receivedTimestamp | timestamp | _experience | application | commerce | dataSource | device | endUserIDs | environment | identityMap | placeContext | userActivityRegion | web | _adcstageforpqs
-----------------------------------+-----------------------+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------+----------------------------------+------------------+-------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------
31892EE15DE00000-401D52664FF48A52 | 2022-09-02 19:47:14.0 | 2022-09-02 19:47:14.0 | {"analytics":{"customDimensions":{"eVars":{"eVar1":"1","eVar2":"1"},"props":{"prop1":"1","prop2":"1"}},"environment":{"browserID":-209479095,"browserIDStr":"4085488201","operatingSystemID":-2105158467,"operatingSystemIDStr":"2189808829"}}} | {"userPerspective":"background"} | {"order":{"currencyCode":"USD"}} | {"_id":"475341"} | {"colorDepth":32,"screenHeight":768,"screenWidth":1024,"typeID":"205202","typeIDService":"https://ns.adobe.com/xdm/external/deviceatlas"} | {"_experience":{"aaid":{"id":"31892EE080007B35-E6CE00000000000","namespace":{"code":"AAID"},"primary":true}}} | {"browserDetails":{"acceptLanguage":"en-US","cookiesEnabled":false,"javaEnabled":false,"javaScriptEnabled":true,"javaScriptVersion":"1.6","userAgent":"Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; ja-jp) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7","viewportHeight":490,"viewportWidth":1125},"domain":"xo.net","ipV4":"64.3.235.13"} | {"AAID":[{"id":"31892EE080007B35-E6CE00000000000","primary":true}]} | {"geo":{"_schema":{"latitude":34.01,"longitude":-84.0},"city":"lawrenceville","countryCode":"US","dmaID":524,"postalCode":"30043","stateProvince":"ga"},"localTimezoneOffset":600} | {"dataCenterLocation":"UT1"} | {"webPageDetails":{"isHomePage":false,"name":"Search Results","pageViews":{"value":1.0}},"webReferrer":{"URL":"http://www.google.com/search?ie=UTF-8&q=","type":"internal"}} |
31892EE15DE00000-401B92664FF48AE8 | 2022-09-02 19:47:14.0 | 2022-09-02 19:47:14.0 | {"analytics":{"customDimensions":{"eVars":{"eVar1":"1","eVar2":"1"},"props":{"prop1":"1","prop2":"1"}},"environment":{"browserID":-209479095,"browserIDStr":"4085488201","operatingSystemID":-2105158467,"operatingSystemIDStr":"2189808829"}}} | {"userPerspective":"background"} | {"order":{"currencyCode":"USD"}} | {"_id":"475341"} | {"colorDepth":32,"screenHeight":768,"screenWidth":1024,"typeID":"205202","typeIDService":"https://ns.adobe.com/xdm/external/deviceatlas"} | {"_experience":{"aaid":{"id":"31892EE100007BF3-215FE00000000001","namespace":{"code":"AAID"},"primary":true}}} | {"browserDetails":{"acceptLanguage":"en-US","cookiesEnabled":false,"javaEnabled":false,"javaScriptEnabled":true,"javaScriptVersion":"1.5","userAgent":"Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; ja-jp) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7","viewportHeight":768,"viewportWidth":556},"domain":"ntt.net","ipV4":"219.165.108.145"} | {"AAID":[{"id":"31892EE100007BF3-215FE00000000001","primary":true}]} | {"geo":{"_schema":{"latitude":34.989999999999995,"longitude":138.42},"city":"shizuoka","countryCode":"JP","dmaID":392005,"postalCode":"420-0812","stateProvince":"22"},"localTimezoneOffset":-240} | {"dataCenterLocation":"UT1"} | {"webPageDetails":{"isHomePage":false,"name":"Home - JJEsquire","pageViews":{"value":1.0}},"webReferrer":{"type":"typed_bookmarked"}} |
(2 rows)
Resolve fallback snapshot on failure resolve-fallback-snapshot-on-failure
De optie resolve_fallback_snapshot_on_failure
wordt gebruikt om het probleem van een verlopen opname-id op te lossen.
Stel de optie resolve_fallback_snapshot_on_failure
in op true als u een opname wilt overschrijven met een vorige opname-id.
SET resolve_fallback_snapshot_on_failure=true;
De volgende coderegel overschrijft de @from_snapshot_id
met de oudste beschikbare snapshot_id
op basis van metagegevens.
$$ BEGIN
SET resolve_fallback_snapshot_on_failure=true;
SET @from_snapshot_id = SELECT coalesce(last_snapshot_id, 'HEAD') FROM checkpoint_log a JOIN
(SELECT MAX(process_timestamp)process_timestamp FROM checkpoint_log
WHERE process_name = 'DIM_TABLE_ABC' AND process_status = 'SUCCESSFUL' )b
on a.process_timestamp=b.process_timestamp;
SET @to_snapshot_id = SELECT snapshot_id FROM (SELECT history_meta('DIM_TABLE_ABC')) WHERE is_current = true;
SET @last_updated_timestamp= SELECT CURRENT_TIMESTAMP;
INSERT INTO DIM_TABLE_ABC_Incremental
SELECT * FROM DIM_TABLE_ABC SNAPSHOT BETWEEN @from_snapshot_id AND @to_snapshot_id WHERE NOT EXISTS (SELECT _id FROM DIM_TABLE_ABC_Incremental a WHERE _id=a._id);
Insert Into
checkpoint_log
SELECT
'DIM_TABLE_ABC' process_name,
'SUCCESSFUL' process_status,
cast( @to_snapshot_id AS string) last_snapshot_id,
cast( @last_updated_timestamp AS TIMESTAMP) process_timestamp;
EXCEPTION
WHEN OTHER THEN
SELECT 'ERROR';
END
$$;
Gegevensmiddelenorganisatie
Het is belangrijk om uw gegevensactiva logisch te organiseren binnen het gegevenshoop van Adobe Experience Platform aangezien zij groeien. De Dienst van de vraag breidt SQL constructies uit die u toelaten om gegevensactiva binnen een zandbak logisch gezien te groeperen. Deze organisatiemethode staat voor het delen van gegevensactiva tussen schema's toe zonder de behoefte om hen fysiek te bewegen.
De volgende SQL-constructies die gebruikmaken van de standaard SQL-syntaxis, worden ondersteund voor het logisch organiseren van uw gegevens.
CREATE DATABASE dg1;
CREATE SCHEMA dg1.schema1;
CREATE table t1 ...;
CREATE view v1 ...;
ALTER TABLE t1 ADD PRIMARY KEY (c1) NOT ENFORCED;
ALTER TABLE t2 ADD FOREIGN KEY (c1) REFERENCES t1(c1) NOT ENFORCED;
Zie de logische organisatie van gegevensactivagids voor een meer gedetailleerde verklaring over de beste praktijken van de Dienst van de Vraag.
Tabel bestaat
De SQL-opdracht table_exists
wordt gebruikt om te bevestigen of een tabel momenteel in het systeem bestaat. Het bevel keert een booleaanse waarde terug: true
als de lijst bestaat, en false
als de lijst niet bestaat.
Door te controleren of een tabel bestaat voordat de instructies worden uitgevoerd, vereenvoudigt de functie table_exists
het schrijven van een anoniem blok, zodat zowel de gebruiksgevallen CREATE
als INSERT INTO
worden behandeld.
De volgende syntaxis definieert de opdracht table_exists
:
$$
BEGIN
#Set mytableexist to true if the table already exists.
SET @mytableexist = SELECT table_exists('target_table_name');
#Create the table if it does not already exist (this is a one time operation).
CREATE TABLE IF NOT EXISTS target_table_name AS
SELECT *
FROM profile_dim_date limit 10;
#Insert data only if the table already exists. Check if @mytableexist = 'true'
INSERT INTO target_table_name (
select *
from profile_dim_date
WHERE @mytableexist = 'true' limit 20
) ;
EXCEPTION
WHEN other THEN SELECT 'ERROR';
END $$;
Inline inline
De functie inline
scheidt de elementen van een array van structs en genereert de waarden in een tabel. Deze kan alleen in de lijst SELECT
of een LATERAL VIEW
worden geplaatst.
De inline
functie kan niet in een uitgezochte lijst worden geplaatst waar er andere generatorfuncties zijn.
Door gebrek, worden de geproduceerde kolommen genoemd "col1", "col2", etc. Als de expressie NULL
is, worden geen rijen gemaakt.
RENAME
.Voorbeeld
> SELECT inline(array(struct(1, 'a'), struct(2, 'b'))), 'Spark SQL';
In het voorbeeld wordt het volgende geretourneerd:
1 a Spark SQL
2 b Spark SQL
In dit tweede voorbeeld wordt verder het concept en de toepassing van de functie inline
getoond. Het gegevensmodel voor het voorbeeld wordt in de onderstaande afbeelding weergegeven.
Voorbeeld
select inline(productListItems) from source_dataset limit 10;
De waarden die uit source_dataset
zijn opgehaald, worden gebruikt om de doeltabel te vullen.
SET
De opdracht SET
stelt een eigenschap in en retourneert de waarde van een bestaande eigenschap of geeft alle bestaande eigenschappen weer. Als een waarde wordt opgegeven voor een bestaande eigenschapsleutel, wordt de oude waarde overschreven.
SET property_key = property_value
property_key
property_value
Als u de waarde voor een instelling wilt retourneren, gebruikt u SET [property key]
zonder een property_value
.
PostgreSQL opdrachten
De subsecties hieronder behandelen de PostgreSQL bevelen die door de Dienst van de Vraag worden gesteund.
TABEL ANALYSEREN analyze-table
De opdracht ANALYZE TABLE
voert een distributieanalyse en statistische berekeningen uit voor de benoemde tabel of tabellen. Het gebruik van ANALYZE TABLE
varieert afhankelijk van of de datasets op de versnelde opslagof het gegevens meerworden opgeslagen. Zie de desbetreffende secties voor meer informatie over het gebruik ervan.
COMPUTE STATISTIEKEN OP DE versnelde opslag compute-statistics-accelerated-store
Met de opdracht ANALYZE TABLE
worden statistieken voor een tabel in de versnelde opslag berekend. De statistieken worden berekend over uitgevoerde vragen CTAS of ITAS voor een bepaalde lijst op de versnelde opslag.
Voorbeeld
ANALYZE TABLE <original_table_name>
Hieronder volgt een lijst met statistische berekeningen die beschikbaar zijn na gebruik van de opdracht ANALYZE TABLE
:-
field
data-type
count
distinct-count
missing
max
min
mean
stdev
STATISTIEKEN COMPUTEREN op het datumpeer compute-statistics-data-lake
U kunt nu statistieken op kolomniveau over Azure Data Lake Storage (ADLS)-gegevenssets berekenen met de SQL-opdracht COMPUTE STATISTICS
. Bereid kolomstatistieken over of de volledige dataset, een ondergroep van een dataset, alle kolommen, of een ondergroep van kolommen samen.
COMPUTE STATISTICS
breidt de opdracht ANALYZE TABLE
uit. De opdrachten COMPUTE STATISTICS
, FILTERCONTEXT
en FOR COLUMNS
worden echter niet ondersteund in versnelde winkeltabellen. Deze extensies voor de opdracht ANALYZE TABLE
worden momenteel alleen ondersteund voor ADLS-tabellen.
Voorbeeld
ANALYZE TABLE tableName FILTERCONTEXT (timestamp >= to_timestamp('2023-04-01 00:00:00') and timestamp <= to_timestamp('2023-04-05 00:00:00')) COMPUTE STATISTICS FOR COLUMNS (commerce, id, timestamp);
De opdracht FILTER CONTEXT
berekent statistieken over een subset van de gegevensset op basis van de opgegeven filtervoorwaarde. De opdracht FOR COLUMNS
richt zich op specifieke kolommen voor analyse.
Statistics ID
en de gegenereerde statistieken zijn alleen geldig voor elke sessie en kunnen niet worden geopend voor verschillende PSQL-sessies.Beperkingen:
- Het genereren van statistieken wordt niet ondersteund voor array- of kaartgegevenstypen
- De gegevens verwerkte statistieken zijn niet voortgeduurd over zittingen.
skip_stats_for_complex_datatypes
SET skip_stats_for_complex_datatypes = false
De uitvoer van de console wordt weergegeven zoals hieronder wordt weergegeven.
| Statistics ID |
| ---------------------- |
| adc_geometric_stats_1 |
(1 row)
Vervolgens kunt u de berekende statistieken rechtstreeks opvragen door naar de Statistics ID
te verwijzen. Gebruik de naam Statistics ID
of de naam van de alias, zoals hieronder in de voorbeeldinstructie wordt getoond, om de uitvoer volledig weer te geven. Meer over deze eigenschap leren, zie de documentatie van de aliasnaam.
-- This statement gets the statistics generated for `alias adc_geometric_stats_1`.
SELECT * FROM adc_geometric_stats_1;
Gebruik de opdracht SHOW STATISTICS
om de metagegevens weer te geven voor alle tijdelijke statistieken die in de sessie worden gegenereerd. Met deze opdracht kunt u het bereik van uw statistische analyse verfijnen.
SHOW STATISTICS;
Hieronder ziet u een voorbeelduitvoer van SHOW STATISTICS.
statsId | tableName | columnSet | filterContext | timestamp
----------------------+---------------+-----------+-----------------------------+--------------------
adc_geometric_stats_1 | adc_geometric | (age) | | 25/06/2023 09:22:26
demo_table_stats_1 | demo_table | (*) | ((age > 25)) | 25/06/2023 12:50:26
age_stats | castedtitanic | (age) | ((age > 25) AND (age < 40)) | 25/06/2023 09:22:26
Zie de documentatie van de datasetstatistiekenvoor meer informatie.
TABLESAMPLE tablesample
De Dienst van de Vraag van Adobe Experience Platform verstrekt steekproefdatasets als deel van zijn benaderende mogelijkheden van de vraagverwerking.
Gegevenssetvoorbeelden kunnen het best worden gebruikt wanneer u geen exact antwoord nodig hebt voor een geaggregeerde bewerking via een gegevensset. Om efficiëntere verkennende vragen op grote datasets te leiden door een benaderende vraag uit te geven om een benaderend antwoord terug te keren, gebruik de TABLESAMPLE
eigenschap.
De datasets van de steekproef worden gecreeerd met eenvormige willekeurige steekproeven van bestaande Azure Data Lake Storage (ADLS) datasets, gebruikend slechts een percentage verslagen van origineel. De voorbeeldfunctie van de gegevensset breidt de opdracht ANALYZE TABLE
uit met de SQL-opdrachten TABLESAMPLE
en SAMPLERATE
.
In het onderstaande voorbeeld demonstreert regel 1 hoe u een 5%-monster van de tabel berekent. Regel twee toont aan hoe te om een 5% steekproef van een gefilterde mening van de gegevens binnen de lijst te berekenen.
Voorbeeld
ANALYZE TABLE tableName TABLESAMPLE SAMPLERATE 5;
ANALYZE TABLE tableName FILTERCONTEXT (timestamp >= to_timestamp('2023-01-01')) TABLESAMPLE SAMPLERATE 5:
Zie de documentatie van de datasetsteekproevenvoor meer informatie.
BEGINNEN
Met de opdracht BEGIN
of de opdracht BEGIN WORK
of BEGIN TRANSACTION
wordt een transactiekanaal gestart. Om het even welke verklaringen die na het begin bevel worden ingevoerd zullen in één enkele transactie worden uitgevoerd tot een expliciete COMMIT of bevel ROLLBACK wordt gegeven. Deze opdracht is hetzelfde als START TRANSACTION
.
BEGIN
BEGIN WORK
BEGIN TRANSACTION
SLUITEN
Met de opdracht CLOSE
maakt u de bronnen vrij die aan een open cursor zijn gekoppeld. Nadat de cursor is gesloten, zijn er geen verdere bewerkingen meer toegestaan. Een cursor moet worden gesloten wanneer deze niet meer nodig is.
CLOSE name
CLOSE ALL
Als CLOSE name
wordt gebruikt, vertegenwoordigt name
de naam van een open curseur die moet worden gesloten. Als CLOSE ALL
wordt gebruikt, worden alle open cursors gesloten.
VERWIJDEREN
Als u een eerder voorbereide SQL-instructie wilt zoeken, gebruikt u de opdracht DEALLOCATE
. Als u niet expliciet een voorbereide instructie hebt gedistribueerd, wordt de toewijzing ongedaan gemaakt wanneer de sessie wordt beëindigd. Meer informatie over voorbereide verklaringen kan in de bevelPREPAREsectie worden gevonden.
DEALLOCATE name
DEALLOCATE ALL
Als DEALLOCATE name
wordt gebruikt, vertegenwoordigt name
de naam van de voorbereide instructie die moet worden gedeallocatie. Als DEALLOCATE ALL
wordt gebruikt, worden alle voorbereide instructies gedeallocatie.
VERKLAREN
Met de opdracht DECLARE
kan de gebruiker een cursor maken die kan worden gebruikt om een klein aantal rijen op te halen uit een grotere query. Nadat de cursor is gemaakt, worden er rijen van opgehaald met FETCH
.
DECLARE name CURSOR FOR query
name
query
SELECT
of VALUES
die de rijen bevat die door de cursor moeten worden geretourneerd.UITVOEREN
De opdracht EXECUTE
wordt gebruikt om een eerder voorbereide instructie uit te voeren. Aangezien voorbereide instructies alleen tijdens een sessie bestaan, moet de voorbereide instructie zijn gemaakt met een instructie PREPARE
die eerder in de huidige sessie is uitgevoerd. Meer informatie over het gebruik van voorbereide instructies vindt u in de sectie PREPARE
command.
Als de instructie PREPARE
die de instructie heeft gemaakt enkele parameters heeft opgegeven, moet een compatibele set parameters worden doorgegeven aan de instructie EXECUTE
. Als deze parameters niet worden doorgegeven, treedt een fout op.
EXECUTE name [ ( parameter ) ]
name
parameter
VERKLAREN
Met de opdracht EXPLAIN
geeft u het uitvoeringsplan voor de opgegeven instructie weer. Het uitvoeringsplan toont hoe de tabellen waarnaar door de instructie wordt verwezen, worden gescand. Als er naar meerdere tabellen wordt verwezen, wordt aangegeven welke samenvoegalgoritmen worden gebruikt om de vereiste rijen van elke invoertabel samen te voegen.
EXPLAIN statement
Als u de indeling van de reactie wilt definiëren, gebruikt u het trefwoord FORMAT
met de opdracht EXPLAIN
.
EXPLAIN FORMAT { TEXT | JSON } statement
FORMAT
FORMAT
om de uitvoerindeling op te geven. De beschikbare opties zijn TEXT
of JSON
. Niet-tekstuele uitvoer bevat dezelfde informatie als de indeling voor tekstuitvoer, maar kan gemakkelijker door programma's worden geparseerd. Deze parameter is standaard ingesteld op TEXT
.statement
SELECT
, INSERT
, UPDATE
, DELETE
, VALUES
, EXECUTE
, DECLARE
, CREATE TABLE AS
of CREATE MATERIALIZED VIEW AS
waarvan u het uitvoeringsplan wilt zien.SELECT
retourneert, wordt genegeerd wanneer deze wordt uitgevoerd met het trefwoord EXPLAIN
. Andere bijwerkingen van de instructie treden op zoals gebruikelijk.Voorbeeld
In het volgende voorbeeld wordt het plan getoond voor een eenvoudige query op een tabel met één integer
-kolom en 10000-rijen:
EXPLAIN SELECT * FROM foo;
QUERY PLAN
---------------------------------------------------------
Seq Scan on foo (dataSetId = "6307eb92f90c501e072f8457", dataSetName = "foo") [0,1000000242,6973776840203d3d,6e616c58206c6153,6c6c6f430a3d4d20,74696d674c746365]
(1 row)
FETCH
Met de opdracht FETCH
haalt u rijen op met behulp van een eerder gemaakte cursor.
FETCH num_of_rows [ IN | FROM ] cursor_name
num_of_rows
cursor_name
PREPARE prepare
Met de opdracht PREPARE
kunt u een voorbereide instructie maken. Een voorbereide instructie is een object aan de serverzijde dat kan worden gebruikt om vergelijkbare SQL-instructies te sjablonen.
Bereide instructies kunnen parameters hebben. Dit zijn waarden die in de instructie worden vervangen wanneer deze wordt uitgevoerd. De parameters worden bedoeld door positie, gebruikend $1, $2, etc., wanneer het gebruiken van voorbereide verklaringen.
U kunt ook een lijst met parametergegevenstypen opgeven. Als het gegevenstype van een parameter niet wordt vermeld, kan het type van de context worden afgeleid.
PREPARE name [ ( data_type [, ...] ) ] AS SELECT
name
data_type
ROLLBACK
De opdracht ROLLBACK
maakt de huidige transactie ongedaan en verwijdert alle updates die door de transactie zijn aangebracht.
ROLLBACK
ROLLBACK WORK
SELECTEREN IN
Met de opdracht SELECT INTO
maakt u een nieuwe tabel en vult u deze met gegevens die door een query zijn berekend. De gegevens worden niet aan de client geretourneerd, omdat deze een normale opdracht SELECT
hebben. De kolommen van de nieuwe lijst hebben de namen en de gegevenstypes verbonden aan de outputkolommen van het SELECT
bevel.
[ WITH [ RECURSIVE ] with_query [, ...] ]
SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]
* | expression [ [ AS ] output_name ] [, ...]
INTO [ TEMPORARY | TEMP | UNLOGGED ] [ TABLE ] new_table
[ FROM from_item [, ...] ]
[ WHERE condition ]
[ GROUP BY expression [, ...] ]
[ HAVING condition [, ...] ]
[ WINDOW window_name AS ( window_definition ) [, ...] ]
[ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ]
[ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]
[ LIMIT { count | ALL } ]
[ OFFSET start [ ROW | ROWS ] ]
[ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]
[ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]
Meer informatie over de standaard UITGEZOCHTE vraagparameters kan in de UITGEZOCHTE vraagsectieworden gevonden. Deze sectie bevat alleen parameters die exclusief zijn voor de opdracht SELECT INTO
.
TEMPORARY
of TEMP
UNLOGGED
new_table
Voorbeeld
Met de volgende query wordt een nieuwe tabel films_recent
gemaakt die alleen bestaat uit recente items in de tabel films
:
SELECT * INTO films_recent FROM films WHERE date_prod >= '2002-01-01';
TONEN
De opdracht SHOW
geeft de huidige instelling van runtimeparameters weer. Deze variabelen kunnen worden ingesteld met de instructie SET
, door het configuratiebestand van postgresql.conf
te bewerken, via de omgevingsvariabele PGOPTIONS
(bij het gebruik van libpq of een libpq-toepassing) of via opdrachtregelmarkeringen wanneer de Postgres-server wordt gestart.
SHOW name
SHOW ALL
name
SERVER_VERSION
: Deze parameter toont het de versieaantal van de server.SERVER_ENCODING
: deze parameter toont de codering van de tekenset aan de serverzijde.LC_COLLATE
: deze parameter toont de landinstelling van de database voor sortering (tekstvolgorde).LC_CTYPE
: deze parameter toont de landinstelling van de database voor tekenclassificatie.IS_SUPERUSER
: Deze parameter laat zien of de huidige rol supergebruikersrechten heeft.ALL
Voorbeeld
De volgende query toont de huidige instelling van de parameter DateStyle
.
SHOW DateStyle;
DateStyle
-----------
ISO, MDY
(1 row)
KOPIE
Met de opdracht COPY
wordt de uitvoer van een SELECT
-query naar een opgegeven locatie gedupliceerd. Deze opdracht is alleen succesvol als de gebruiker toegang heeft tot deze locatie.
COPY query
TO '%scratch_space%/folder_location'
[ WITH FORMAT 'format_name']
query
format_name
format_name
kan een van parquet
, csv
of json
zijn. De standaardwaarde is parquet
.adl://<ADLS_URI>/users/<USER_ID>/acp_foundation_queryService/folder_location/<QUERY_ID>
ALTER TABLE alter-table
Met de opdracht ALTER TABLE
kunt u primaire of buitenlandse toetsbeperkingen toevoegen of neerzetten en kolommen aan de tabel toevoegen.
BEPERKING TOEVOEGEN OF VERWIJDEREN
De volgende SQL-query's geven voorbeelden van het toevoegen of neerzetten van beperkingen aan een tabel. De primaire sleutel en de buitenlandse zeer belangrijke beperkingen kunnen aan veelvoudige kolommen met komma-gescheiden waarden worden toegevoegd. U kunt samengestelde sleutels tot stand brengen door twee of meer kolomnaamwaarden over te gaan zoals die in de voorbeelden hieronder worden gezien.
bepalen primaire of samengestelde sleutels
ALTER TABLE table_name ADD CONSTRAINT PRIMARY KEY ( column_name ) NAMESPACE namespace
ALTER TABLE table_name ADD CONSTRAINT PRIMARY KEY ( column_name1, column_name2 ) NAMESPACE namespace
bepaalt een verband tussen lijsten die op één of meerdere sleutels worden gebaseerd
ALTER TABLE table_name ADD CONSTRAINT FOREIGN KEY ( column_name ) REFERENCES referenced_table_name ( primary_column_name )
ALTER TABLE table_name ADD CONSTRAINT FOREIGN KEY ( column_name1, column_name2 ) REFERENCES referenced_table_name ( primary_column_name1, primary_column_name2 )
bepaal een identiteitskolom
ALTER TABLE table_name ADD CONSTRAINT PRIMARY IDENTITY ( column_name ) NAMESPACE namespace
ALTER TABLE table_name ADD CONSTRAINT IDENTITY ( column_name ) NAMESPACE namespace
Daling een beperking/verhouding/identiteit
ALTER TABLE table_name DROP CONSTRAINT PRIMARY KEY ( column_name )
ALTER TABLE table_name DROP CONSTRAINT PRIMARY KEY ( column_name1, column_name2 )
ALTER TABLE table_name DROP CONSTRAINT FOREIGN KEY ( column_name )
ALTER TABLE table_name DROP CONSTRAINT FOREIGN KEY ( column_name1, column_name2 )
ALTER TABLE table_name DROP CONSTRAINT PRIMARY IDENTITY ( column_name )
ALTER TABLE table_name DROP CONSTRAINT IDENTITY ( column_name )
table_name
column_name
referenced_table_name
primary_column_name
Primaire en secundaire identiteiten toevoegen of verwijderen
Als u beperkingen voor zowel de kolommen van de primaire als de secundaire identiteitstabel wilt toevoegen of verwijderen, gebruikt u de opdracht ALTER TABLE
.
De volgende voorbeelden voegen een primaire identiteit en een secundaire identiteit toe door beperkingen toe te voegen.
ALTER TABLE t1 ADD CONSTRAINT PRIMARY IDENTITY (id) NAMESPACE 'IDFA';
ALTER TABLE t1 ADD CONSTRAINT IDENTITY(id) NAMESPACE 'IDFA';
Identiteiten kunnen ook worden verwijderd door beperkingen neer te zetten, zoals in het onderstaande voorbeeld wordt getoond.
ALTER TABLE t1 DROP CONSTRAINT PRIMARY IDENTITY (c1) ;
ALTER TABLE t1 DROP CONSTRAINT IDENTITY (c1) ;
Voor meer gedetailleerde informatie, zie het document over plaatsende identiteiten in een ad hoc datasets.
KOLOM TOEVOEGEN
De volgende SQL-query's geven voorbeelden van het toevoegen van kolommen aan een tabel.
ALTER TABLE table_name ADD COLUMN column_name data_type
ALTER TABLE table_name ADD COLUMN column_name_1 data_type1, column_name_2 data_type2
Ondersteunde gegevenstypen
In de volgende tabel worden de geaccepteerde gegevenstypen weergegeven voor het toevoegen van kolommen aan een tabel met Postgres SQL , XDM en Accelerated Database Recovery (ADR) in Azure SQL.
bigint
int8
bigint
integer
int4
integer
smallint
int2
smallint
tinyint
int1
tinyint
varchar(len)
string
varchar(len)
varchar
kan het best worden gebruikt wanneer de grootte van de ingevoerde kolomgegevens aanzienlijk kan variëren.double
float8
double precision
FLOAT8
en FLOAT
zijn geldige synoniemen voor DOUBLE PRECISION
. double precision
is een gegevenstype met drijvende komma. Zwevende-kommawaarden worden opgeslagen in 8 bytes.double precision
float8
double precision
FLOAT8
is een geldige synoniem voor double precision
.double precision
is een gegevenstype met drijvende komma. Zwevende-kommawaarden worden opgeslagen in 8 bytes.date
date
date
date
zijn 4-byte opgeslagen kalenderdatumwaarden zonder tijdstempelinformatie. De geldige datumnotatie loopt van 01-01-0001 tot en met 12-31-9999.datetime
datetime
datetime
datetime
bevat de kwalificatietekens: jaar, maand, dag, uur, seconde en fractie. Een declaratie datetime
kan elke subset van deze tijdseenheden bevatten die in die reeks zijn samengevoegd, of bestaat zelfs uit slechts één tijdseenheid.char(len)
string
char(len)
char(len)
wordt gebruikt om aan te geven dat het item een teken met een vaste lengte heeft.SCHEMA TOEVOEGEN
De volgende SQL-query toont een voorbeeld van het toevoegen van een tabel aan een database/schema.
ALTER TABLE table_name ADD SCHEMA database_name.schema_name
SCHEMA VERWIJDEREN
De volgende SQL-query toont een voorbeeld van het verwijderen van een tabel uit een database/schema.
ALTER TABLE table_name REMOVE SCHEMA database_name.schema_name
Parameters
table_name
column_name
data_type
PRIMAIRE TOETSEN TONEN
De opdracht SHOW PRIMARY KEYS
geeft een overzicht van alle primaire toetsbeperkingen voor de opgegeven database.
SHOW PRIMARY KEYS
tableName | columnName | datatype | namespace
------------------+----------------------+----------+-----------
table_name_1 | column_name1 | text | "ECID"
table_name_2 | column_name2 | text | "AAID"
BUITENLANDSE TOETSEN TONEN
De opdracht SHOW FOREIGN KEYS
geeft een overzicht van alle externe toetsbeperkingen voor de opgegeven database.
SHOW FOREIGN KEYS
tableName | columnName | datatype | referencedTableName | referencedColumnName | namespace
------------------+---------------------+----------+---------------------+----------------------+-----------
table_name_1 | column_name1 | text | table_name_3 | column_name3 | "ECID"
table_name_2 | column_name2 | text | table_name_4 | column_name4 | "AAID"
DATAGROEPEN TONEN
De opdracht SHOW DATAGROUPS
retourneert een tabel met alle bijbehorende databases. Voor elke database bevat de tabel een schema, groepstype, onderliggend type, onderliggende naam en onderliggende id.
SHOW DATAGROUPS
Database | Schema | GroupType | ChildType | ChildName | ChildId
-------------+-------------------+-----------+----------------------+----------------------------------------------------+--------------------------------------
adls_db | adls_scheema | ADLS | Data Lake Table | adls_table1 | 6149ff6e45cfa318a76ba6d3
adls_db | adls_scheema | ADLS | Accelerated Store | _table_demo1 | 22df56cf-0790-4034-bd54-d26d55ca6b21
adls_db | adls_scheema | ADLS | View | adls_view1 | c2e7ddac-d41c-40c5-a7dd-acd41c80c5e9
adls_db | adls_scheema | ADLS | View | adls_view4 | b280c564-df7e-405f-80c5-64df7ea05fc3
DATAGROEPEN TONEN VOOR tabel
De opdracht SHOW DATAGROUPS FOR 'table_name'
retourneert een tabel met alle gekoppelde databases die de parameter als onderliggend element bevatten. Voor elke database bevat de tabel een schema, groepstype, onderliggend type, onderliggende naam en onderliggende id.
SHOW DATAGROUPS FOR 'table_name'
Parameters
table_name
: De naam van de tabel waarvoor u gekoppelde databases wilt zoeken.
Database | Schema | GroupType | ChildType | ChildName | ChildId
-------------+-------------------+-----------+----------------------+----------------------------------------------------+--------------------------------------
dwh_db_demo | schema2 | QSACCEL | Accelerated Store | _table_demo2 | d270f704-0a65-4f0f-b3e6-cb535eb0c8ce
dwh_db_demo | schema1 | QSACCEL | Accelerated Store | _table_demo2 | d270f704-0a65-4f0f-b3e6-cb535eb0c8ce
qsaccel | profile_aggs | QSACCEL | Accelerated Store | _table_demo2 | d270f704-0a65-4f0f-b3e6-cb535eb0c8ce