Giggabytes

Tapausesimerkki · julkinen data

Kun viikkoraportti ja kuukausiraportti eivät täsmää.

Miksi vähittäiskaupan tunnusluvut eivät täsmää ja miten ne rakennetaan oikein. Jokaisen tämän sivun luvun voi toistaa julkisesta datasta.

  • 10,4 %keskimääräinen kuukausivirheviikkosummat koottuna kuukausiksi
  • 42/48kuukaudesta poikkesi yli 5 %
  • +20,3 %pahin kuukausihuhtikuu 2024
  • −15,9 %huhtikuun 2025 kasvu oikopolullatodellisuudessa +3,7 %

Maanantain ongelma

Kuvitelkaa kuukausiraportti, jonka mukaan maaliskuu oli heikko, ja viikkonäkymä, jonka mukaan mitään ei tapahtunut. Taloushallinto luottaa toiseen, kaupallinen tiimi toiseen, ja datatiimi käyttää viikon selittäessään, että molemmat ovat ”oikeassa”.

Tämän ristiriidan taustalla oleva kalenterivaikutus on niin suuri, että tilastovirastot ja kauppayhtiöt nostavat sen esiin julkaistessaan myyntilukujaan:

  • Ruotsin tilastokeskuksen mukaan päivittäistavarakaupan myynnin määrä kasvoi huhtikuussa 2025 7,2 % edellisvuodesta mutta kalenterikorjattuna vain 1,9 %, pääosin koska pääsiäinen osui vuonna 2025 huhtikuulle ja vuonna 2024 maaliskuulle. SCB, toukokuu 2025 (avautuu uudessa välilehdessä)
  • Keskon päivittäistavarakaupan myynti kasvoi maaliskuussa 2026 11,3 %, ja yhtiö arvioi pääsiäisen ajoituksen vaikutukseksi ruokakauppoihin myytäessä noin 6–7 prosenttiyksikköä. Kesko, huhtikuu 2026 (avautuu uudessa välilehdessä)
  • Ison-Britannian vähittäiskaupan kokonaismyynti kasvoi huhtikuussa 2025 7,0 %. British Retail Consortium raportoi maalis- ja huhtikuun yhdessä, 4,3 %, tasoittaakseen pääsiäisen siirtymisen maaliskuulta huhtikuulle. BRC, toukokuu 2025 (avautuu uudessa välilehdessä)
  • Ison-Britannian tilastovirasto ONS korjasi tavan, jolla sen neljän ja viiden viikon keruujaksot sovitetaan kalenterikuukausiin (samalla tarkistettiin kausitasoitus). Huhtikuun 2025 myynnin määrän kasvu muuttui +1,7 %:sta −0,4 %:iin ja tammikuun 2025 +1,4 %:sta −0,4 %:iin. ONS, syyskuu 2025 (avautuu uudessa välilehdessä)

Nämä ovat julkaistuja lukuja, ja selitys on kerrottu niiden rinnalla. Sisäiset raportit altistuvat samoille kalenterivaikutuksille aina, kun niissä verrataan viikkoja kuukausiin tai kuukautta toiseen, mutta selitys kulkee mukana vain, jos joku lisää sen jokaiseen raporttiin. Tekninen ratkaisu on rakentaa kalenterilogiikka alustaan kerran, jolloin jokainen raportti perii sen.

Rajaus. Kalenteriluvut perustuvat yhteen julkiseen aikasarjaan: Tanskan korttimaksujen päivittäiseen summaan (Danmarks Nationalbank, taulu DNBSK1) jokaiselta päivältä tammikuusta 2022 joulukuuhun 2025. Se kattaa kaikki maan korttimaksut, ei yhden kauppiaan myyntiä. Asiakas- ja kampanjaluvut tarvitsevat asiakastason myyntiä, jota mikään tuore maksuton aineisto ei tarjoa, joten niissä käytetään UCI Online Retail II -aineistoa (brittiläinen verkkokauppa, joulukuu 2009 – joulukuu 2011).

Yksi viikko, kaksi kuukautta

Kaupalliset tiimit tarkastelevat lukuja usein viikoittain, kun taas taloushallinto sulkee kirjat kalenterikuukausittain. Viikko ei mahdu kuukauden sisään, joten jonkin säännön on ratkaistava, mihin kuukauteen rajaviikko kuuluu. Yksinkertainen sääntö on laskea yhteen viikot, jotka alkavat kuukauden aikana (tässä maanantaista sunnuntaihin). Se on helppo rakentaa ja läpäisee jokaisen summien tarkistuksen, ja juuri siksi se on riskialtis. Tällä sivulla sitä kutsutaan oikopoluksi.

Yksi viikko, kaksi kuukautta: ma 29.4. – su 5.5.2024

Viikon summa on sama kummallakin tavalla. Vain kuukausi, jolle se kirjautuu, muuttuu, joten mikään summatarkistus ei epäonnistu.

Korttimaksut, milj. DKK: oikein laskettu ja oikopolku
KuukausiOikeinOikopolkuVirhe
Maaliskuu 202447 38341 652−12,1 %
Huhtikuu 202448 22458 020+20,3 %
Huhtikuu 202548 16545 481−5,6 %

48 täyden kuukauden aikana kuukausi poikkesi keskimäärin 10,4 %, ja 42/48 kuukaudesta poikkesi yli 5 %. Yksikään päivä ei katoa eikä tule lasketuksi kahdesti: oikopolku vain siirtää päiviä viereisten kuukausien välillä, minkä vuoksi virhe voi jäädä huomaamatta tarkastuksessa.

Oikopolun virhe kuukausittain, % oikeasta korttimaksujen summasta48 täyttä kuukautta · viivan yläpuolella oikopolku yliarvioi, alapuolella aliarvioi
Valitse kuukausi

Huhtikuu 2024 · 5 viikkoa alkaa tässä kuussa

Oikein
48 224 milj. DKK
Oikopolku
58 020 milj. DKK
Virhe
+20,3 %
Muutos maaliskuusta
+1,8 % oikein · +39,3 % oikopolku
Kaikki 48 kuukautta taulukkona
KuukausiAlkavia viikkojaOikein (milj. DKK)Oikopolku (milj. DKK)Virhe
Tammikuu 2022540 07647 817+19,3 %
Helmikuu 2022441 20641 572+0,9 %
Maaliskuu 2022445 59041 572−8,8 %
Huhtikuu 2022448 76544 935−7,9 %
Toukokuu 2022549 76057 363+15,3 %
Kesäkuu 2022447 91744 095−8,0 %
Heinäkuu 2022449 81944 137−11,4 %
Elokuu 2022549 16756 390+14,7 %
Syyskuu 2022445 30641 567−8,3 %
Lokakuu 2022545 64752 221+14,4 %
Marraskuu 2022448 75246 334−5,0 %
Joulukuu 2022452 79146 326−12,2 %
Tammikuu 2023542 46147 416+11,7 %
Helmikuu 2023438 39840 912+6,5 %
Maaliskuu 2023447 30342 565−10,0 %
Huhtikuu 2023448 40444 498−8,1 %
Toukokuu 2023550 37554 896+9,0 %
Kesäkuu 2023447 47446 894−1,2 %
Heinäkuu 2023549 71754 519+9,7 %
Elokuu 2023448 07545 279−5,8 %
Syyskuu 2023444 08340 063−9,1 %
Lokakuu 2023546 66253 089+13,8 %
Marraskuu 2023449 44047 428−4,1 %
Joulukuu 2023453 27246 930−11,9 %
Tammikuu 2024541 43548 324+16,6 %
Helmikuu 2024439 83238 675−2,9 %
Maaliskuu 2024447 38341 652−12,1 %
Huhtikuu 2024548 22458 020+20,3 %
Toukokuu 2024452 46046 640−11,1 %
Kesäkuu 2024451 50947 533−7,7 %
Heinäkuu 2024550 18357 918+15,4 %
Elokuu 2024451 14345 384−11,3 %
Syyskuu 2024546 31755 021+18,8 %
Lokakuu 2024447 76242 875−10,2 %
Marraskuu 2024449 95846 532−6,9 %
Joulukuu 2024551 51856 339+9,4 %
Tammikuu 2025443 69840 175−8,1 %
Helmikuu 2025441 14040 810−0,8 %
Maaliskuu 2025546 46554 075+16,4 %
Huhtikuu 2025448 16545 481−5,6 %
Toukokuu 2025452 27445 986−12,0 %
Kesäkuu 2025549 95859 115+18,3 %
Heinäkuu 2025450 00044 931−10,1 %
Elokuu 2025451 12545 065−11,9 %
Syyskuu 2025546 70155 954+19,8 %
Lokakuu 2025448 74443 408−10,9 %
Marraskuu 2025451 27147 355−7,6 %
Joulukuu 2025553 77459 267+10,2 %

Päätöksiin voi vaikuttaa ennen kaikkea kasvu. Oikopolun mukaan huhtikuu 2024 kasvoi maaliskuusta +39,3 %; todellisuudessa kasvua oli +1,8 %. Vuotta myöhemmin oikopolku näytti huhtikuulle 2025 laskua 15,9 %, vaikka todellisuudessa myynti kasvoi +3,7 %. Asiakkaissa ei muuttunut mikään: huhtikuussa 2024 oli viisi maanantaita ja maaliskuussa neljä, ja vuonna 2025 tilanne oli päinvastainen.

Loppu erosta on itse kalenteria: pääsiäinen, karkauspäivät ja viikonpäivien jakauma. Juuri sitä edellä mainitut ruotsalaiset, suomalaiset ja brittiläiset luvut mittaavat. Kun maaliskuuta verrataan edellisen vuoden maaliskuuhun, osa muutoksesta johtuu pelkästä kalenterista.

Miten se on rakennettu

Korjaus ei ole parempi kaavio. Se on kalenteri-, asiakas- ja mittauslogiikka, joka rakennetaan alustaan kerran, jolloin jokainen raportti perii sen. Kukin luku näyttää, miten se tehdään, dataputken omien kaavioiden ja tarkistusten avulla.

Mikä sen korjaa: yksi kalenteri, liitos päivämäärään, tarkistus joka ajossaKaaviot kokonaisuudessaan ovat luvussa 1.

Yksi konfiguraatio tuottaa kalenterit. Jokaisella kalenteripäivällä on viikkonsa ja vähittäiskaupan jaksonsa, ja kalenterikuukaudet muodostetaan pelkistä päivämääristä. Faktat liitetään tapahtumapäivään. Joka ajossa error-tason tarkistukset varmistavat, että jokainen tapahtumapäivä kuuluu täsmälleen yhteen viikkoon ja jaksoon ja että summat säilyvät kaikissa kolmessa konfiguroidussa kalenterissa. Viikko-, jakso- ja kuukausiraportit koostavat sitten samat päivittäiset faktat.

  1. KonfigurointiYksi kalenteritiedostoKuvio, viikon aloituspäivä ja vuoden päättyminen määritellään kerran.
    • calendars.toml
  2. GenerointiPäivämäärärunkoJokaisella päivällä on viikkonsa ja jaksonsa; kuukaudet muodostetaan vain päivämääristä.
    • calendar_date
  3. LiitosFaktat päivämääräänJokainen myyntirivi liitetään runkoon päivämääränsä, ei koskaan viikkonsa perusteella.
    • fct_transaction_line
  4. RaportointiViikko, jakso, kuukausiJokainen näkymä koostaa samat päivittäiset faktat, joten ne täsmäävät.
  1. 01Kalenterin korjausYksi kalenteri, rakennettu kerran, todennettu joka ajossaYksi konfiguraatio tuottaa jokaisen kalenterin, jolla liiketoiminta raportoi. Faktat liitetään päivämäärään, ja kolme tarkistusta ajetaan oikealla datalla ennen kuin mikään päätyy raporttiin.Yksi konfiguraatio · Päivämääristä jokaiseen kalenteriin · 53. viikko · Tarkistetaan joka ajossa · 504 kalenteria, 40 vuottaLue luku 1
  2. 02AsiakashistoriaAsiakasmäärät, jotka eivät muutu huomaamattaAsiakkaan attribuutit versioidaan, tila johdetaan ostopäivistä ja konfiguraatiossa pidetyistä raja-arvoista, ja testi epäonnistuu, jos myyntirivi osuu kahteen asiakasversioon.Versiot, ei päällekirjoitusta · Tila ostopäivistä · Historian tarkistusportitLue luku 2
  3. 03Kampanjoiden mittausMenetelmän testaus kampanjoilla, joilla ei ollut vaikutustaSimuloidut kampanjat, joiden vaikutus tiedetään nollaksi. Ensimmäinen estimaattori ei läpäissyt tätä testiä, sitä muutettiin kerran ilmoitetusta syystä, ja jäljelle jäänyt poikkeama raportoidaan.Simulaatio · Estimaattori · Nollatesti · Mitä raportoidaanLue luku 3
  4. 04AlustaKiinnitetystä julkisesta tiedostosta testattuihin Gold-tauluihinHaku, Bronze, Silver, Gold ja vienti Databricksissä: laatuportit pysäyttävät ajon, hylätyt rivit siirtyvät karanteeniin eikä niitä pudoteta hiljaa, ja infrastruktuuri on koodina.Päästä päähän · Data · Laatuportit · Käyttöönotto ja CILue luku 4

Mitä tämä ei todista

Yhden maan korttimaksut eivät ole kauppaketjun myyntiä, jossa on myymälöitä, alueita ja kanta-asiakasohjelma. Kalenterivirheen suuruus riippuu kalenterista, viikon aloituspäivästä ja siitä, miten myynti jakautuu viikon sisällä; teidän lukunne poikkeavat näistä. Mekanismi ja sen paljastavat tarkistukset pätevät silti.

Neljä kysymystä omaan raportointiinne

  1. Muodostetaanko kuukausilukunne päivämääristä vai kokoamalla viikkoja?
  2. Jos ajatte viime vuosineljänneksen asiakasmäärät uudelleen tänään, muuttuvatko ne ja osaako kukaan sanoa, miksi?
  3. Ovatko asiakaspoistuman ja aktiivisuuden määritelmät versioidussa konfiguraatiossa vai raporttilogiikan sisällä?
  4. Onko koskaan osoitettu, että kampanjamittauksenne antaa tulokseksi nollan kampanjalle, jolla ei ollut vaikutusta?

Jos jokin vastaus sai teidät epäröimään, ottakaa yhteyttä.

Data ja lähteet

Kalenteriluvut: Danmarks Nationalbank, taulu DNBSK1 (korttimaksut päivittäin, DKK); omat laskelmat. Asiakas- ja kampanjaluvut: Chen, D. (2012). Online Retail II [Dataset]. UCI Machine Learning Repository. doi.org/10.24432/C5CG6D (avautuu uudessa välilehdessä) (CC BY 4.0).