Effiziente Big-Data-Analyse mit Hypercubes
Erfahren Sie, wie Sie im Experience Query Service von Adobe Experience Platform Hypercubes verwenden können, um eine erweiterte Datenanalyse mit verbesserter Effizienz durchzuführen. In diesem Dokument wird beschrieben, wie Sie erweiterte Funktionen aus der Apache Datasketches Bibliothek verwenden können, um einzelne Zählungen und komplexe Berechnungen inkrementell zu verarbeiten, ohne historische Daten jedes Mal neu verarbeiten zu müssen.
In der Big-Data-Analyse umfasst das Generieren von Metriken wie eindeutige Zählungen, Quantile, häufigste Elemente, Joins und Diagrammanalysen häufig nicht-additive Zählungen (wobei die Ergebnisse nicht einfach aus Untergruppen zusammengefasst werden können). Herkömmliche Methoden erfordern die erneute Verarbeitung aller historischen Daten, was ressourcenintensiv und zeitaufwendig sein kann. Verwenden Sie Zeichnungen, bei denen es sich um kompakte Zusammenfassungen handelt, die Wahrscheinlichkeiten zur Darstellung großer Datensätze verwenden, und erweiterte Abfrage-Service-Funktionen, um diesen Prozess zu optimieren, indem Sie die Notwendigkeit der Neuberechnung reduzieren.
Schlüsselfunktionen von Hyperwürfeln key-functions
Hypercubes bieten mehrere leistungsstarke Funktionen zur Verbesserung der Effizienz und Flexibilität der Datenanalyse.
- Einzelne Benutzer oder einzelne Abfragen zählen: Verwenden Sie SQL-Funktionen, um eine eindeutige Anzahl von Benutzern zu generieren, die mit verschiedenen Dimensionen von Daten interagieren, z. B. Produktansichten, Site-Besuche oder Commerce-Aktivitäten, ohne wiederholt Rohdaten erneut zu analysieren.
- Inkrementelle Verarbeitung: Inkrementelle Aktualisierungen durchführen, um Datenpunkte über Dimensionen und Zeit hinweg zu falten und zusammenzuführen, ohne alles von Grund auf neu zu berechnen.
- Mehrdimensionale Analyse: Hypercubes ermöglichen das mehrdimensionale Filtern und Neuanordnen von Daten, um Zusammenfassungszeilen zu erstellen, die Kombinationen von Dimensionen darstellen. Diese Zusammenfassungen können dann verwendet werden, um Einblicke mit minimalem Rechenaufwand zu generieren.
Anwendungsbeispiele für Hyperwürfel use-cases
Verwenden Sie Hypercubes, um effizient verschiedene Zählungen für verschiedene Benutzerinteraktionen zu generieren, ohne die Daten jedes Mal vollständig neu zu berechnen. Im Folgenden finden Sie einige praktische Szenarien für ihre Verwendung:
- Analysieren Sie Unique Visitors, die bestimmte Produkte während eines bestimmten Zeitraums anzeigen.
- Identifizieren Sie Benutzer, die in einem bestimmten Zeitraum mit mehreren Produkten interagieren, um die Crosssell-Analyse zu verbessern.
- Unterscheiden Sie Benutzer, die mit einem Produkt interagieren, aber mit der Zeit kein anderes, um Präferenzmuster zu entdecken.
- Kombinieren Sie Online- und Offline-Interaktionsdaten, um einen umfassenden Überblick über das Benutzerverhalten über einen bestimmten Zeitraum zu erhalten.
- Verfolgen Sie Benutzerbewegungen über verschiedene Aktivitäten innerhalb eines Ereignisses hinweg, um das Layout und die Services zu optimieren.
Vorteile der Verwendung von Hypercubes
In diesen Situationen können Sie grundlegende Informationen für bestimmte Kategorien vorberechnen. Wenn Sie jedoch Daten über mehrere Dimensionen und Zeiträume hinweg analysieren, müssen Sie entweder alles aus den Rohdaten neu berechnen oder einen Abfrage-Service-Hypercube verwenden. Hypercubes optimieren den Prozess durch eine effiziente Organisation von Daten, die eine flexible Filterung und mehrdimensionale Analyse ohne erneute Verarbeitung ermöglicht. Sie nutzen erweiterte Funktionen für die schnelle und präzise Schätzung von Ergebnissen und bieten wichtige Vorteile wie verbesserte Verarbeitungseffizienz, Skalierbarkeit und Anpassungsfähigkeit für komplexe Analyseaufgaben.
Datengrößeneffizienz bei der Abfrageverarbeitung
Query Service kann Millionen oder Milliarden von Datenpunkten (z. B. Benutzer-IDs) in eine kompakte Form komprimieren, die als Skizze bezeichnet wird. Diese Skizze hat eine erheblich reduzierte Datengröße für die Abfrageverarbeitung, was die Skalierbarkeit aufrechterhält und die Arbeit viel einfacher und schneller macht. Egal, wie groß die Originaldaten werden, die Größe der Skizze bleibt klein, was die Analyse von Big Data viel leichter handhabbar und effizienter macht.
Die folgende Abbildung zeigt, wie Commerce-, Produktinfo- und Web-Dimensions-ExperienceEvents in Zeichnungen verarbeitet werden, mit denen dann eindeutige Zahlen angenähert werden.
Zusammenführen von Skizzen zur schnelleren und einfacheren Datenanalyse
Um Neuberechnungen zu vermeiden und die Verarbeitungsgeschwindigkeit zu erhöhen, können Sie Zeichnungen aus verschiedenen Kategorien oder Gruppen zusammenführen. Query Service vereinfacht auch das Design, indem es Ihre Daten in einem Hyperwürfel organisiert, wobei jede Zeile zu einer Zusammenfassung ihrer Partition (einer Sammlung von Dimensionen) neben der Skizzenspalte wird. Jede Zeile des Hyper-Cubes enthält die Dimensionskombination, verfügt jedoch über keine Rohdaten. Geben Sie beim Ausführen einer Abfrage die Dimensionsspalten an, die Sie zum Erstellen additiver Metriken verwenden möchten, und führen Sie die Skizzen für diese Zeilen zusammen.
Wirtschaftlichkeit cost-effectiveness
Kundendaten sind oft sehr umfangreich, aber Sie können die Notwendigkeit beseitigen, historische Daten durch inkrementelle Verarbeitung erneut zu verarbeiten. Skizzen sind viel kleiner und ermöglichen schnellere Echtzeit-Ergebnisse bei gleichzeitiger Einsparung von Rechenressourcen und Kosten. Diese Datenumwandlung macht interaktive Abfragen praktikabler und effizienter.
Funktionsübersicht
In diesem Abschnitt wird beschrieben, wie jede Funktion die Datenverarbeitung optimiert und die Analysefunktionen durch die effiziente Verwendung von Skizzen und Hyperwürfeln verbessert. Dort werden ihr Zweck, die Beispielsyntax, die Parameter und die erwartete Ausgabe beschrieben.
Eindeutige Zählungsschätzungen mit HLL-Skizzen erstellen
hll_build_agg
ist eine Aggregatfunktion, die eine HLL-Skizze (HyperLogLog) erstellt. Diese Funktion ist eine kompakte, probabilistische Methode zur Schätzung der Anzahl eindeutiger Werte innerhalb einer Spalte oder eines Ausdrucks in einem gruppierten Datensatz.
Definition der Funktion
hll_build_agg(column [, lgConfigK])
Nutzung:
Das folgende Beispiel zeigt, wie die Funktion in einer Abfrage strukturiert werden kann.
SELECT
[dim1, dim2 ... ,] hll_build_agg(coalesce(col1, col2, col3)) AS sketch_col
FROM fact_sketch_table
[GROUP BY dimension1, dimension2 ...]
Parameter
column
lgConfigK
Ausgabe
sketch_res
SQL-Beispiel
Im folgenden Beispiel wird eine Aggregatskizze für die customer_id
erstellt:
SELECT
country,
hll_build_agg(customer_id, 10) AS sketch
FROM
EXPLODE(
ARRAY<STRUCT<country STRING, customer_id STRING, invoice_id STRING>>[
('UA', 'customer_id_1', 'invoice_id_11'),
('CZ', 'customer_id_2', 'invoice_id_22'),
('CZ', 'customer_id_2', 'invoice_id_23'),
('BR', 'customer_id_3', 'invoice_id_31'),
('UA', 'customer_id_2', 'invoice_id_24')
])
GROUP BY country;
SQL-Beispielausgabe:
Schätzen der eindeutigen Anzahl mit HLL-Skizzen
hll_estimate
ist eine Skalarfunktion, die eine Schätzung der eindeutigen Anzahl innerhalb jeder Zeile eines Datensatzes bereitstellt. Im Gegensatz zu Aggregatfunktionen arbeitet hll_estimate
zeilenweise und wird für die Schätzung der eindeutigen Anzahl aus einer Skizze innerhalb einzelner Zeilen verwendet.
sketch_count
.Definition der Funktion
hll_estimate(sketch_col)
Nutzung:
Das folgende Beispiel zeigt, wie die Funktion in einer Abfrage strukturiert werden kann.
SELECT
[col1, col2 ... ,] hll_estimate(sketch_column) AS estimate
FROM fact_sketch_table
Parameter
sketch_column
Ausgabe
estimate
SQL-Beispiel
Im folgenden Beispiel wird mithilfe der hll_estimate
in einer HLL-Skizze die Anzahl der Kunden nach Land geschätzt:
SELECT
country,
hll_estimate(hll_build_agg(customer_id, 10)) AS distinct_customers_by_country
FROM
(
SELECT
country,
hll_build_agg(customer_id, 10) AS sketch
FROM
EXPLODE(
ARRAY<STRUCT<country STRING, customer_id STRING, invoice_id STRING>>[
('UA', 'customer_id_1', 'invoice_id_11'),
('CZ', 'customer_id_2', 'invoice_id_22'),
('CZ', 'customer_id_2', 'invoice_id_23'),
('BR', 'customer_id_3', 'invoice_id_31'),
('UA', 'customer_id_2', 'invoice_id_24')
])
GROUP BY country
);
SQL-Beispielausgabe:
Zusammenführen mehrerer HLL-Skizzen mit hll_merge_agg
hll_merge_agg
ist eine Aggregatfunktion, die mehrere HLL-Skizzen innerhalb einer Gruppe zusammenführt und eine neue Skizze als Ausgabe erzeugt. Es ermöglicht die Kombination von Skizzen über Partitionen oder Dimensionen hinweg, was die Flexibilität der Datenanalyse erhöht.
Definition der Funktion
hll_merge_agg(sketch_col [, allowDifferentLgConfigK])
Nutzung:
Das folgende Beispiel zeigt, wie die Funktion in einer Abfrage strukturiert werden kann.
SELECT
[dim1, dim2 ... ,] hll_merge_agg(sketch_column.sketch) AS estimate
FROM fact_sketch_table
[GROUP BY dimension1, dimension2 ...]
Parameter
sketch_column
allowDifferentLgConfigK
lgConfigK
zusammengeführt werden. Der Standardwert ist „false“. Es wird eine Ausnahme ausgelöst, wenn der Wert „false“ ist und Zeichnungen unterschiedliche lgConfigK
haben.allowDifferentLgConfigK
auf „false“ gesetzt ist, führt das Zusammenführen von Zeichnungen mit unterschiedlichen lgConfigK
zu einem UnsupportedOperationException
.Ausgabe
sketch_res
SQL-Beispiel
Im folgenden Beispiel werden mehrere HLL-Skizzen in der customer_id
zusammengeführt:
SELECT
hll_merge_agg(hll_sketch) AS uniq_customers_with_invoice
FROM
(
SELECT
country,
hll_build_agg(customer_id) AS hll_sketch
FROM
EXPLODE(
ARRAY<STRUCT<country STRING, customer_id STRING, invoice_id STRING>>[
('UA', 'customer_id_1', 'invoice_id_11'),
('BR', 'customer_id_3', 'invoice_id_31'),
('CZ', 'customer_id_2', 'invoice_id_22'),
('CZ', 'customer_id_2', 'invoice_id_23'),
('BR', 'customer_id_3', 'invoice_id_31'),
('UA', 'customer_id_2', 'invoice_id_24')
])
GROUP BY country
UNION
SELECT
country,
hll_build_agg(customer_id) AS hll_sketch
FROM
EXPLODE(
ARRAY<STRUCT<country STRING, customer_id STRING, invoice_id STRING>>[
('UA', 'customer_id_1', 'invoice_id_21'),
('MX', 'customer_id_3', 'invoice_id_31'),
('MX', 'customer_id_2', 'invoice_id_21')
])
GROUP BY country
)
GROUP BY customer_id;
SQL-Beispielausgabe:
Kardinalität mit hll_merge_count_agg
schätzen
hll_merge_count_agg
ist eine Aggregatfunktion, mit der die Kardinalität (Anzahl der eindeutigen Elemente) einer oder mehrerer Skizzen innerhalb einer Spalte geschätzt wird. Es wird eine einzelne Schätzung für alle in der Gruppierung auftretenden Zeichnungen zurückgegeben. Diese Funktion wird zum Aggregieren von Zeichnungen verwendet und kann nicht als zeilenweise Umwandlung verwendet werden. Verwenden Sie für zeilenweise Schätzungen sketch_estimate
.
Definition der Funktion
hll_merge_count_agg(sketch_col [, allowDifferentLgConfigK])
Nutzung:
Das folgende Beispiel zeigt, wie die Funktion in einer Abfrage strukturiert werden kann.
SELECT
[dim1, dim2 ... ,] hll_merge_count_agg(sketch_column) AS estimate
FROM fact_sketch_table
[GROUP BY dimension1, dimension2 ...]
Parameter
sketch_column
allowDifferentLgConfigK
lgConfigK
zusammengeführt werden. Andernfalls wird eine UnsupportedOperationException
ausgelöst.Ausgabe
estimate
SQL-Beispiel
Im folgenden Beispiel wird die Anzahl der Unique Customers mit Rechnungen mithilfe der hll_merge_count_agg
-Funktion geschätzt:
SELECT
hll_merge_count_agg(hll_sketch) AS uniq_customers_with_invoice
FROM
(
SELECT
country,
hll_build_agg(customer_id) AS hll_sketch
FROM
EXPLODE(
ARRAY<STRUCT<country STRING, customer_id STRING, invoice_id STRING>>[
('UA', 'customer_id_1', 'invoice_id_11'),
('BR', 'customer_id_3', 'invoice_id_31'),
('CZ', 'customer_id_2', 'invoice_id_22'),
('CZ', 'customer_id_2', 'invoice_id_23'),
('BR', 'customer_id_3', 'invoice_id_31'),
('UA', 'customer_id_2', 'invoice_id_24')
])
GROUP BY country
UNION
SELECT
country,
hll_build_agg(customer_id) AS hll_sketch
FROM
EXPLODE(
ARRAY<STRUCT<country STRING, customer_id STRING, invoice_id STRING>>[
('UA', 'customer_id_1', 'invoice_id_21'),
('MX', 'customer_id_3', 'invoice_id_31'),
('MX', 'customer_id_2', 'invoice_id_21')
])
GROUP BY country
)
GROUP BY customer_id;
SQL-Beispielausgabe:
Einschränkungen
Derzeit können Zeichnungen nach der Erstellung nicht aktualisiert werden. Bei zukünftigen Aktualisierungen wird die Funktion zum Aktualisieren von Zeichnungen eingeführt. Mit dieser Funktion können Sie verpasste Durchgänge und spät ankommende Daten effektiver verarbeiten.
Nächste Schritte
Durch das Lesen dieses Dokuments wissen Sie jetzt, wie Sie Hyperwürfel und zugehörige Skizzenfunktionen verwenden können, um eine effiziente Datenverarbeitung für komplexe, mehrdimensionale Analysen durchzuführen, ohne historische Daten erneut verarbeiten zu müssen. Dieser Ansatz spart Zeit, senkt Kosten und bietet die Flexibilität, die für interaktive Abfragen in Echtzeit erforderlich ist. Dadurch ist er ein wertvolles Tool für die Analyse von Big Data in Adobe Experience Platform.
Erkunden Sie anschließend andere Schlüsselkonzepte wie inkrementelles Laden und Datendeduplizierung, um Ihr Verständnis dafür zu vertiefen, wie Sie diese Funktionen effektiv für Ihre spezifischen Datenanforderungen verwenden können.