Efficiënte grote gegevensanalyse met hyperkubussen
Leer hoe u hyperkubussen kunt gebruiken in de Adobe Experience Platform Experience Query Service om geavanceerde gegevensanalyse met verbeterde efficiëntie uit te voeren. Dit document behandelt hoe te om geavanceerde functies van de Apache Datasketches bibliotheek te gebruiken om afzonderlijke tellingen en complexe berekeningen incrementeel te behandelen, zonder het moeten historische gegevens telkens opnieuw verwerken.
In de analyse van grote gegevens, impliceert het produceren van metriek zoals verschillende tellingen, aantallen, meest frequente punten, verbindingen, en grafiekanalyse vaak niet-additieve tellingen (waar de resultaten niet eenvoudig kunnen worden samengevat uit subgroepen). Traditionele methoden vereisen de opwerking van alle historische gegevens, die een intensieve en tijdrovende bron kunnen zijn. De schetsen van het gebruik, die compacte overzichten zijn die waarschijnlijkheden gebruiken om grote datasets te vertegenwoordigen, en de geavanceerde functies van de Dienst van de Vraag om dit proces te stroomlijnen door de behoefte aan herberekening te verminderen.
Belangrijke functies van hyperkubussen key-functions
Hyperkubussen bieden verschillende krachtige functies om de efficiëntie en flexibiliteit van gegevensanalyse te verbeteren.
- Aantal unieke gebruikers of verschillende vragen: SQL van het gebruik mogelijkheden om unieke tellingen van gebruikers te produceren die met diverse afmetingen van gegevens, zoals productmeningen, plaatsbezoeken, of handelsactiviteit interactie aangaan, zonder herhaaldelijk het opnieuw analyseren van ruwe gegevens.
- Incrementele verwerking: Voer stijgende updates uit om gegevenspunten over dimensies en tijd te voeden en samen te voegen zonder alles van kras opnieuw te berekenen.
- Multidimensionale analyse: De hyperkubussen laten multi-dimensionaal filtreren en het herschikken van gegevens toe om summiere rijen tot stand te brengen die combinaties van dimensies vertegenwoordigen. Deze samenvattingen kunnen dan worden gebruikt om inzichten met minimale berekeningsoverheadkosten te produceren.
Gebruik hoofdletters/kleine letters voor hyperkubussen use-cases
Met hyperkubussen kunt u op efficiënte wijze duidelijke tellingen genereren voor verschillende gebruikersinteracties zonder dat de gegevens telkens opnieuw worden berekend. Hieronder volgen enkele praktische scenario's voor het gebruik ervan:
- Analyseer unieke bezoekers die specifieke producten tijdens een bepaalde tijdsperiode bekijken.
- Identificeer gebruikers die in een bepaalde periode met meerdere producten in wisselwerking staan om cross-sell analyse te verbeteren.
- Duidelijk gebruikers die met één product maar niet een andere in tijd werken om voorkeurspatronen te ontdekken.
- Combineer online en off-line interactiegegevens om een uitvoerige mening van gebruikersgedrag over een bepaalde periode te krijgen.
- Houd gebruikersbewegingen bij verschillende activiteiten binnen een gebeurtenis om de lay-out en services te optimaliseren.
Voordelen van het gebruik van hyperkubussen
In deze situaties kunt u basisgegevens vooraf berekenen voor specifieke categorieën. Nochtans, wanneer het analyseren van gegevens over veelvoudige dimensies en tijdsperioden, moet u of alles van ruwe gegevens opnieuw berekenen of een hyperkubus van de Dienst van de Vraag gebruiken. Hyperkubussen stroomlijnen het proces door gegevens efficiënt te ordenen, wat flexibele filtering en multidimensionale analyse zonder opwerking mogelijk maakt. Zij gebruiken geavanceerde functies om resultaten snel en nauwkeurig te schatten om zeer belangrijke voordelen zoals betere verwerkingsefficiency, scalability, en aanpassingsvermogen voor complexe analytische taken aan te bieden.
Efficiëntie voor gegevensgrootte voor queryverwerking
De Dienst van de vraag kan miljoenen of miljarden gegevenspunten (bijvoorbeeld, gebruiker IDs) in een compacte vorm samenpersen genoemd een schets. Deze schets heeft een beduidend gereduceerde gegevensgrootte voor vraagverwerking, die scalability handhaaft en het veel gemakkelijker en sneller maakt om met te werken. Hoe groot de oorspronkelijke gegevens ook zijn, de grootte van de schets blijft klein, waardoor het analyseren van grote gegevens veel beheerbaarder en efficiënter wordt.
In het onderstaande diagram ziet u hoe Commerce, Product Info en Web Dimension ExperienceEvents worden verwerkt in schetsen, die vervolgens worden gebruikt om unieke aantallen te benaderen.
Schetsen samenvoegen om gegevensanalyse sneller en eenvoudiger te maken
U voorkomt herberekening en verbeterde verwerkingssnelheid door schetsen van verschillende categorieën of groepen samen te voegen. De Dienst van de vraag vereenvoudigt ook het ontwerp door uw gegevens in een hyperkubus te organiseren, waar elke rij een samenvatting van zijn verdeling (een inzameling van afmetingen) naast de schetskolom wordt. Elke rij van de hyperkubus bevat de dimensiecombinatie maar heeft geen onbewerkte gegevens. Wanneer het uitvoeren van een vraag, specificeer de dimensionele kolommen u voor de bouw van additieve metriek wilt gebruiken en de schetsen voor die rijen samenvoegen.
Kosteneffectiviteit cost-effectiveness
De gegevens van de klant zijn vaak grootschalig, maar u kunt de behoefte elimineren om historische gegevens door stijgende verwerking te gebruiken opnieuw te verwerken. Schetsen zijn veel kleiner en bieden snellere, real-time resultaten en besparen tegelijk op computerbronnen en kosten. Deze gegevenstransformatie maakt interactieve vragen uitvoerbaarder en efficiënter.
Overzicht functies
In deze sectie wordt beschreven hoe elke functie gegevensverwerking optimaliseert en analytische mogelijkheden verbetert door efficiënt gebruik van schetsen en hyperkubussen. Het detailleert hun doel, voorbeeldsyntaxis, parameters, en verwachte output.
Unieke telschattingen maken met HLL-schetsen
hll_build_agg is een geaggregeerde functie die een HLL-schets (HyperLogLog) maakt. Deze functie is een compacte, probabilistische methode om het aantal unieke waarden binnen een kolom of een uitdrukking in een gegroepeerde dataset te schatten.
Functiedefinitie
hll_build_agg(column [, lgConfigK])
Gebruik:
In het volgende voorbeeld wordt getoond hoe de functie binnen een query kan worden gestructureerd.
SELECT
[dim1, dim2 ... ,] hll_build_agg(coalesce(col1, col2, col3)) AS sketch_col
FROM fact_sketch_table
[GROUP BY dimension1, dimension2 ...]
Parameters
columnlgConfigKUitvoer
sketch_resSQL-voorbeeld
In het volgende voorbeeld wordt een geaggregeerde schets gemaakt op de kolom customer_id :
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 voorbeeldoutput:
De verschillende tellingen met HLL-schetsen schatten
hll_estimate is een scalaire functie die een schatting van de verschillende telling binnen elke rij van een dataset verstrekt. In tegenstelling tot statistische functies werkt hll_estimate rijsgewijs en wordt het gebruikt voor het schatten van het aantal elementen dat wordt onderscheiden van een schets binnen afzonderlijke rijen.
sketch_count voor geaggregeerde tellingen.Functiedefinitie
hll_estimate(sketch_col)
Gebruik:
In het volgende voorbeeld wordt getoond hoe de functie binnen een query kan worden gestructureerd.
SELECT
[col1, col2 ... ,] hll_estimate(sketch_column) AS estimate
FROM fact_sketch_table
Parameters
sketch_columnUitvoer
estimateSQL-voorbeeld
In het volgende voorbeeld wordt het aantal klanten per land bepaald met behulp van de functie hll_estimate op een HLL-schets:
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 Uitvoer van het Voorbeeld:
Meerdere HLL-schetsen samenvoegen met hll_merge_agg
hll_merge_agg is een geaggregeerde functie waarmee meerdere HLL-schetsen in een groep worden samengevoegd. Hierdoor wordt een nieuwe schets als uitvoer gegenereerd. Het maakt de combinatie van schetsen tussen verdelingen of dimensies mogelijk, waardoor de flexibiliteit van gegevensanalyse wordt vergroot.
Functiedefinitie
hll_merge_agg(sketch_col [, allowDifferentLgConfigK])
Gebruik:
In het volgende voorbeeld wordt getoond hoe de functie binnen een query kan worden gestructureerd.
SELECT
[dim1, dim2 ... ,] hll_merge_agg(sketch_column.sketch) AS estimate
FROM fact_sketch_table
[GROUP BY dimension1, dimension2 ...]
Parameters
sketch_columnallowDifferentLgConfigKlgConfigK waarden toe. De standaardwaarde is false. Er wordt een uitzondering gegenereerd wanneer de waarde false is en schetsen andere lgConfigK -waarden hebben.allowDifferentLgConfigK is ingesteld op false, resulteert het samenvoegen van schetsen met verschillende lgConfigK -waarden in een UnsupportedOperationException .Uitvoer
sketch_resSQL-voorbeeld
In het volgende voorbeeld worden meerdere HLL-schetsen samengevoegd in de kolom customer_id :
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 Uitvoer van het Voorbeeld:
Kardinaliteit schatten met hll_merge_count_agg
hll_merge_count_agg is een statistische functie die de kardinaliteit (aantal unieke elementen) schat van een of meer schetsen in een kolom. Er wordt één schatting geretourneerd voor alle schetsen die binnen de groep worden aangetroffen. Deze functie wordt gebruikt voor het samenvoegen van schetsen en kan niet worden gebruikt als een rijgewijze transformatie. Gebruik sketch_estimate voor rijsgewijze schattingen.
Functiedefinitie
hll_merge_count_agg(sketch_col [, allowDifferentLgConfigK])
Gebruik:
In het volgende voorbeeld wordt getoond hoe de functie binnen een query kan worden gestructureerd.
SELECT
[dim1, dim2 ... ,] hll_merge_count_agg(sketch_column) AS estimate
FROM fact_sketch_table
[GROUP BY dimension1, dimension2 ...]
Parameters
sketch_columnallowDifferentLgConfigKlgConfigK -waarden samen te voegen. Anders wordt een UnsupportedOperationException gegenereerd.Uitvoer
estimateSQL-voorbeeld
In het volgende voorbeeld wordt het aantal unieke klanten met facturen geschat dat de functie hll_merge_count_agg gebruikt:
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 Uitvoer van het Voorbeeld:
Beperkingen
Schetsen kunnen op dit moment niet worden bijgewerkt als ze eenmaal zijn gemaakt. In toekomstige updates wordt de mogelijkheid geïntroduceerd om schetsen bij te werken. Met deze functionaliteit kunt u gemiste looppas en laat-aankomende gegevens effectiever behandelen.
Volgende stappen
Door dit document te lezen, weet u nu hoe u hyperkubussen en bijbehorende schetsfuncties kunt gebruiken om efficiënte gegevensverwerking uit te voeren voor complexe, multidimensionale analyses zonder dat u historische gegevens opnieuw hoeft te verwerken. Deze aanpak bespaart tijd, verlaagt de kosten en biedt de flexibiliteit die nodig is voor interactieve realtime query's, waardoor deze een waardevol instrument zijn voor analyse van grote gegevens in Adobe Experience Platform.
Daarna, onderzoek andere zeer belangrijke concepten zoals stijgende lading en gegevensdeduplicatie om uw begrip van te verdiepen hoe te om deze functies effectief voor uw specifieke gegevensbehoeften te gebruiken.