SQL-syntax i Query Service

Du kan använda ANSI SQL som standard för SELECT -programsatser och andra begränsade kommandon i Adobe Experience Platform Query Service. Det här dokumentet innehåller SQL-syntaxen som stöds av Query Service.

SELECT-frågor select-queries

Följande syntax definierar en SELECT fråga som stöds av 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 ]

I flikavsnittet nedan finns tillgängliga alternativ för nyckelorden FROM, GROUP och WITH…

`from_item`
code language-sql
table_name [ * ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
code language-sql
[ LATERAL ] ( select ) [ AS ] alias [ ( column_alias [, ...] ) ]
code language-sql
with_query_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
code language-sql
from_item [ NATURAL ] join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ]
`grouping_element`
code language-sql
( )
code language-sql
expression
code language-sql
( expression [, ...] )
code language-sql
ROLLUP ( { expression | ( expression [, ...] ) } [, ...] )
code language-sql
CUBE ( { expression | ( expression [, ...] ) } [, ...] )
code language-sql
GROUPING SETS ( grouping_element [, ...] )
`with_query`
code language-sql
 with_query_name [ ( column_name [, ...] ) ] AS ( select | values )

Följande underavsnitt innehåller information om ytterligare satser som du kan använda i dina frågor, förutsatt att de följer det format som beskrivs ovan.

SNAPSHOT-sats

Den här satsen kan användas för att stegvis läsa data i en tabell baserat på ID:n för ögonblicksbilder. Ett ID för en ögonblicksbild är en kontrollpunktsmarkör som representeras av ett Long-typnummer som används på en datarintabell varje gång data skrivs till den. The SNAPSHOT -satsen kopplas till den registerrelation som den används bredvid.

    [ SNAPSHOT { SINCE start_snapshot_id | AS OF end_snapshot_id | BETWEEN start_snapshot_id AND end_snapshot_id } ]

Exempel

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;

Tabellen nedan förklarar innebörden av varje syntaxalternativ i SNAPSHOT-satsen.

Syntax
Betydelse
SINCE start_snapshot_id
Läser data med början från det angivna ID:t för ögonblicksbild (exklusivt).
AS OF end_snapshot_id
Läser data som de var vid det angivna ögonblicksbild-ID:t (inklusive).
BETWEEN start_snapshot_id AND end_snapshot_id
Läser data mellan de angivna ID:n för ögonblicksbilder av start och slut. Den är exklusiv för start_snapshot_id och innehåller end_snapshot_id.
BETWEEN HEAD AND start_snapshot_id
Läser data från början (före den första ögonblicksbilden) till det angivna ID:t för ögonblicksbild (inklusive). Obs! Detta returnerar endast rader i start_snapshot_id.
BETWEEN end_snapshot_id AND TAIL
Läser data från strax efter den angivna end-snapshot_id till slutet av datauppsättningen (exklusive ögonblicksbilds-ID). Detta innebär att om end_snapshot_id är den sista ögonblicksbilden i datauppsättningen. Frågan returnerar nollrader eftersom det inte finns några ögonblicksbilder utöver den senaste ögonblicksbilden.
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
Läser data med början från det angivna ögonblicksbilds-ID:t från table_to_be_queried och sammanfogar den med data från table_to_be_joined som den var your_chosen_snapshot_id. Kopplingen baseras på matchande ID:n från ID-kolumnerna i de två tabellerna som kopplas.

A SNAPSHOT -satsen fungerar med en tabell eller ett tabellalias men inte ovanpå en underfråga eller vy. A SNAPSHOT -satsen fungerar var som helst SELECT fråga i en tabell kan tillämpas.

Du kan också använda HEAD och TAIL som särskilda förskjutningsvärden för ögonblicksbildssatser. Använda HEAD refererar till en förskjutning före den första ögonblicksbilden, medan TAIL refererar till en förskjutning efter den sista ögonblicksbilden.

NOTE
Om du frågar mellan två ögonblicksbild-ID:n kan följande två scenarier inträffa om startögonblicksbilden har gått ut och den valfria reservbeteendeflaggan (resolve_fallback_snapshot_on_failure) är inställt:
  • Om den valfria reservbeteendeflaggan är inställd väljer frågetjänsten den tidigaste tillgängliga ögonblicksbilden, anger den som startögonblicksbild och returnerar data mellan den tidigaste tillgängliga ögonblicksbilden och den angivna slutögonblicksbilden. Dessa data inkluderande av den tidigaste tillgängliga ögonblicksbilden.

WHERE-sats

Som standard används matchningar som skapats av en WHERE -sats på en SELECT -frågan är skiftlägeskänslig. Om du vill att matchningar ska vara skiftlägesokänsliga kan du använda nyckelordet ILIKE i stället för LIKE.

    [ WHERE condition { LIKE | ILIKE | NOT LIKE | NOT ILIKE } pattern ]

Logiken i LIKE- och ILIKE-klausulerna förklaras i följande tabell:

Klausul
Operatör
WHERE condition LIKE pattern
~~
WHERE condition NOT LIKE pattern
!~~
WHERE condition ILIKE pattern
~~*
WHERE condition NOT ILIKE pattern
!~~*

Exempel

SELECT * FROM Customers
WHERE CustomerName ILIKE 'a%';

Den här frågan returnerar kunder med namn som börjar på A eller a.

GÅ MED

A SELECT fråga som använder kopplingar har följande syntax:

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

UNION, INTERSECT, and EXCEPT

The UNION, INTERSECToch EXCEPT -satser används för att kombinera eller exkludera liknande rader från två eller flera tabeller:

SELECT statement 1
[UNION | UNION ALL | UNION DISTINCT | INTERSECT | EXCEPT | MINUS]
SELECT statement 2

SKAPA TABELL SOM MARKERAD create-table-as-select

Följande syntax definierar en CREATE TABLE AS SELECT (CTAS) fråga:

CREATE TABLE table_name [ WITH (schema='target_schema_title', rowvalidation='false', label='PROFILE') ] AS (select_query)
Parametrar
Beskrivning
schema
Titeln på XDM-schemat. Använd bara den här satsen om du vill använda ett befintligt XDM-schema för den nya datauppsättningen som skapas av CTAS-frågan.
rowvalidation
(Valfritt) Anger om användaren vill validera radnivån för varje ny uppsättning som hämtas för den nya datauppsättningen. Standardvärdet är true.
label
När du skapar en datauppsättning med en CTAS-fråga använder du den här etiketten med värdet profile för att märka datauppsättningen som aktiverad för profilen. Det innebär att din datauppsättning automatiskt markeras för profil när den skapas. Mer information om hur du använder finns i det härledda attributtilläggsdokumentet label.
select_query
A SELECT -programsats. Syntaxen för SELECT frågan finns i SELECT Queries section.

Exempel

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)
NOTE
The SELECT -programsats måste ha ett alias för sammanställningsfunktioner som COUNT, SUM, MINoch så vidare. Dessutom finns SELECT kan anges med eller utan parenteser (). Du kan ange en SNAPSHOT -sats för att läsa inkrementella deltas i måltabellen.

INFOGA I

The INSERT INTO kommandot definieras enligt följande:

INSERT INTO table_name select_query
Parametrar
Beskrivning
table_name
Namnet på tabellen som du vill infoga frågan i.
select_query
A SELECT -programsats. Syntaxen för SELECT frågan finns i SELECT Queries section.

Exempel

NOTE
Följande är ett intressant exempel som bara är till för instruktionsändamål.
INSERT INTO Customers SELECT SupplierName, City, Country FROM OnlineCustomers;

INSERT INTO Customers AS (SELECT * from OnlineCustomers SNAPSHOT AS OF 345)
INFO
Gör not omge SELECT inom parentes (). Schemat för resultatet av SELECT -programsatsen måste överensstämma med den tabell som definieras i INSERT INTO -programsats. Du kan ange en SNAPSHOT -sats för att läsa inkrementella deltas i måltabellen.

De flesta fält i ett riktigt XDM-schema hittas inte på rotnivå och SQL tillåter inte användning av punktnotation. För att få ett realistiskt resultat med kapslade fält måste du mappa varje fält i INSERT INTO bana.

Till INSERT INTO kapslade sökvägar använder du följande syntax:

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]

Exempel

INSERT INTO Customers SELECT struct(SupplierName as Supplier, City as SupplierCity, Country as SupplierCountry) _Adobe FROM OnlineCustomers;

DROP TABLE

The DROP TABLE kommandot släpper en befintlig tabell och tar bort katalogen som är associerad med tabellen från filsystemet om den inte är en extern tabell. Om tabellen inte finns inträffar ett undantag.

DROP TABLE [IF EXISTS] [db_name.]table_name
Parametrar
Beskrivning
IF EXISTS
Om detta anges genereras inget undantag om tabellen gör det not finns.

SKAPA DATABAS

The CREATE DATABASE skapar en ADLS-databas (Azure Data Lake Storage).

CREATE DATABASE [IF NOT EXISTS] db_name

DROP DATABASE

The DROP DATABASE kommandot tar bort databasen från en instans.

DROP DATABASE [IF EXISTS] db_name
Parametrar
Beskrivning
IF EXISTS
Om detta anges genereras inget undantag om databasen gör det not finns.

DROP SCHEMA

The DROP SCHEMA kommandot släpper ett befintligt schema.

DROP SCHEMA [IF EXISTS] db_name.schema_name [ RESTRICT | CASCADE]
Parametrar
Beskrivning
IF EXISTS
Om den här parametern anges och schemat gör det not finns, inget undantag genereras.
RESTRICT
Standardvärdet för läget. Om det anges, kommer schemat endast att släppas om det gör det not innehåller alla tabeller.
CASCADE
Om du anger det tas schemat bort tillsammans med alla tabeller som finns i schemat.

SKAPA VY create-view

En SQL-vy är en virtuell tabell som baseras på resultatet av en SQL-sats. Skapa en vy med CREATE VIEW och ge den ett namn. Du kan sedan använda det namnet för att referera tillbaka till resultatet av frågan. Det gör det enklare att återanvända komplexa frågor.

Följande syntax definierar en CREATE VIEW fråga efter en datauppsättning. Den här datauppsättningen kan vara en ADLS- eller accelererad butiksdatauppsättning.

CREATE VIEW view_name AS select_query
Parametrar
Beskrivning
view_name
Namnet på den vy som ska skapas.
select_query
A SELECT -programsats. Syntaxen för SELECT frågan finns i SELECT Queries section.

Exempel

CREATE VIEW V1 AS SELECT color, type FROM Inventory

CREATE OR REPLACE VIEW V1 AS SELECT model, version FROM Inventory

Följande syntax definierar en CREATE VIEW fråga som skapar en vy i samband med en databas och ett schema.

Exempel

CREATE VIEW db_name.schema_name.view_name AS select_query
CREATE OR REPLACE VIEW db_name.schema_name.view_name AS select_query
Parametrar
Beskrivning
db_name
Namnet på databasen.
schema_name
Schemats namn.
view_name
Namnet på den vy som ska skapas.
select_query
A SELECT -programsats. Syntaxen för SELECT frågan finns i SELECT Queries section.

Exempel

CREATE VIEW <dbV1 AS SELECT color, type FROM Inventory;

CREATE OR REPLACE VIEW V1 AS SELECT model, version FROM Inventory;

VISA VYER

Följande fråga visar en lista med vyer.

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

Följande syntax definierar en DROP VIEW fråga:

DROP VIEW [IF EXISTS] view_name
Parametrar
Beskrivning
IF EXISTS
Om detta anges genereras inget undantag om vyn gör det not finns.
view_name
Namnet på den vy som ska tas bort.

Exempel

DROP VIEW v1
DROP VIEW IF EXISTS v1

Anonymt block anonymous-block

Ett anonymt block består av två avsnitt: körbara avsnitt och avsnitt för undantagshantering. I ett anonymt block är det körbara avsnittet obligatoriskt. Avsnittet om undantagshantering är dock valfritt.

I följande exempel visas hur du skapar ett block med en eller flera programsatser som ska köras tillsammans:

$$BEGIN
  statementList
[EXCEPTION exceptionHandler]
$$END

exceptionHandler:
      WHEN OTHER
      THEN statementList

statementList:
    : (statement (';')) +

Nedan visas ett exempel med anonym blockering.

$$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;

Villkorliga satser i ett anonymt block conditional-anonymous-block-statements

Kontrollstrukturen IF-THEN-ELSE möjliggör villkorlig körning av en lista med satser när ett villkor utvärderas som TRUE. Denna kontrollstruktur är endast tillämplig inom ett anonymt block. Om den här strukturen används som ett fristående kommando resulterar det i ett syntaxfel ("Ogiltigt kommando utanför det anonyma blocket").

Kodfragmentet nedan visar rätt format för villkorssatsen IF-THEN-ELSE i ett anonymt block.

IF booleanExpression THEN
   List of statements;
ELSEIF booleanExpression THEN
   List of statements;
ELSEIF booleanExpression THEN
   List of statements;
ELSE
   List of statements;
END IF

Exempel

Exemplet nedan körs SELECT 200;.

$$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$$;

Den här strukturen kan användas med raise_error(); om du vill returnera ett eget felmeddelande. Kodblocket som visas nedan avslutar det anonyma blocket med"anpassat felmeddelande".

Exempel

$$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$$;

Kapslade IF-programsatser

Kapslade IF-satser stöds i anonyma block.

Exempel

$$BEGIN
    SET @V = SELECT 1;
    IF @V = 1 THEN
       SELECT 100;
       IF @V > 0 THEN
         SELECT 1000;
       END IF;
    END IF;

 END$$;

Undantagsblock

Undantagsblock stöds i anonyma block.

Exempel

$$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$$;

Auto till JSON auto-to-json

Frågetjänsten stöder en valfri inställning på sessionsnivå för att returnera komplexa fält på den översta nivån från interaktiva SELECT-frågor som JSON-strängar. The auto_to_json Med den här inställningen kan data från komplexa fält returneras som JSON och sedan tolkas till JSON-objekt med hjälp av standardbibliotek.

ANGE funktionsflagga auto_to_json till true innan SELECT-frågan som innehåller komplexa fält körs.

set auto_to_json=true;

Innan du anger auto_to_json flagga

Följande tabell innehåller ett exempel på frågeresultat före auto_to_json inställningen används. Samma SELECT-fråga (se nedan) som avser en tabell med komplexa fält användes i båda scenarierna.

SELECT * FROM TABLE_WITH_COMPLEX_FIELDS LIMIT 2;

Resultatet är följande:

                _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)

Efter inställning av auto_to_json flagga

I följande tabell visas skillnaden i resultat som auto_to_json -inställningen har på den resulterande datauppsättningen. Samma SELECT-fråga användes i båda scenarierna.

                _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)

Lös reservögonblicksbild vid fel resolve-fallback-snapshot-on-failure

The resolve_fallback_snapshot_on_failure används för att lösa problemet med ett ögonblicksbilds-ID som har gått ut. Metadata för ögonblicksbilder går ut efter två dagar och en ögonblicksbild som gått ut kan göra skriptets logik ogiltig. Detta kan vara ett problem när anonyma block används.

Ange resolve_fallback_snapshot_on_failure true om du vill åsidosätta en ögonblicksbild med ett tidigare ID för ögonblicksbild.

SET resolve_fallback_snapshot_on_failure=true;

Följande kodrad åsidosätter @from_snapshot_id med tidigast tillgängliga snapshot_id från metadata.

$$ 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
$$;

Dataresursorganisation

Det är viktigt att logiskt organisera era dataresurser inom Adobe Experience Platform dataresa när de växer. Med frågetjänsten utökas SQL-konstruktioner som gör att du logiskt kan gruppera dataresurser i en sandlåda. Med den här organisationsmetoden kan du dela datatillgångar mellan scheman utan att behöva flytta dem fysiskt.

Följande SQL-konstruktioner som använder standard-SQL-syntax stöds så att du kan organisera dina data logiskt.

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;

Se logisk organisation av datatillgångar guide för en mer detaljerad förklaring om hur frågetjänsten fungerar.

Tabellen finns

The table_exists SQL-kommandot används för att bekräfta om en tabell finns i systemet. Kommandot returnerar ett booleskt värde: true om tabellen gör finns, och false om tabellen not finns.

Genom att validera om en tabell finns innan programsatserna körs, kan table_exists förenklar processen att skriva ett anonymt block som omfattar både CREATE och INSERT INTO användningsfall.

Följande syntax definierar table_exists kommando:

$$
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 $$;

Textbunden inline

The inline -funktionen separerar elementen i en array med strukturer och genererar värdena i en tabell. Den kan bara placeras i SELECT lista eller en LATERAL VIEW.

The inline function inte placeras i en urvalslista där det finns andra generatorfunktioner.

Som standard får kolumnerna som skapas namnen "col1", "col2" och så vidare. Om uttrycket är NULL så skapas inga rader.

TIP
Du kan byta namn på kolumnnamnen med RENAME -kommando.

Exempel

> SELECT inline(array(struct(1, 'a'), struct(2, 'b'))), 'Spark SQL';

Exemplet returnerar följande:

1  a Spark SQL
2  b Spark SQL

I det andra exemplet demonstreras konceptet och tillämpningen av inline funktion. Datamodellen för exemplet illustreras i bilden nedan.

Ett schema för productListItems.

Exempel

select inline(productListItems) from source_dataset limit 10;

De värden som hämtas från source_dataset används för att fylla i måltabellen.

SKU
upplevelse
kvantitet
priceTotal
product-id-1
("("("(A,pass,B,NULL)")")")"
5
10,5
product-id-5
("("("(A, pass, B,NULL)")")")")
product-id-2
("("("(AF, C, D,NULL)")")")")
6
40
product-id-4
("("("(BM, pass, NA,NULL)")")")")
3
12

Spark SQL-kommandon

Underavsnittet nedan beskriver Spark SQL-kommandon som stöds av Query Service.

ANGE

The SET anger du en egenskap och returnerar värdet för en befintlig egenskap eller visar alla befintliga egenskaper. Om ett värde anges för en befintlig egenskapsnyckel åsidosätts det gamla värdet.

SET property_key = property_value
Parametrar
Beskrivning
property_key
Namnet på den egenskap som du vill visa eller ändra.
property_value
Värdet som du vill att egenskapen ska anges som.

Om du vill returnera värdet för en inställning använder du SET [property key] utan property_value.

PostgreSQL kommandon

Underavsnitten nedan täcker PostgreSQL kommandon som stöds av frågetjänsten.

ANALYSERA TABELL analyze-table

The ANALYZE TABLE kommandot utför en distributionsanalys och statistiska beräkningar för den namngivna tabellen eller tabellerna. Användning av ANALYZE TABLE varierar beroende på om datauppsättningarna lagras på accelererad butik eller Data Lake. Mer information om hur de används finns i respektive avsnitt.

DATORSTATISTIK på den accelererade butiken compute-statistics-accelerated-store

The ANALYZE TABLE kommandot beräknar statistik för en tabell på den accelererade lagringsplatsen. Statistiken beräknas på utförda CTAS- eller ITAS-frågor för en given tabell på den accelererade butiken.

Exempel

ANALYZE TABLE <original_table_name>

Nedan följer en lista över statistiska beräkningar som är tillgängliga efter användning av ANALYZE TABLE kommando:-

Beräknade värden
Beskrivning
field
Namnet på kolumnen i en tabell.
data-type
Godtagbar datatyp för varje kolumn.
count
Antalet rader som innehåller ett värde som inte är null för det här fältet.
distinct-count
Antalet unika eller distinkta värden för det här fältet.
missing
Antalet rader som har ett null-värde för det här fältet.
max
Det högsta värdet från den analyserade tabellen.
min
Det minsta värdet från den analyserade tabellen.
mean
Genomsnittsvärdet för den analyserade tabellen.
stdev
Standardavvikelsen för den analyserade tabellen.

COMPUTE STATISTICS on the data Lake compute-statistics-data-lake

Nu kan du beräkna kolumnnivåstatistik för Azure Data Lake Storage (ADLS) datauppsättningar med COMPUTE STATISTICS SQL-kommando. Beräkna kolumnstatistik för antingen hela datauppsättningen, en deluppsättning av en datauppsättning, alla kolumner eller en delmängd av kolumner.

COMPUTE STATISTICS utökar ANALYZE TABLE -kommando. Men COMPUTE STATISTICS, FILTERCONTEXToch FOR COLUMNS -kommandon stöds inte i accelererade lagringstabeller. Dessa tillägg för ANALYZE TABLE -kommandon stöds för närvarande bara för ADLS-tabeller.

Exempel

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);

The FILTER CONTEXT kommandot beräknar statistik på en delmängd av datauppsättningen baserat på det angivna filtervillkoret. The FOR COLUMNS -kommandot anger specifika kolumner för analys.

NOTE
The Statistics ID och den genererade statistiken är bara giltig för varje session och kan inte nås mellan olika PSQL-sessioner.

Begränsningar:
  • Statistisk generering stöds inte för datatyperna array eller map
  • Beräknad statistik är not beständigt mellan sessioner.
  • skip_stats_for_complex_datatypes
SET skip_stats_for_complex_datatypes = false

Konsolutdata visas enligt nedan.

|     Statistics ID      |
| ---------------------- |
| adc_geometric_stats_1  |
(1 row)

Du kan sedan ställa frågor direkt till den beräknade statistiken genom att referera till Statistics ID. Använd Statistics ID eller aliasnamnet så som det visas i exemplet nedan om du vill visa utdata i sin helhet. Mer information om den här funktionen finns i dokumentation för aliasnamn.

-- This statement gets the statistics generated for `alias adc_geometric_stats_1`.
SELECT * FROM adc_geometric_stats_1;

Använd SHOW STATISTICS om du vill visa metadata för all temporär statistik som genereras i sessionen. Det här kommandot kan hjälpa dig att förfina omfattningen av din statistiska analys.

SHOW STATISTICS;

Ett exempel på VISA STATISTIK visas nedan.

      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

Se dokumentation om datauppsättningsstatistik för mer information.

TABLESAMPLE tablesample

Adobe Experience Platform Query Service innehåller exempeldatauppsättningar som en del av de ungefärliga frågebearbetningsfunktionerna.

Datauppsättningsexempel används bäst när du inte behöver ett exakt svar för en sammanställningsåtgärd över en datauppsättning. Om du vill genomföra mer effektiva undersökande frågor om stora datauppsättningar genom att skicka en ungefärlig fråga för att returnera ett ungefärligt svar använder du TABLESAMPLE -funktion.

Exempeldatauppsättningar skapas med enhetliga slumpmässiga urval från befintliga Azure Data Lake Storage (ADLS) datauppsättningar där endast en procentandel av posterna från originalet används. Exempelfunktionen för datauppsättningar utökar ANALYZE TABLE med kommandot TABLESAMPLE och SAMPLERATE SQL-kommandon

I exemplet nedan visar rad 1 hur du beräknar ett 5 %-prov av tabellen. Rad 2 visar hur du beräknar ett 5 %-prov från en filtrerad vy av data i tabellen.

Exempel

ANALYZE TABLE tableName TABLESAMPLE SAMPLERATE 5;
ANALYZE TABLE tableName FILTERCONTEXT (timestamp >= to_timestamp('2023-01-01')) TABLESAMPLE SAMPLERATE 5:

Se exempeldokumentation för datauppsättning för mer information.

BÖRJA

The BEGIN eller BEGIN WORK eller BEGIN TRANSACTION , initierar ett transaktionsblock. Alla programsatser som infogas efter kommandot begin körs i en enda transaktion tills ett explicit COMMIT- eller ROLLBACK-kommando anges. Det här kommandot är detsamma som START TRANSACTION.

BEGIN
BEGIN WORK
BEGIN TRANSACTION

STÄNG

The CLOSE frigör resurser som är kopplade till en öppen markör. När markören har stängts tillåts inga efterföljande åtgärder på den. En markör bör stängas när den inte längre behövs.

CLOSE name
CLOSE ALL

If CLOSE name används, name representerar namnet på en öppen markör som måste stängas. If CLOSE ALL används, alla öppna markörer stängs.

DEALOCATE

Använd kommandot DEALLOCATE -kommando. Om du inte uttryckligen har frigjort en förberedd sats, frigörs den när sessionen avslutas. Mer information om förberedda satser finns i FÖRBERED, kommando -avsnitt.

DEALLOCATE name
DEALLOCATE ALL

If DEALLOCATE name används, name representerar namnet på den förberedda sats som måste frigöras. If DEALLOCATE ALL används, alla förberedda programsatser frigörs.

DEKLARERA

The DECLARE kan användaren skapa en markör som kan användas för att hämta ett litet antal rader från en större fråga. När markören har skapats hämtas rader från den med FETCH.

DECLARE name CURSOR FOR query
Parametrar
Beskrivning
name
Namnet på den markör som ska skapas.
query
A SELECT eller VALUES som anger de rader som markören ska returnera.

KÖR

The EXECUTE -kommandot används för att köra en tidigare förberedd sats. Eftersom förberedda satser endast finns under en session, måste den förberedda satsen ha skapats av en PREPARE -programsatsen utfördes tidigare i den aktuella sessionen. Mer information om hur du använder förberedda satser finns i PREPARE kommando -avsnitt.

Om PREPARE -programsats som skapade programsatsen specificerade vissa parametrar, måste en kompatibel uppsättning parametrar skickas till EXECUTE -programsats. Om de här parametrarna inte skickas genereras ett fel.

EXECUTE name [ ( parameter ) ]
Parametrar
Beskrivning
name
Namnet på den förberedda sats som ska köras.
parameter
Det faktiska värdet för en parameter till den förberedda programsatsen. Det här måste vara ett uttryck som ger ett värde som är kompatibelt med den här parameterns datatyp, vilket bestämdes när den förberedda satsen skapades. Om det finns flera parametrar för den förberedda programsatsen avgränsas de med kommatecken.

FÖRKLARA

The EXPLAIN -kommandot visar körningsplanen för den angivna programsatsen. Körningsplanen visar hur tabellerna som programsatsen refererar till skannas. Om flera tabeller refereras visas vilka kopplingsalgoritmer som används för att sammanfoga de rader som krävs från varje indatatabell.

EXPLAIN statement

Om du vill definiera svarsformatet använder du FORMAT nyckelord med EXPLAIN -kommando.

EXPLAIN FORMAT { TEXT | JSON } statement
Parametrar
Beskrivning
FORMAT
Använd FORMAT för att ange utdataformat. De tillgängliga alternativen är TEXT eller JSON. Utdata som inte är text innehåller samma information som textutdataformatet, men är enklare att tolka i program. Parametern är som standard TEXT.
statement
Alla SELECT, INSERT, UPDATE, DELETE, VALUES, EXECUTE, DECLARE, CREATE TABLE AS, eller CREATE MATERIALIZED VIEW AS -programsats vars körningsplan du vill se.
IMPORTANT
Alla utdata som SELECT programsatsen kan returneras om den körs med EXPLAIN nyckelord. Andra biverkningar av satsen inträffar som vanligt.

Exempel

I följande exempel visas planen för en enkel fråga i en tabell med en enda integer kolumn och 10000 rader:

EXPLAIN SELECT * FROM foo;
                       QUERY PLAN
---------------------------------------------------------
 Seq Scan on foo (dataSetId = "6307eb92f90c501e072f8457", dataSetName = "foo") [0,1000000242,6973776840203d3d,6e616c58206c6153,6c6c6f430a3d4d20,74696d674c746365]
(1 row)

FETCH

The FETCH hämtar rader med hjälp av en markör som skapats tidigare.

FETCH num_of_rows [ IN | FROM ] cursor_name
Parametrar
Beskrivning
num_of_rows
Antalet rader som ska hämtas.
cursor_name
Namnet på den markör som du hämtar information från.

FÖRBEREDA prepare

The PREPARE kan du skapa en förberedd programsats. En förberedd programsats är ett objekt på serversidan som kan användas för att mallatisera liknande SQL-programsatser.

Förberedda programsatser kan innehålla parametrar, som är värden som ersätts med programsatsen när den körs. Parametrar refereras efter position, med $1, $2 och så vidare, när förberedda satser används.

Du kan också ange en lista med parameterdatatyper. Om en parameters datatyp inte finns med i listan kan typen härledas från kontexten.

PREPARE name [ ( data_type [, ...] ) ] AS SELECT
Parametrar
Beskrivning
name
Namnet på den förberedda satsen.
data_type
Datatyperna för den förberedda satsens parametrar. Om en parameters datatyp inte finns med i listan kan typen härledas från kontexten. Om du måste lägga till flera datatyper kan du lägga till dem i en kommaseparerad lista.

ROLLBACK

The ROLLBACK kommandot ångrar den aktuella transaktionen och tar bort alla uppdateringar som gjorts av transaktionen.

ROLLBACK
ROLLBACK WORK

MARKERA I

The SELECT INTO skapar en ny tabell och fyller den med data som beräknas av en fråga. Data returneras inte till klienten, vilket är fallet med en normal SELECT -kommando. Den nya tabellens kolumner har de namn och datatyper som är associerade med utdatakolumnerna för SELECT -kommando.

[ 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 ] [...] ]

Mer information om SELECT-standardfrågeparametrarna finns i SELECT-frågesektion. I det här avsnittet visas endast parametrar som är exklusiva för SELECT INTO -kommando.

Parametrar
Beskrivning
TEMPORARY eller TEMP
En valfri parameter. Om parametern anges är den skapade tabellen en tillfällig tabell.
UNLOGGED
En valfri parameter. Om parametern anges är den skapade tabellen en ologgad tabell. Mer information om ologgade tabeller finns i PostgreSQL dokumentation.
new_table
Namnet på tabellen som ska skapas.

Exempel

Följande fråga skapar en ny tabell films_recent bestående av endast de senaste posterna från tabellen films:

SELECT * INTO films_recent FROM films WHERE date_prod >= '2002-01-01';

VISA

The SHOW -kommandot visar den aktuella inställningen för körningsparametrar. Dessa variabler kan ställas in med SET genom att redigera postgresql.conf konfigurationsfil via PGOPTIONS miljövariabel (när libpq används eller ett libpq-baserat program) eller via kommandoradsflaggor när Postgres-servern startas.

SHOW name
SHOW ALL
Parametrar
Beskrivning
name
Namnet på körningsparametern som du vill ha information om. Möjliga värden för körningsparametern är följande värden:
SERVER_VERSION: Den här parametern visar serverns versionsnummer.
SERVER_ENCODING: Den här parametern visar kodningen för teckenuppsättningen på serversidan.
LC_COLLATE: Den här parametern visar databasens språkområdesinställning för sortering (textordning).
LC_CTYPE: Den här parametern visar databasens språkområdesinställning för teckenklassificering.
IS_SUPERUSER: Den här parametern visar om den aktuella rollen har superanvändarbehörighet.
ALL
Visa värdena för alla konfigurationsparametrar med beskrivningar.

Exempel

Följande fråga visar parameterns aktuella inställning DateStyle.

SHOW DateStyle;
 DateStyle
-----------
 ISO, MDY
(1 row)

COPY

The COPY kommandot duplicerar utdata från alla SELECT fråga till en angiven plats. Användaren måste ha åtkomst till den här platsen för att det här kommandot ska lyckas.

COPY query
    TO '%scratch_space%/folder_location'
    [  WITH FORMAT 'format_name']
Parametrar
Beskrivning
query
Frågan som du vill kopiera.
format_name
Det format som du vill kopiera frågan i. The format_name kan vara en av parquet, csv, eller json. Som standard är värdet parquet.
NOTE
Den fullständiga utdatasökvägen är adl://<ADLS_URI>/users/<USER_ID>/acp_foundation_queryService/folder_location/<QUERY_ID>

ALTER TABLE alter-table

The ALTER TABLE kan du lägga till eller ta bort begränsningar för primär eller extern nyckel och lägga till kolumner i tabellen.

LÄGG TILL ELLER SLÄPP BEGRÄNSNINGAR

Följande SQL-frågor visar exempel på hur du lägger till eller släpper begränsningar i en tabell. Begränsningar för primärnyckel och sekundärnyckel kan läggas till i flera kolumner med kommaseparerade värden. Du kan skapa sammansatta tangenter genom att skicka två eller flera kolumnnamnsvärden enligt exemplen nedan.

Definiera primära eller sammansatta nycklar

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

Definiera en relation mellan tabeller baserat på en eller flera nycklar

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 )

Definiera en identitetskolumn

ALTER TABLE table_name ADD CONSTRAINT PRIMARY IDENTITY ( column_name ) NAMESPACE namespace

ALTER TABLE table_name ADD CONSTRAINT IDENTITY ( column_name ) NAMESPACE namespace

Släpp en begränsning/relation/identitet

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 )
Parametrar
Beskrivning
table_name
Namnet på tabellen som du redigerar.
column_name
Namnet på den kolumn som du lägger till en begränsning i.
referenced_table_name
Namnet på tabellen som refereras av sekundärnyckeln.
primary_column_name
Namnet på den kolumn som refereras av sekundärnyckeln.
NOTE
Tabellschemat ska vara unikt och inte delas mellan flera tabeller. Dessutom är namnutrymmet obligatoriskt för begränsningarna primärnyckel, primär identitet och identitet.

Lägga till eller släppa primära och sekundära identiteter

Om du vill lägga till eller ta bort begränsningar för både primära och sekundära identitetstabellkolumner använder du ALTER TABLE -kommando.

I följande exempel läggs en primär identitet och en sekundär identitet till genom att begränsningar läggs till.

ALTER TABLE t1 ADD CONSTRAINT PRIMARY IDENTITY (id) NAMESPACE 'IDFA';
ALTER TABLE t1 ADD CONSTRAINT IDENTITY(id) NAMESPACE 'IDFA';

Identiteter kan också tas bort genom att begränsningar släpps, vilket visas i exemplet nedan.

ALTER TABLE t1 DROP CONSTRAINT PRIMARY IDENTITY (c1) ;
ALTER TABLE t1 DROP CONSTRAINT IDENTITY (c1) ;

Mer detaljerad information finns i dokumentet om ange identiteter i en ad hoc-datauppsättning.

LÄGG TILL KOLUMN

Följande SQL-frågor visar exempel på hur du lägger till kolumner i en tabell.

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
Datatyper som stöds

I följande tabell visas godkända datatyper för att lägga till kolumner i en tabell med Postgres SQL, XDM och Accelerated Database Recovery (ADR) i Azure SQL.

PSQL-klient
XML
ADR.
Beskrivning
1
bigint
int8
bigint
En numerisk datatyp som används för att lagra stora heltal mellan -9 223 372 036 854 775 807 och 9 223 372 036 854 775 807 i 8 byte.
2
integer
int4
integer
En numerisk datatyp som används för att lagra heltal mellan -2 147 483 648 och 2 147 483 647 i 4 byte.
3
smallint
int2
smallint
En numerisk datatyp som används för att lagra heltal mellan -32 768 och 215-1 32 767 i 2 byte.
4
tinyint
int1
tinyint
En numerisk datatyp som används för att lagra heltal mellan 0 och 255 i 1 byte.
5
varchar(len)
string
varchar(len)
En teckendatatyp med variabel storlek. varchar används bäst när kolumndatainmatningarnas storlek varierar avsevärt.
6
double
float8
double precision
FLOAT8 och FLOAT är giltiga synonymer för DOUBLE PRECISION. double precision är en flyttalsdatatyp. Flyttalsvärden sparas i 8 byte.
7
double precision
float8
double precision
FLOAT8 är en giltig synonym för double precision.double precision är en flyttalsdatatyp. Flyttalsvärden sparas i 8 byte.
8
date
date
date
The date datatyperna är 4-byte-lagrade kalenderdatumvärden utan tidsstämpelinformation. Giltiga datum är från 01-01-0001 till 12-31-9999.
9
datetime
datetime
datetime
En datatyp som används för att lagra en instans i tid uttryckt som ett kalenderdatum och en tidpunkt på dagen. datetime innehåller kvalificerare för: år, månad, dag, timme, sekund och bråk. A datetime -deklarationen kan innehålla alla delmängder av dessa tidsenheter som är förenade i den sekvensen, eller till och med bara en enda tidsenhet.
10
char(len)
string
char(len)
The char(len) nyckelord används för att ange att objektet är ett tecken med fast längd.

LÄGG TILL SCHEMA

Följande SQL-fråga visar ett exempel på hur du lägger till en tabell i en databas/ett schema.

ALTER TABLE table_name ADD SCHEMA database_name.schema_name
NOTE
Det går inte att lägga till ADLS-tabeller och -vyer i DWH-databaser/scheman.

TA BORT SCHEMA

Följande SQL-fråga visar ett exempel på hur du tar bort en tabell från en databas/ett schema.

ALTER TABLE table_name REMOVE SCHEMA database_name.schema_name
NOTE
DWH-tabeller och -vyer kan inte tas bort från fysiskt länkade DWH-databaser/DWH-scheman.

Parametrar

Parametrar
Beskrivning
table_name
Namnet på tabellen som du redigerar.
column_name
Namnet på den kolumn som du vill lägga till.
data_type
Datatypen för den kolumn som du vill lägga till. Följande datatyper stöds: bigint, char, string, date, datetime, double, precision, integer, smallint, tinyint, varchar.

VISA PRIMÄRNYCKLAR

The SHOW PRIMARY KEYS -kommandot listar alla primärnyckelbegränsningar för den angivna databasen.

SHOW PRIMARY KEYS
    tableName | columnName    | datatype | namespace
------------------+----------------------+----------+-----------
 table_name_1 | column_name1  | text     | "ECID"
 table_name_2 | column_name2  | text     | "AAID"

VISA FRÄMSTA TANGENTER

The SHOW FOREIGN KEYS -kommandot listar alla begränsningar för främmande nycklar för den angivna databasen.

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"

VISA DATAGROUPS

The SHOW DATAGROUPS returnerar en tabell med alla associerade databaser. För varje databas innehåller tabellen schema, grupptyp, underordnad typ, underordnat namn och underordnat 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

VISA DATAGROUPS FÖR register

The SHOW DATAGROUPS FOR 'table_name' returnerar en tabell med alla associerade databaser som innehåller parametern som underordnad. För varje databas innehåller tabellen schema, grupptyp, underordnad typ, underordnat namn och underordnat ID.

SHOW DATAGROUPS FOR 'table_name'

Parametrar

  • table_name: Namnet på den tabell som du vill söka efter associerade databaser för.
   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
recommendation-more-help
ccf2b369-4031-483f-af63-a93b5ae5e3fb