Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Zařízení, která odesílají 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 odsílala data uložená v mezipaměti a způsobila duplikaci dat v analytické databázi. Duplicity můžou ovlivnit počet záznamů vrácených dotazem. Tento problém je relevantní, pokud potřebujete přesný počet záznamů, například při počítání událostí. Tento článek 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 v datovém toku dříve. Tento přístup ušetří náklady spojené s přesunem dat datovým potrubím a zabraňuje plýtvání prostředky na zvládání duplicitních dat přijatých do systému. V situacích, kdy nemůžete změnit zdrojový systém, ale můžete k vyřešení tohoto scénáře použít různé metody.
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í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 nezachování duplicitních dat je, že nepřidává žádnou režijní zátěž na proces příjmu nebo na 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. Pomocí agregační funkce můžete arg_max() vyfiltrovat duplicitní záznamy a vrátit poslední záznam 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í duplicitních dat 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 použití arg_max 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 může toto řešení přestat fungovat nebo spotřebovávat hodně paměti a může vyžadovat přechod 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 můžete také umístit do funkce místo přímého dotazování na tabulku:
.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í
K odstranění duplicitních dat můžete použít materializovaná zobrazení 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í spotřebovávají prostředky clusteru, což nemusí být zanedbatelné. Další informace najdete v materializovaných zobrazeních s ohledem na výkon.
Řešení 4: Použití soft delete k odstranění duplicit
Soft delete umožňuje smazání jednotlivých záznamů, takže ho můžete použít k odstranění duplicit. Tuto možnost použijte pouze pro občasné odstranění, ne pokud potřebujete trvale odstranit všechny příchozí záznamy.
Volba mezi materializovanými zobrazeními a obnovitelné odstranění pro odstranění duplicitních dat
Při výběru mezi materializovanými zobrazeními a měkkým smazáním pro deduplikaci zvažte následující faktory.
- Správa a orchestrace: Materializovaná zobrazení jsou plně spravované řešení. Definujete zobrazení jednou a systém zpracovává odstranění duplicitních dat pro všechny příchozí záznamy. Obnovitelné odstranění vyžaduje orchestraci a správu. Pokud materializovaná zobrazení fungují pro váš případ použití, zvolte tuto možnost.
- Při odstranění záznamů: Při obnovitelném odstranění nejprve přidáte duplicitní záznamy do tabulky a pak je odstraníte. Takže mezi procesy příjmu dat a měkkého odstranění tabulka obsahuje duplicitní položky. U materializovaných zobrazení jsou záznamy v zobrazení vždy bez duplikátů, protože systém odstraní duplikáty před jejich zahrnutím do zobrazení.
- Frekvence: Pokud potřebujete tabulku neustále deduplikovat, použijte materializovaná zobrazení. Pokud jsou duplicity vzácné a během importu je můžete identifikovat, proces měkkého mazání obvykle funguje lépe než materializovaná zobrazení. Pokud například příjem dat obvykle nemá duplicity, ale občas obsahuje datový proud, o němž je známo, že obsahuje duplicity, je lepší tyto duplicity zpracovat pomocí obnovitelného odstranění a nedefinovat materializované zobrazení, které se neustále pokouší odstranit duplicity všech záznamů.
Řešení 5: ingest-by značky rozsahu
Značky rozsahu "ingest-by:" můžete použít k zabránění duplicit během příjmu dat. Toto řešení je relevantní pouze v případech, kdy každá dávka nahrání dat nemá žádné duplicity, a duplicity se vyskytují pouze v případě, že se stejná dávka nahrává vícekrát.
Shrnutí
Duplikaci dat můžete zpracovávat několika způsoby. Pečlivě vyhodnoťte možnosti s ohledem na cenu a výkon, abyste určili nejlepší metodu pro vaši firmu.