Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Enheter som skickar data till molnet upprätthåller en lokal cache av data. Beroende på datastorleken kan den lokala cachen lagra data i dagar eller till och med månader. Du vill skydda dina analysdatabaser från felaktiga enheter som skickar om cachelagrade data och orsakar dataduplicering i analysdatabasen. Dubbletter kan påverka antalet poster som returneras av en fråga. Det här problemet är relevant när du behöver ett exakt antal register, till exempel när du räknar händelser. Den här artikeln beskriver metodtips för hantering av duplicerade data för dessa typer av scenarier.
Den bästa lösningen för dataduplicering är att förhindra dupliceringen. Åtgärda om möjligt problemet tidigare i datapipelinen. Den här metoden sparar kostnader som är kopplade till dataflytt längs datapipelinen och undviker att spendera resurser på att hantera duplicerade data som matas in i systemet. I situationer där du inte kan ändra källsystemet kan du dock använda olika metoder för att hantera det här scenariot.
Förstå effekten av duplicerade data
Övervaka procentandelen duplicerade data. När du har upptäckt procentandelen duplicerade data kan du analysera omfånget för problemet och affärspåverkan och välja lämplig lösning.
Exempelfråga för att identifiera procentandelen duplicerade poster:
let _sample = 0.01; // 1% sampling
let _data =
DeviceEventsAll
| where EventDateTime between (datetime('10-01-2018 10:00') .. datetime('10-10-2018 10:00'));
let _totalRecords = toscalar(_data | count);
_data
| where rand()<= _sample
| summarize recordsCount=count() by hash(DeviceId) + hash(EventId) + hash(StationId) // Use all dimensions that make row unique. Combining hashes can be improved
| summarize duplicateRecords=countif(recordsCount > 1)
| extend duplicate_percentage = (duplicateRecords / _sample) / _totalRecords
Lösningar för hantering av duplicerade data
Lösning 1: Ta inte bort dubblettdata
Förstå dina affärskrav och tolerans för duplicerade data. Vissa datauppsättningar kan hantera med en viss procentandel duplicerade data. Om duplicerade data inte har någon större inverkan kan du ignorera dess närvaro. Fördelen med att inte ta bort dubblettdata är att det inte lägger till några extra kostnader för inmatningsprocessen eller frågeprestanda.
Lösning 2: Hantera dubbletter av rader under frågan
Ett annat alternativ är att filtrera bort de duplicerade raderna i data under frågan. Du kan använda arg_max() aggregeringsfunktionen för att filtrera bort de duplicerade posterna och returnera den sista posten baserat på tidsstämpeln (eller en annan kolumn). Fördelen med att använda den här metoden är snabbare inmatning eftersom deduplicering sker under frågetiden. Dessutom är alla poster (inklusive duplicerade poster) tillgängliga för granskning och felsökning. Nackdelen arg_max med att använda funktionen är den extra frågetiden och belastningen på processorn varje gång data efterfrågas. Beroende på mängden data som efterfrågas kan den här lösningen bli icke-funktionell eller minneskrävande och kräva växling till andra alternativ.
I följande exempel söker vi efter den senaste posten som har matats in för en uppsättning kolumner som avgör de unika posterna.
DeviceEventsAll
| where EventDateTime > ago(90d)
| summarize hint.strategy=shuffle arg_max(EventDateTime, *) by DeviceId, EventId, StationId
Du kan också placera den här frågan i en funktion i stället för att fråga tabellen direkt:
.create function DeviceEventsView
{
DeviceEventsAll
| where EventDateTime > ago(90d)
| summarize arg_max(EventDateTime, *) by DeviceId, EventId, StationId
}
Lösning 3: Använda materialiserade vyer för att deduplicera
Du kan använda materialiserade vyer för deduplicering med hjälp av aggregeringsfunktionerna take_any()/arg_min()/arg_max() (se exempel #4 i kommandot materialiserad vyskapande).
Anmärkning
Materialiserade vyer förbrukar klusterresurser, vilket kanske inte är försumbart. Mer information finns i materialiserade vyers prestandaöverväganden.
Lösning 4: Använd mjuk borttagning för att ta bort dubbletter
Mjuk borttagning stöder möjligheten att ta bort enskilda poster, så att du kan använda den för att ta bort dubbletter. Använd endast det här alternativet för sällsynta borttagningar, inte om du ständigt behöver deduplicera alla inkommande poster.
Välj mellan materialiserade vyer och mjuk borttagning för datadeduplicering
Tänk på följande faktorer när du väljer mellan materialiserade vyer och mjuk borttagning för deduplicering:
- Hantering och orkestrering: Materialiserade vyer är en fullständigt hanterad lösning. Du definierar en vy en enda gång och systemet hanterar deduplicering för alla inkommande poster. Mjuk borttagning kräver orkestrering och hantering. Om materialiserade vyer fungerar för ditt användningsfall väljer du det här alternativet.
- När poster dedupliceras: Med mjuk borttagning lägger du först till duplicerade poster i en tabell och tar sedan bort dem. Mellan inmatningen och de mjuka borttagningsprocesserna innehåller tabellen alltså dubbletter. Med materialiserade vyer dedupliceras alltid poster i vyn eftersom systemet deduplicerar dem innan de kommer in i vyn.
- Frekvens: Om du ständigt behöver deduplicera en tabell använder du materialiserade vyer. Om dubbletter är ovanliga och du kan identifiera dem under inmatningen presterar den mjuka borttagningsprocessen vanligtvis bättre än materialiserade vyer. Om dina inmatningar normalt saknar dubbletter men ibland inkluderar en ström känd för att innehålla sådana, är det bättre att hantera dessa dubbletter med soft delete i stället för att definiera en materialiserad vy som ständigt försöker deduplicera alla uppgifter.
Lösning 5: ingest-by utsträckningstaggar
Du kan använda "ingest-by:"-taggar för att förhindra dubbletter under inmatning. Den här lösningen är endast relevant i användningsfall där varje inmatningsbatch inte har några dubbletter och dubbletter endast inträffar om samma inmatningsbatch matas in mer än en gång.
Sammanfattning
Du kan hantera dataduplicering på flera sätt. Utvärdera alternativen noggrant, med hänsyn till pris och prestanda, för att fastställa den bästa metoden för ditt företag.