Design Patterns #3: is_deleted / last_modified | Mňamka #38
is_deleted
Nikdy nemažeme záznamy z databáze. Místo toho záznamy označíme jako smazané, včetně timestamp, kdy ke ‘smazání’ došlo.
Proč?
Smazáním záznamů v databázi může dojít k porušení referenční integrity (např. smazáním zákazníka s existujícími objednávkami). Nekonzistentní data nutně způsobí celou řadu problémů, jako třeba zkreslení v libovolných metrikách počítaných z nekompletních dat.
Jak odhalíme, že některé záznamy zmizely?
Pokud dojde ke smazání záznamů ve zdrojových datech, smazané záznamy můžeme doplnit na základě porovnání s předchozí verzí a označit je is_deleted flagem, například takhle (viz obrázek):
last_modified
Podobně jako is_deleted se hodí, aby databáze ukládala timestamp poslední změny záznamu. Pokud pracujeme inkrementálně, můžeme pomocí last modified timestampy snadno filtrovat nové záznamy, i ty, které se změnily.
Proč?
Pokud někdo upraví historická data, třeba chybně zaúčtovanou fakturu, vyhneme nekonečnému hledání neexistujících chyb, protože snadno zjistíme, že data se změnila. Některé typy chyb je ideální řešit opravným zápisem a historická data neměnit, podobně jako v účetnictví.
Petra
Design Patterns #1: Referenční integrita a chybějící hodnoty | Mňamka #18
Proč? Protože když si připravujeme raw data pro analýzu, taková sada best practices se sakra hodí! Ono v podstatě každý jednoduchý trik, který nám ulehčí práci je dost vítaný. Minimalizuje čas strávený uklízením nepořádku, usnadní tvorbu metrik a reportů a nám, datovým detektivům, pomohou odhalit nesrovnalosti na první pohled.
Design Patterns #2: měna účetnictví / měna operace | Mňamka #23
Fungujete v několika měnách najednou? Pak je potřeba u každého záznamu vždy uvádět měnu účetnictví i měnu operace/transakce spolu s kurzem v době vzniku události. Proč? Vyhnete se tak nepřesnostem, které vznikají z kurzových rozdílů. Jak si na to šikovně připravit data vám ukážu v dnešním článku. Je tu Design Patterns #2.