Sdílet prostřednictvím


Zpracování duplicitních dat v Azure Data Exploreru

Zařízení odesílající data do cloudu udržují místní mezipaměť dat. V závislosti na velikosti dat může místní mezipaměť ukládat data po dobu dnů nebo dokonce měsíců. Chcete chránit analytické databáze před nefunkčními zařízeními, která znovu odposílala data uložená v mezipaměti a způsobovala duplikaci dat v analytické databázi. Duplicity můžou ovlivnit počet záznamů vrácených dotazem. To je relevantní, pokud potřebujete přesný počet záznamů, například počítání událostí. Toto téma popisuje osvědčené postupy pro zpracování duplicitních dat v těchto typech scénářů.

Nejlepším řešením pro duplikaci dat je zabránění duplikaci. Pokud je to možné, vyřešte tento problém dříve v datovém kanálu, čímž se šetří náklady spojené s přesunem dat v rámci datového kanálu a vyhnete se výdajům na prostředky spojené s vyrovnáním se s duplicitními daty přijatými do systému. V situacích, kdy zdrojový systém není možné upravit, existují různé způsoby, jak tento scénář vyřešit.

Vysvětlení dopadu duplicitních dat

Monitorujte procento duplicitních dat. Jakmile zjistíte procento duplicitních dat, můžete analyzovat rozsah problému a obchodní dopad a zvolit vhodné řešení.

Ukázkový dotaz pro identifikaci procenta duplicitních záznamů:

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  

Řešení pro zpracování duplicitních dat

Řešení č. 1: Neodstraňujte duplicitní data

Seznamte se s vašimi obchodními požadavky a s tolerancí duplicitních dat. Některé datové sady se dají spravovat s určitým procentem duplicitních dat. Pokud duplicitní data nemají významný dopad, můžete jejich přítomnost ignorovat. Výhodou neodebraní duplicitních dat není žádná další režie na proces příjmu dat nebo výkon dotazů.

Řešení č. 2: Zpracování duplicitních řádků během dotazu

Další možností je vyfiltrovat duplicitní řádky v datech během dotazu. Agregovanou arg_max() funkci můžete použít k odfiltrování duplicitních záznamů a vrácení posledního záznamu na základě časového razítka (nebo jiného sloupce). Výhodou použití této metody je rychlejší příjem dat, protože k odstranění duplicit dochází během doby dotazování. Kromě toho jsou všechny záznamy (včetně duplicit) k dispozici pro auditování a řešení potíží. Nevýhodou použití arg_max funkce je další doba dotazu a zatížení procesoru při každém dotazování dat. V závislosti na množství dotazovaných dat může toto řešení přestat fungovat nebo využívat paměť a bude vyžadovat přepnutí na jiné možnosti.

V následujícím příkladu se na poslední přijatý záznam dotazujeme na sadu sloupců, které určují jedinečné záznamy:

DeviceEventsAll
| where EventDateTime > ago(90d)
| summarize hint.strategy=shuffle arg_max(EventDateTime, *) by DeviceId, EventId, StationId

Tento dotaz je také možné umístit do funkce místo přímého dotazování tabulky:

.create function DeviceEventsView
{
    DeviceEventsAll
    | where EventDateTime > ago(90d)
    | summarize arg_max(EventDateTime, *) by DeviceId, EventId, StationId
}

Řešení č. 3: Odstranění duplicit pomocí materializovaných zobrazení

Materializovaná zobrazení se dají použít k odstranění duplicitních dat pomocí agregačních funkcí take_any()/arg_min()/arg_max() (viz příklad č. 4 v příkazu pro vytvoření materializovaného zobrazení).

Poznámka

Materializovaná zobrazení mají náklady na využívání prostředků clusteru, které nemusí být zanedbatelné. Další informace najdete v tématu Důležité informace o výkonu materializovaných zobrazení.

Řešení č. 4: Odstranění duplicit pomocí obnovitelného odstranění

Obnovitelné odstranění podporuje možnost odstranit jednotlivé záznamy, a proto se dá použít k odstranění duplicit. Tato možnost se doporučuje pouze u občasných odstraňování, a ne v případě, že neustále potřebujete odstranit duplicity všech příchozích záznamů.

Volba mezi materializovanými zobrazeními a obnovitelném odstraněním pro odstranění duplicitních dat

Existuje několik aspektů, které vám můžou pomoct při výběru mezi použitím materializovaných zobrazení nebo obnovitelného odstranění pro odstranění duplicit:

  • Správa a orchestrace: Materializovaná zobrazení představují plně spravované řešení. Zobrazení je definováno jednou a systém zpracovává odstranění duplicitních dat všech příchozích záznamů. Obnovitelné odstranění vyžaduje orchestraci a správu. Proto pokud materializovaná zobrazení fungují pro váš případ použití, měli byste vždy zvolit tuto možnost.
  • Kdy jsou záznamy odstraněny: Při obnovitelném odstranění jsou duplicitní záznamy nejprve přidány do tabulky a poté odstraněny; Mezi procesy příjmu dat a obnovitelného odstranění proto tabulka obsahuje duplicitní položky. U materializovaných zobrazení budou záznamy v zobrazení vždy odstraněny, protože jsou před vstupem do zobrazení odstraněny.
  • Frekvence: Pokud je potřeba tabulku neustále deduplikovat, použijte materializovaná zobrazení. Pokud předpokládáte, že duplicity budou málo časté a během příjmu dat je dokážete identifikovat, proces obnovitelného odstranění obvykle funguje lépe než materializovaná zobrazení. Například v situaci, kdy vaše ingestování obvykle nemají duplicitní položky, ale občas ingestujete datový proud, o kterém je známo, že obsahuje duplicity. V tomto scénáři je lepší zpracovat tyto duplicity pomocí obnovitelného odstranění, než definovat materializované zobrazení, které se bude neustále pokoušet o odstranění duplicit všech záznamů.

Řešení č. 5: ingest-by Značky rozsahu

Značky rozsahu ingest-by: je možné použít k zabránění duplicit během příjmu dat. To je relevantní pouze v případech použití, kdy je zaručeno, že každá dávka příjmu dat nebude mít žádné duplicity, a duplicity se očekávají pouze v případě, že se stejná dávka příjmu dat ingestuje více než jednou.

Souhrn

Duplikaci dat je možné zpracovat několika způsoby. Pečlivě vyhodnoťte možnosti s ohledem na cenu a výkon a určete správnou metodu pro vaši firmu.