Algemene richtlijnen voor query-uitvoering in Query Service
In dit document worden belangrijke gegevens vermeld die u moet weten wanneer u query's schrijft in Adobe Experience Platform Query Service.
Voor gedetailleerde informatie over de SQL-syntaxis die wordt gebruikt in Query Service, lees de SQL-syntaxisdocumentatie.
Uitvoeringsmodellen voor query
Adobe Experience Platform Query Service heeft twee modellen van vraaguitvoering: 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 voor te leggen Query Service UI of via een verbonden client. Bij uitvoering Query Service via een verbonden client een actieve sessie wordt uitgevoerd tussen de client en Query Service tot of de voorgelegde vraag terugkeert of tijden uit.
De interactieve vraaguitvoering heeft de volgende beperkingen:
LIMIT 0
in uw query. De zoektime-out van 10 minuten is nog steeds van toepassing.Standaard worden de resultaten van interactieve query's geretourneerd aan de client en zijn deze niet aanhoudend. Om de resultaten als dataset in Experience Platform, moet de query de CREATE TABLE AS SELECT
syntaxis.
Niet-interactieve query-uitvoering
Vragen ingediend via de Query Service API wordt niet-interactief uitgevoerd. Niet-interactieve uitvoering betekent dat: Query Service ontvangt de API-aanroep en voert de query uit in de volgorde waarin deze is ontvangen. Niet-interactieve query's resulteren altijd in het genereren van een nieuwe dataset in Experience Platform om de resultaten te ontvangen, of de toevoeging van nieuwe rijen in een bestaande dataset.
Een specifiek veld binnen een object openen
Als u toegang wilt krijgen tot een veld binnen een object in de query, kunt u beide puntnotaties gebruiken (.
) of vierkante haakjes ([]
). De volgende SQL-instructie gebruikt puntnotatie om de endUserIds
object naar beneden 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 haakjes om de endUserIds
object naar beneden 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)
De 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 enkele citaat ('
) wordt gebruikt om tekstreeksen te maken. Deze kan bijvoorbeeld worden gebruikt in het dialoogvenster SELECT
instructie om een statische tekstwaarde te retourneren in het resultaat en in de WHERE
clausule om de inhoud van een kolom te evalueren.
Met de volgende query wordt een statische tekstwaarde gedeclareerd ('datasetA'
) 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 query gebruikt een tekenreeks tussen aanhalingstekens ('homepage'
) in de WHERE-component om gebeurtenissen voor een specifieke pagina te retourneren.
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 id met spaties te declareren.
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
The back quote `
wordt gebruikt om gereserveerde kolomnamen te omzeilen alleen bij gebruik van puntnotatiesyntaxis. Bijvoorbeeld sinds order
is een gereserveerd woord in SQL, moet u backquotes gebruiken om tot het gebied toegang te hebben 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
Achter aanhalingstekens zijn niet nodig als u haakjes gebruikt.
SELECT
commerce['order']
FROM {ANALYTICS_TABLE_NAME}
WHERE TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 10
Tabelgegevens weergeven
Na het verbinden met de Dienst van de Vraag, kunt u al uw beschikbare lijsten op Platform zien door of \d
of SHOW TABLES
opdrachten.
Standaardtabelweergave
De \d
toont het bevel de norm PostgreSQL weergave voor tabellen met lijsten. 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
bevel is een douanebevel dat gedetailleerdere informatie over de lijsten verstrekt. 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, kunt u de opdracht \d {TABLE_NAME}
opdracht, waar {TABLE_NAME}
is de naam van de lijst waarvan schemainformatie u wilt bekijken.
In het volgende voorbeeld worden de schemagegevens voor het luma_midvalues
tabel, 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 in de notatie geschreven \d {TABLE_NAME}_{COLUMN}
.
In het volgende voorbeeld wordt aanvullende informatie voor het web
kolom, en zou worden aangehaald door het volgende bevel te gebruiken: \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.
Het volgende voorbeeld zou zich bij de volgende twee datasets (your_analytics_table
en custom_operating_system_lookup
) en maakt een SELECT
voor de bovenste 50 besturingssystemen op aantal pagina's.
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. Lees voor meer informatie over deduplicatie de Handleiding voor deduplicatie van Query Service.
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 UTC te vertalen, gelieve te zien sectie Veelgestelde vragen over het wijzigen van de tijdzone van en naar een UTC-tijdstempel.
Volgende stappen
Door dit document te lezen, bent u op enkele belangrijke overwegingen geïntroduceerd wanneer het schrijven van vragen gebruikend Query Service. Voor meer informatie over hoe u de SQL-syntaxis kunt gebruiken om uw eigen query's te schrijven, leest u 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: