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 zabezpečit analytické databáze před nefunkčními zařízeními, která znovu odsílala data uložená v mezipaměti, a způsobit duplikaci dat v analytické databázi. Duplicity můžou ovlivnit počet záznamů vrácených dotazem. To je relevantní v případě, že 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 pro tyto typy scénářů.

Nejlepším řešením duplikace dat je zabránění duplikování. Pokud je to možné, opravte problém dříve v datovém kanálu, který šetří náklady spojené s přesunem dat v rámci datového kanálu a zabraňuje prostředkům útraty při zvládnutí duplicitních dat přijatých do systému. V situacích, kdy se zdrojový systém nedá upravit, existují různé způsoby řešení tohoto scénáře.

Vysvětlení dopadu duplicitních dat

Monitorujte procento duplicitních dat. Po zjištění procenta duplicitních dat můžete analyzovat rozsah problému a obchodního dopadu 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: Neodebíjejte duplicitní data

Porozumíte obchodním požadavkům a toleranci duplicitních dat. Některé datové sady se dají spravovat s určitým procentem duplicitních dat. Pokud duplicitní data nemají velký dopad, můžete jeho přítomnost ignorovat. Výhodou odebrání duplicitních dat není žádná další režie na výkon procesu příjmu dat nebo dotazů.

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

Další možností je vyfiltrovat duplicitní řádky v datech během dotazu. Agregovaná arg_max() funkce se dá použít k vyfiltrová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 odstranění duplicit probíhá během doby dotazu. Kromě toho jsou k dispozici všechny záznamy (včetně duplicit) pro auditování a řešení potíží. Nevýhodou arg_max použití funkce je dodatečný čas dotazu a zatížení procesoru při každém dotazování dat. V závislosti na množství dotazovaných dat se toto řešení může stát nefunkční nebo spotřebovávané paměti a bude vyžadovat přepnutí na jiné možnosti.

V následujícím příkladu se dotazujeme na poslední přijatý záznam pro 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 lze také 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í duplicitních dat 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 materializovaném zobrazení příkazu create).

Poznámka:

Materializovaná zobrazení mají náklady na využívání prostředků clusteru, které nemusí být zanedbatelné. Další informace najdete v materializovaných zobrazeních s ohledem na výkon.

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

Obnovitelné odstranění podporuje možnost odstranit jednotlivé záznamy, a proto je možné je použít k odstranění duplicit. Tato možnost se doporučuje pouze pro občasné odstranění, a ne v případě, že neustále potřebujete odstranit duplicit všechny příchozí záznamy.

Volba mezi materializovanými zobrazeními a obnovitelné odstranění 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í duplicitních dat:

  • Správa a orchestrace: Materializovaná zobrazení jsou 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 tuto možnost vždy zvolit.
  • Pokud jsou záznamy odstraněny: Při obnovitelném odstranění se duplicitní záznamy nejprve přidají do tabulky a pak se odstraní. Proto mezi procesy příjmu dat a obnovitelného odstranění obsahuje tabulka 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 musí být tabulka trvale odstraněna duplicitními daty, použijte materializovaná zobrazení. Pokud předpokládáte, že duplicity budou občasné a během příjmu dat je dokážete identifikovat, proces obnovitelného odstranění obvykle funguje lépe než materializovaná zobrazení. Pokud máte například situaci, kdy příjem dat obvykle nemá duplicity, ale občas ingestujete datový proud, který je známý, ž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 odstranit duplicitní data všech záznamů.

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

Značky rozsahu 'ingest-by:' lze použít k zabránění duplicit během příjmu dat. To je relevantní pouze v případech použití, kdy každá dávka příjmu dat zaručuje, že nemá žá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.

Shrnutí

Duplikace dat se dá 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.