Algemene richtlijnen voor het uitvoeren van query's in Query Service
Dit document bevat belangrijke informatie die u moet weten wanneer u query's schrijft in Adobe Experience Platform Query Service .
Voor gedetailleerde informatie over de SQL syntaxis die in Query Service wordt gebruikt, te lezen gelieve de SQL syntaxisdocumentatie.
Uitvoeringsmodellen voor query
Adobe Experience Platform Query Service heeft twee modellen voor het uitvoeren van query's: interactief en niet-interactief. De interactieve uitvoering wordt gebruikt voor vraagontwikkeling en rapportgeneratie in bedrijfsintelligentiehulpmiddelen, terwijl niet-interactief voor grotere banen en operationele vragen als deel van een werkschema van de gegevensverwerking wordt gebruikt.
Interactieve queryuitvoering
De vragen kunnen interactief worden uitgevoerd door hen door Query Service UI of door een verbonden cliëntvoor te leggen. Wanneer Query Service via een verbonden client wordt uitgevoerd, wordt een actieve sessie uitgevoerd tussen de client en Query Service totdat de verzonden query terugkeert of de time-out.
De interactieve vraaguitvoering heeft de volgende beperkingen:
LIMIT 0
op in de query. De zoektime-out van 10 minuten is nog steeds van toepassing.Door gebrek, worden de resultaten van interactieve vragen teruggekeerd aan de cliënt en niet voortgeduurd. Om de resultaten als dataset in Experience Platform voort te zetten, moet de vraag de CREATE TABLE AS SELECT
syntaxis gebruiken.
Niet-interactieve query-uitvoering
Vragen die via de Query Service API worden verzonden, worden niet-interactief uitgevoerd. Niet-interactieve uitvoering betekent dat Query Service de API-aanroep ontvangt en de query uitvoert in de volgorde waarin deze wordt ontvangen. Niet-interactieve query's resulteren altijd in het genereren van een nieuwe dataset in Experience Platform om de resultaten te ontvangen, of in het invoegen van nieuwe rijen in een bestaande dataset.
Een specifiek veld binnen een object openen
Om tot een gebied binnen een voorwerp in uw vraag toegang te hebben, kunt u of puntaantekening (.
) of haakjesaantekening ([]
) gebruiken. De volgende SQL-instructie gebruikt puntnotatie om het endUserIds
-object omlaag te verplaatsen naar het mcid
-object.
SELECT endUserIds._experience.mcid
FROM {ANALYTICS_TABLE_NAME}
WHERE endUserIds._experience.mcid IS NOT NULL
AND TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 1
{ANALYTICS_TABLE_NAME}
De volgende SQL-instructie gebruikt haakjesnotatie om het endUserIds
-object omlaag te verplaatsen naar het mcid
-object.
SELECT endUserIds['_experience']['mcid']
FROM {ANALYTICS_TABLE_NAME}
WHERE endUserIds._experience.mcid IS NOT NULL
AND TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 1
{ANALYTICS_TABLE_NAME}
Beide voorbeeldquery's hierboven retourneren een samengevoegd object in plaats van één waarde:
endUserIds._experience.mcid
--------------------------------------------------------
(48168239533518554367684086979667672499,"(ECID)",true)
(1 row)
Het geretourneerde endUserIds._experience.mcid
-object bevat de overeenkomende waarden voor de volgende parameters:
id
namespace
primary
Wanneer de kolom alleen omlaag wordt gedeclareerd naar het object, wordt het gehele object als een tekenreeks geretourneerd. Als u alleen de id wilt weergeven, gebruikt u:
SELECT endUserIds._experience.mcid.id
FROM {ANALYTICS_TABLE_NAME}
WHERE endUserIds._experience.mcid IS NOT NULL
AND TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 1
endUserIds._experience.mcid.id
----------------------------------------
48168239533518554367684086979667672499
(1 row)
Aanhalingen
De enige citaten, de dubbele citaten, en de achtercitaten hebben verschillend gebruik binnen de vragen van de Dienst van de Vraag.
Enkele aanhalingstekens
Het enige citaat ('
) wordt gebruikt om tekstkoorden tot stand te brengen. U kunt deze bijvoorbeeld gebruiken in de instructie SELECT
om een statische tekstwaarde te retourneren in het resultaat en in de component WHERE
om de inhoud van een kolom te evalueren.
Met de volgende query wordt een statische tekstwaarde ('datasetA'
) gedeclareerd voor een kolom:
SELECT
'datasetA',
timestamp,
web.webPageDetails.name
FROM {ANALYTICS_TABLE_NAME}
WHERE TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 10
De volgende vraag gebruikt één-geciteerde koord ('homepage'
) in zijn WAAR clausule om gebeurtenissen voor een specifieke pagina terug te keren.
SELECT
timestamp,
endUserIds._experience.mcid.id
FROM {ANALYTICS_TABLE_NAME}
WHERE web.webPageDetails.name = 'homepage'
AND TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 10
Dubbele aanhalingstekens
Het dubbele citaat ("
) wordt gebruikt om een herkenningsteken met ruimten te verklaren.
De volgende query gebruikt dubbele aanhalingstekens om waarden uit opgegeven kolommen te retourneren wanneer één kolom een spatie in de id bevat:
SELECT
no_space_column,
"space column"
FROM
( SELECT
'column1' as no_space_column,
'column2' as "space column"
)
Achter aanhalingstekens
Het achtercitaat `
wordt gebruikt om gereserveerde kolomnamen slechts te ontsnappen wanneer het gebruiken van de syntaxis van de puntnotatie. Omdat order
bijvoorbeeld een gereserveerd woord is in SQL, moet u backquotes gebruiken om toegang te krijgen tot het veld commerce.order
:
SELECT
commerce.`order`
FROM {ANALYTICS_TABLE_NAME}
WHERE TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 10
Achteraanhalingstekens worden ook gebruikt om toegang te krijgen tot een veld dat met een getal begint. Als u bijvoorbeeld toegang wilt krijgen tot het veld 30_day_value
, moet u de notatie voor aanhalingstekens gebruiken.
SELECT
commerce.`30_day_value`
FROM {ANALYTICS_TABLE_NAME}
WHERE TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 10
De achtercitaten zijn niet nodig als u steun-aantekening gebruikt.
SELECT
commerce['order']
FROM {ANALYTICS_TABLE_NAME}
WHERE TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 10
Tabelgegevens weergeven
Nadat u verbinding hebt gemaakt met Query Service, kunt u al uw beschikbare tabellen op Platform weergeven met de opdrachten \d
of SHOW TABLES
.
Standaardtabelweergave
De opdracht \d
toont de standaardweergave van PostgreSQL voor het weergeven van tabellen. Een voorbeeld van de output van dit bevel kan hieronder worden gezien:
List of relations
Schema | Name | Type | Owner
--------+-----------------+-------+----------
public | luma_midvalues | table | postgres
public | luma_postvalues | table | postgres
(2 rows)
Gedetailleerde tabelweergave
SHOW TABLES
is een aangepaste opdracht die gedetailleerdere informatie over de tabellen biedt. Een voorbeeld van de output van dit bevel kan hieronder worden gezien:
name | dataSetId | dataSet | description | resolved
-----------------+--------------------------+----------------+-------------+----------
luma_midvalues | 5bac030c29bb8d12fa992e58 | Luma midValues | | false
luma_postvalues | 5c86b896b3c162151785b43c | Luma midValues | | false
(2 rows)
Schema-informatie
Als u meer gedetailleerde informatie over de schema's in de tabel wilt weergeven, gebruikt u de opdracht \d {TABLE_NAME}
, waarbij {TABLE_NAME}
de naam is van de tabel waarvan u de schemagegevens wilt weergeven.
In het volgende voorbeeld worden de schemagegevens voor de tabel luma_midvalues
weergegeven, die u kunt zien met \d luma_midvalues
:
Table "public.luma_midvalues"
Column | Type | Collation | Nullable | Default
-------------------+-----------------------------+-----------+----------+---------
timestamp | timestamp | | |
_id | text | | |
productlistitems | anyarray | | |
commerce | luma_midvalues_commerce | | |
receivedtimestamp | timestamp | | |
enduserids | luma_midvalues_enduserids | | |
datasource | datasource | | |
web | luma_midvalues_web | | |
placecontext | luma_midvalues_placecontext | | |
identitymap | anymap | | |
marketing | marketing | | |
environment | luma_midvalues_environment | | |
_experience | luma_midvalues__experience | | |
device | device | | |
search | search | | |
Bovendien kunt u meer informatie over een bepaalde kolom krijgen door de naam van de kolom aan de lijstnaam toe te voegen. Dit wordt geschreven in de notatie \d {TABLE_NAME}_{COLUMN}
.
In het volgende voorbeeld wordt aanvullende informatie voor de kolom web
getoond, die met de volgende opdracht wordt aangeroepen: \d luma_midvalues_web
Composite type "public.luma_midvalues_web"
Column | Type | Collation | Nullable | Default
----------------+-----------------------------------+-----------+----------+---------
webpagedetails | luma_midvalues_web_webpagedetails | | |
webreferrer | web_webreferrer | | |
Gegevenssets samenvoegen
U kunt zich bij veelvoudige datasets aansluiten samen om gegevens van andere datasets in uw vraag te omvatten.
In het volgende voorbeeld worden de volgende twee gegevenssets (your_analytics_table
en custom_operating_system_lookup
) samengevoegd en wordt een instructie SELECT
voor de bovenste 50 besturingssystemen gemaakt op basis van het aantal paginaweergaven.
Query
SELECT
b.operatingsystem AS OperatingSystem,
SUM(a.web.webPageDetails.pageviews.value) AS PageViews
FROM your_analytics_table a
JOIN custom_operating_system_lookup b
ON a._experience.analytics.environment.operatingsystemID = b.operatingsystemid
WHERE TIMESTAMP >= TO_TIMESTAMP('2018-01-01') AND TIMESTAMP <= TO_TIMESTAMP('2018-12-31')
GROUP BY OperatingSystem
ORDER BY PageViews DESC
LIMIT 50;
Resultaten
Deduplicatie
De Dienst van de vraag steunt gegevensdeduplicatie, of de verwijdering van dubbele rijen uit gegevens. Voor meer informatie over deduplicatie, te lezen gelieve de gids van de Deduplicatie van de Dienst van de Vraag.
De berekeningen van de tijdzone in de Dienst van de Vraag
De Service van de vraag normaliseert persisted gegevens in Adobe Experience Platform gebruikend het timestamp formaat UTC. Voor meer informatie over hoe te om uw tijdzonevereiste aan en van een timestamp te vertalen UTC, gelieve de sectie van Veelgestelde vragen te zien over hoe te om de tijdzone aan en van een Tijdstempel van UTCte veranderen.
Volgende stappen
Door dit document te lezen, bent u op een aantal belangrijke overwegingen geïntroduceerd wanneer het schrijven van vragen gebruikend Query Service. Voor meer informatie over hoe te om de SQL syntaxis te gebruiken om uw eigen vragen te schrijven, te lezen gelieve de SQL syntaxisdocumentatie.
Voor meer steekproeven van vragen die binnen de Dienst van de Vraag kunnen worden gebruikt, gelieve de volgende documentatie van het gebruiksgeval te lezen: