Allgemeine Anleitung zur Ausführung von Abfragen in Query Service
In diesem Dokument werden wichtige Informationen zum Schreiben von Abfragen in Adobe Experience Platform beschrieben. Query Service.
Detaillierte Informationen zur SQL-Syntax finden Sie unter Query Service, lesen Sie bitte die SQL-Syntaxdokumentation.
Ausführungsmodelle von Abfragen
Adobe Experience Platform Query Service verfügt über zwei Ausführungsmodelle von Abfragen: interaktiv und nicht interaktiv. Die interaktive Ausführung wird in Business Intelligence-Tools zur Abfrageentwicklung und Berichterstellung verwendet, während nicht interaktive im Rahmen eines Datenverarbeitungs-Workflows für größere Aufträge und operative Abfragen verwendet werden.
Ausführung der interaktiven Abfrage
Abfragen können interaktiv ausgeführt werden, indem sie über die Query Service Benutzeroberfläche oder über einen verbundenen Client. Beim Ausführen Query Service über einen verbundenen Client wird eine aktive Sitzung zwischen dem Client und Query Service bis entweder die gesendete Abfrage zurückgibt oder eine Zeitüberschreitung auftritt.
Die Ausführung der interaktiven Abfrage weist die folgenden Einschränkungen auf:
LIMIT 0
in Ihrer Abfrage. Die Abfrage-Zeitüberschreitung von 10 Minuten gilt weiterhin.Standardmäßig werden die Ergebnisse interaktiver Abfragen an den Client zurückgegeben und sind not beibehalten. Um die Ergebnisse als Datensatz beizubehalten, verwenden Sie Experience Platform, muss die Abfrage die CREATE TABLE AS SELECT
Syntax.
Nicht-interaktive Abfrageausführung
Über die Query Service APIs werden nicht interaktiv ausgeführt. Nicht interaktive Ausführung bedeutet, dass Query Service empfängt den API-Aufruf und führt die Abfrage in der Reihenfolge aus, in der sie empfangen wird. Nicht-interaktive Abfragen führen immer zur Generierung eines neuen Datensatzes in Experience Platform um die Ergebnisse zu erhalten oder neue Zeilen in einen vorhandenen Datensatz einzufügen.
Zugreifen auf ein bestimmtes Feld in einem Objekt
Um auf ein Feld innerhalb eines Objekts in Ihrer Abfrage zuzugreifen, können Sie die Punktnotation (.
) oder Klammer-Notation ([]
). Die folgende SQL-Anweisung verwendet die Punktnotation, um die endUserIds
Objekt bis zum mcid
-Objekt.
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}
Die folgende SQL-Anweisung verwendet die Klammer-Notation, um die endUserIds
Objekt bis zum mcid
-Objekt.
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 der obigen Beispielabfragen geben anstelle eines einzelnen Werts ein reduziertes Objekt zurück:
endUserIds._experience.mcid
--------------------------------------------------------
(48168239533518554367684086979667672499,"(ECID)",true)
(1 row)
Die zurückgegebene endUserIds._experience.mcid
-Objekt enthält die entsprechenden Werte für die folgenden Parameter:
id
namespace
primary
Wenn die Spalte nur bis zum Objekt deklariert ist, wird das gesamte Objekt als Zeichenfolge zurückgegeben. Um nur die ID anzuzeigen, verwenden Sie:
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)
Anführungszeichen
Einfache Anführungszeichen, doppelte Anführungszeichen und Backquotes verwenden unterschiedliche Verwendungen in Query Service-Abfragen.
Einzelne Anführungszeichen
Das einfache Anführungszeichen ('
) wird zum Erstellen von Textzeichenfolgen verwendet. Sie kann beispielsweise im SELECT
-Anweisung, um einen statischen Textwert im Ergebnis und im WHERE
-Klausel, um den Inhalt einer Spalte zu bewerten.
Die folgende Abfrage deklariert einen statischen Textwert ('datasetA'
) für eine Spalte:
SELECT
'datasetA',
timestamp,
web.webPageDetails.name
FROM {ANALYTICS_TABLE_NAME}
WHERE TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 10
In der folgenden Abfrage wird eine Zeichenfolge mit einem einfachen Anführungszeichen ('homepage'
), um Ereignisse für eine bestimmte Seite zurückzugeben.
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
Doppelte Anführungszeichen
Das doppelte Anführungszeichen ("
) verwendet wird, um eine Kennung mit Leerzeichen zu deklarieren.
In der folgenden Abfrage werden doppelte Anführungszeichen verwendet, um Werte aus angegebenen Spalten zurückzugeben, wenn eine Spalte einen Leerzeichen in ihrer Kennung enthält:
SELECT
no_space_column,
"space column"
FROM
( SELECT
'column1' as no_space_column,
'column2' as "space column"
)
Rücke Anführungszeichen
Das Rückziffer `
wird verwendet, um reservierte Spaltennamen zu maskieren only bei Verwendung der Punktnotationssyntax. Beispiel: da order
ist ein reserviertes Wort in SQL, müssen Sie Backquotes verwenden, um auf das Feld zuzugreifen commerce.order
:
SELECT
commerce.`order`
FROM {ANALYTICS_TABLE_NAME}
WHERE TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 10
Rücke Anführungszeichen werden auch verwendet, um auf ein Feld zuzugreifen, das mit einer Zahl beginnt. Um beispielsweise auf das Feld zuzugreifen, 30_day_value
, müssten Sie die Rückführungszeichen-Notation verwenden.
SELECT
commerce.`30_day_value`
FROM {ANALYTICS_TABLE_NAME}
WHERE TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 10
Rücke Anführungszeichen sind not erforderlich, wenn Sie die Klammer-Notation verwenden.
SELECT
commerce['order']
FROM {ANALYTICS_TABLE_NAME}
WHERE TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 10
Anzeigen von Tabelleninformationen
Nach der Verbindung mit Query Service können Sie alle verfügbaren Tabellen in Platform anzeigen, indem Sie entweder \d
oder SHOW TABLES
Befehle.
Standardtabellenansicht
Die \d
-Befehl zeigt den Standard PostgreSQL -Ansicht für die Auflistung von Tabellen. Nachfolgend finden Sie ein Beispiel für die Ausgabe dieses Befehls:
List of relations
Schema | Name | Type | Owner
--------+-----------------+-------+----------
public | luma_midvalues | table | postgres
public | luma_postvalues | table | postgres
(2 rows)
Detaillierte Tabellenansicht
SHOW TABLES
-Befehl ist ein benutzerdefinierter Befehl, der detailliertere Informationen zu den Tabellen bereitstellt. Nachfolgend finden Sie ein Beispiel für die Ausgabe dieses Befehls:
name | dataSetId | dataSet | description | resolved
-----------------+--------------------------+----------------+-------------+----------
luma_midvalues | 5bac030c29bb8d12fa992e58 | Luma midValues | | false
luma_postvalues | 5c86b896b3c162151785b43c | Luma midValues | | false
(2 rows)
Schemainformationen
Um genauere Informationen über die Schemas in der Tabelle anzuzeigen, können Sie die \d {TABLE_NAME}
-Befehl, wobei {TABLE_NAME}
ist der Name der Tabelle, deren Schemadaten Sie anzeigen möchten.
Das folgende Beispiel zeigt die Schemainformationen für die luma_midvalues
-Tabelle, die mithilfe von \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 | | |
Zusätzlich können Sie weitere Informationen zu einer bestimmten Spalte erhalten, indem Sie den Namen der Spalte an den Tabellennamen anhängen. Dies würde im folgenden Format geschrieben: \d {TABLE_NAME}_{COLUMN}
.
Das folgende Beispiel zeigt zusätzliche Informationen für die web
und mit dem folgenden Befehl aufgerufen werden: \d luma_midvalues_web
:
Composite type "public.luma_midvalues_web"
Column | Type | Collation | Nullable | Default
----------------+-----------------------------------+-----------+----------+---------
webpagedetails | luma_midvalues_web_webpagedetails | | |
webreferrer | web_webreferrer | | |
Datensätze verknüpfen
Sie können mehrere Datensätze zusammenführen, um Daten aus anderen Datensätzen in Ihre Abfrage aufzunehmen.
Im folgenden Beispiel würden die beiden folgenden Datensätze (your_analytics_table
und custom_operating_system_lookup
) und erstellt eine SELECT
-Anweisung für die 50 wichtigsten Betriebssysteme nach Anzahl der Seitenansichten.
Abfrage
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;
Ergebnisse
Deduplizierung
Query Service unterstützt die Deduplizierung von Daten oder das Entfernen doppelter Zeilen aus Daten. Weitere Informationen zur Deduplizierung finden Sie im Handbuch zur Query Service-Deduplizierung.
Zeitzonenberechnungen in Query Service
Query Service standardisiert persistente Daten in Adobe Experience Platform mithilfe des UTC-Zeitstempelformats. Weitere Informationen zur Übersetzung Ihrer Zeitzonenanforderung in und aus einem UTC-Zeitstempel finden Sie in der Häufig gestellte Fragen zum Ändern der Zeitzone von und zu einem UTC-Zeitstempel.
Nächste Schritte
Durch Lesen dieses Dokuments haben Sie einige wichtige Aspekte beim Schreiben von Abfragen mit Query Service. Weitere Informationen zur Verwendung der SQL-Syntax zum Schreiben Ihrer eigenen Abfragen finden Sie im Abschnitt SQL-Syntaxdokumentation.
Weitere Beispiele für Abfragen, die in Query Service verwendet werden können, finden Sie in der folgenden Anwendungsfalldokumentation: