Allgemeine Leitlinien für die Ausführung von Abfragen in Query Service

In diesem Dokument werden wichtige Informationen beschrieben, die Sie beim Schreiben von Abfragen in Adobe Experience Platform Query Service beachten sollten.

Ausführliche Informationen zur in Query Service verwendeten SQL-Syntax finden Sie in der SQL-Syntax-Dokumentation.

Abfrageausführungsmodelle

Adobe Experience Platform Query Service verfügt über zwei Modelle der Abfrageausführung: interaktiv und nicht interaktiv. Die interaktive Ausführung wird für die Abfrageentwicklung und die Berichterstellung in Business Intelligence-Tools verwendet, während die nicht interaktive Ausführung für größere Aufträge und operative Abfragen als Teil eines Datenverarbeitungs-Workflows verwendet wird.

Interaktive Abfrageausführung

Abfragen können interaktiv ausgeführt werden, indem sie über die Query Service-Benutzeroberfläche oder über einen verbundenen Client) gesendet. Wenn Query Service über einen verbundenen Client ausgeführt wird, wird eine aktive Sitzung zwischen dem Client und Query Service ausgeführt, bis entweder die gesendete Abfrage zurückgegeben wird oder eine Zeitüberschreitung auftritt.

Die interaktive Ausführung von Abfragen hat die folgenden Einschränkungen:

Parameter
Einschränkung
Zeitüberschreitung der Abfrage
10 Minuten
Maximal zurückgegebene Zeilen
50.000
Maximale Anzahl gleichzeitiger Abfragen
5
NOTE
Um die Begrenzung der maximalen Zeilen zu überschreiben, fügen Sie LIMIT 0 in Ihre Abfrage ein. Die maximale Wartezeit von 10 Minuten für die Abfrage gilt weiterhin.

Standardmäßig werden die Ergebnisse interaktiver Abfragen an den Client zurückgegeben und nicht beibehalten. Um die Ergebnisse als Datensatz in Experience Platform beizubehalten, muss die Abfrage die CREATE TABLE AS SELECT Syntax verwenden.

Nicht interaktive Abfrageausführung

Über die Query Service-API gesendete Abfragen werden nicht interaktiv ausgeführt. Eine nicht interaktive Ausführung bedeutet, dass Query Service den API-Aufruf erhält und die Abfrage in der Reihenfolge ausführt, in der sie empfangen wird. Nicht interaktive Abfragen führen immer entweder zur Generierung eines neuen Datensatzes, Experience Platform die Ergebnisse zu erhalten, oder zur Einfügung neuer Zeilen in einen vorhandenen Datensatz.

Zugriff auf ein bestimmtes Feld innerhalb eines Objekts

Um auf ein Feld innerhalb eines Objekts in Ihrer Abfrage zuzugreifen, können Sie entweder die Punktnotation (.) oder die Klammernotation ([]) verwenden. Die folgende SQL-Anweisung verwendet Punktnotation, um das endUserIds Objekt bis zum mcid Objekt zu durchlaufen.

NOTE
Die Experience Cloud-ID (ECID) wird auch als MCID bezeichnet und weiterhin in Namespaces verwendet.
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
Eigenschaft
Beschreibung
{ANALYTICS_TABLE_NAME}
Der Name Ihrer Analytics-Tabelle.

Die folgende SQL-Anweisung verwendet die Klammernotation, um das endUserIds Objekt bis zum mcid Objekt zu durchlaufen.

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
Eigenschaft
Beschreibung
{ANALYTICS_TABLE_NAME}
Der Name Ihrer Analytics-Tabelle.
NOTE
Da jeder Notierungstyp dieselben Ergebnisse zurückgibt, entspricht die von Ihnen gewählte Methode Ihren Vorlieben.

Beide obigen Beispielabfragen geben ein reduziertes Objekt anstelle eines einzelnen Werts zurück:

              endUserIds._experience.mcid
--------------------------------------------------------
 (48168239533518554367684086979667672499,"(ECID)",true)
(1 row)

Das zurückgegebene endUserIds._experience.mcid-Objekt enthält die entsprechenden Werte für die folgenden Parameter:

  • id
  • namespace
  • primary

Wenn die Spalte nur für das -Objekt deklariert wird, 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 rückwärtige Anführungszeichen werden in Abfragen des Abfrage-Service unterschiedlich verwendet.

Einfache Anführungszeichen

Das einfache Anführungszeichen (') wird verwendet, um Textzeichenfolgen zu erstellen. Beispielsweise kann sie in der SELECT-Anweisung verwendet werden, um einen statischen Textwert im Ergebnis zurückzugeben, und in der WHERE-Klausel, um den Inhalt einer Spalte auszuwerten.

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

Die folgende Abfrage verwendet eine Zeichenfolge in einfachen Anführungszeichen ('homepage') in ihrer WHERE-Klausel, 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 (") wird verwendet, um eine Kennung mit Leerzeichen zu deklarieren.

Die folgende Abfrage verwendet doppelte Anführungszeichen, um Werte aus angegebenen Spalten zurückzugeben, wenn eine Spalte ein Leerzeichen in ihrer Kennung enthält:

SELECT
  no_space_column,
  "space column"
FROM
( SELECT
    'column1' as no_space_column,
    'column2' as "space column"
)
NOTE
Doppelte Anführungszeichen können nicht mit der Punktnotation verwendet werden.

Zurück Anführungszeichen

Die ` für rückwärts gerichtete Anführungszeichen wird verwendet, um reservierte Spaltennamen (nur ) bei Verwendung der Punktnotation-Syntax mit Escape-Zeichen zu versehen. Da order beispielsweise ein reserviertes Wort in SQL ist, müssen Sie für den Zugriff auf das Feld commerce.order Anführungszeichen verwenden:

SELECT
  commerce.`order`
FROM {ANALYTICS_TABLE_NAME}
WHERE TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 10

Backquotes werden auch verwendet, um auf ein Feld zuzugreifen, das mit einer Zahl beginnt. Um beispielsweise auf die 30_day_value zuzugreifen, müssten Sie die Notation „Zurück“ verwenden.

SELECT
    commerce.`30_day_value`
FROM {ANALYTICS_TABLE_NAME}
WHERE TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
LIMIT 10

Wenn Sie Klammernotation verwenden sind Anführungszeichen erforderlich.

 SELECT
  commerce['order']
 FROM {ANALYTICS_TABLE_NAME}
 WHERE TIMESTAMP = to_timestamp('{TARGET_YEAR}-{TARGET_MONTH}-{TARGET_DAY}')
 LIMIT 10

Anzeigen von Tabelleninformationen

Nachdem Sie eine Verbindung zum Abfrage-Service hergestellt haben, können Sie alle verfügbaren Tabellen in Platform mit den Befehlen \d oder SHOW TABLES anzeigen.

Standard-Tabellenansicht

Der Befehl \d zeigt die standardmäßige PostgreSQL für die Auflistung von Tabellen an. 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 detailliertere Informationen über die Schemata in der Tabelle anzuzeigen, können Sie den Befehl \d {TABLE_NAME} verwenden, wobei {TABLE_NAME} der Name der Tabelle ist, deren Schemainformationen angezeigt werden sollen.

Das folgende Beispiel zeigt die Schemainformationen für die luma_midvalues, die durch Verwendung von \d luma_midvalues angezeigt würden:

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

Darüber hinaus 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 Format \d {TABLE_NAME}_{COLUMN} geschrieben.

Das folgende Beispiel zeigt zusätzliche Informationen für die web Spalte und wird mithilfe des folgenden Befehls aufgerufen: \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 verbinden, um Daten aus anderen Datensätzen in Ihre Abfrage aufzunehmen.

Das folgende Beispiel würde die beiden folgenden Datensätze (your_analytics_table und custom_operating_system_lookup) verbinden und eine SELECT-Anweisung für die 50 wichtigsten Betriebssysteme nach Anzahl der Seitenansichten erstellen.

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

Betriebssystem
Seitenansichten
Windows 7
2781979,0
Windows XP
1669824,0
Windows 8
420024,0
Adobe AIR
315032,0
Windows Vista
173566,0
Mobile iOS 6.1.3
119069,0
Linux
56516,0
OSX 10.6.8
53652,0
Android 4.0.4
46167,0
Android 4.0.3
31852,0
Windows Server 2003 und XP x64 Edition
28883,0
Android 4.1.1
24336,0
Android 2.3.6
15735,0
OSX 10.6
13357,0
Windows Phone 7.5
11054,0
Android 4.3
9221,0

Deduplizierung

Der Abfrage-Service unterstützt die Datendeduplizierung oder das Entfernen doppelter Zeilen aus Daten. Weitere Informationen zur Deduplizierung finden Sie im Handbuch zur Deduplizierung des Abfrage-Service.

Zeitzonenberechnungen im Abfrage-Service

Query Service standardisiert persistierte Daten in Adobe Experience Platform mithilfe des UTC-Zeitstempelformats. Weitere Informationen zur Übersetzung Ihrer Zeitzonenanforderungen in und aus einem UTC-Zeitstempel finden Sie im FAQ-Abschnitt zum Ändern der Zeitzone in und von einem UTC-Zeitstempel.

Nächste Schritte

In diesem Dokument haben Sie eine Einleitung zu wichtigen Überlegungen beim Schreiben von Abfragen mit Query Service erhalten. Weitere Informationen zur Verwendung der SQL-Syntax zum Schreiben eigener Abfragen finden Sie in der SQL-Syntax-Dokumentation.

Weitere Beispiele für Abfragen, die im Abfrage-Service verwendet werden können, finden Sie in der Dokumentation zu folgenden Anwendungsfällen:

recommendation-more-help
ccf2b369-4031-483f-af63-a93b5ae5e3fb