Egy beszállítói fájl egyik termékénél nincs ár. Az importáló program mégis 0 Ft-ot ír a termék mellé, mert az üres értéket automatikusan számmá alakította. A kész rekord így szabályos számot tartalmaz, miközben a forrásból nem következik, hogy a termék ingyenes.
Az adatminőség egyik alapfeladata az ismeretlen, a hiányzó és a valóban nulla érték elkülönítése. Ez a megjelenítésre, az átlagokra, a szűrésre és a publikálásra is hat. Az üres mező eltüntetése nem javítja meg a hiányzó üzleti információt.
Három termék, két ismert ár
Legyen három saját mintatermék. Az első ismert ára 1000 Ft, a másodiké 1200 Ft, a harmadiknál pedig hiányzik az ár. A két ismert adat átlaga (1000 + 1200)/2 = 1100 Ft.
Ha a hiányzó mezőből nulla lesz, a program (1000 + 1200 + 0)/3 = 733,33 Ft átlagot számol. Ez 366,67 Ft-tal kisebb az ismert árak átlagánál. A 733,33 Ft csak akkor volna a három termék helyes átlaga, ha a harmadik valóban 0 Ft-ba kerülne.
A megbízható riport ezért ezt írja: három termékből kettőnél ismert az ár; az ismert árak átlaga 1100 Ft. A lefedettség 2/3 = 66,67%. Így a hiányt nem rejti el egy látszólag pontos összesítés.
A nyelvi típusátalakítás nem üzleti döntés
A JavaScript Number átalakítása a null értékből és az üres szövegből nullát képezhet, a false értékből szintén nullát, a true értékből pedig egyet. Ezeket az átalakításokat az ECMAScript ToNumber és szövegkonverziós szabályai írják le.
Ezek szabályos programnyelvi viselkedések. Attól még hibásak lehetnek egy ármező értelmezéseként. A „véges számmá alakítható” feltétel ezért túl gyenge, ha a forrás kizárólag valódi numerikus adatot vagy szigorúan meghatározott szöveges számformátumot enged meg.
Először az eredeti típust és az ürességet vizsgáld. Ezután következzen a megengedett alak, majd a tartomány. Egy termékárnál külön kell eldönteni, hogy a nulla engedélyezett-e, milyen pénznemről van szó, és tartalmazza-e az adót.
A hibaállapot legyen önálló adat
Hasznos saját importmodellben az árhoz tartozhat állapot: ismert, hiányzó, hibás formátumú vagy később ellenőrzendő. A tényleges numerikus érték csak az ismert állapothoz kerül. A hibás eredeti szöveget korlátozott hozzáférésű napló vagy hibajegyzék őrizheti meg.
A „kérésre ár” felirat például nem numerikus nulla. A 0 viszont lehet jóváhagyott ingyenes kiegészítő ára. A két eset megjelenítési és publikálási szabálya eltérhet. Ezt a mezőszerződésben előre rögzítsd, ne egy általános igaz/hamis feltétel döntse el.
A JSON-összehasonlító segít megmutatni, ha a null értékből 0 lett, vagy szövegből szám keletkezett. A JSON-formázó a szerkezetet ellenőrzi; a hiányzó ár üzleti pótlására egyik eszköz sem ad önmagában bizonyítékot.
A közzétételhez külön döntési szabály kell
Ár nélküli rekordnál a saját rendszered dönthet a termék visszatartásáról vagy egyértelmű tájékoztatásáról. Korábbi ár felhasználásakor annak forrását és érvényességét is vizsgáld. Ne alakíts egy másik termékből másolt vagy régi értéket hallgatólagosan friss adattá.
Az importpróbában szerepeljen legalább null, üres szöveg, szóköz, false, valódi nulla, pozitív szám és hibás számnak látszó szöveg. Minden esetre külön várt állapotot adj. A sikeres import itt azt jelenti, hogy a rendszer a bizonytalanságot is helyesen őrzi meg.
A valódi nullát se veszítsd el a hiány javításakor
Bővítsük a mintát négy termékre: 1000 Ft, 1200 Ft, egy jóváhagyott 0 Ft-os kiegészítő és egy hiányzó ár. Most három ismert ár van, és ezek átlaga (1000 + 1200 + 0)/3 ≈ 733,33 Ft. A lefedettség 3/4 = 75%. Ez az átlag itt helyes, mert a nulla valódi üzleti adatként szerepel a mintában.
Ha minden nullaszerű értéket kiszűrsz, az ingyenes kiegészítő is kiesik. Az átlag ismét 1100 Ft lesz, de már a két pozitív ár átlagát mutatja. Ha viszont a hiányzó negyedik ár helyére is nullát írsz, 2200/4 = 550 Ft jön ki. A három eredmény három különböző kérdésre válaszol; a 733,33 Ft-hoz ebben az adatsorban a három igazolt ár tartozik.
| Riport | Beszámított árak | Átlag | Mit kell mellé írni? |
|---|---|---|---|
| Ismert árak, a valódi nullával | 1000, 1200, 0 | 733,33 Ft | 3 ismert ár / 4 termék |
| Csak pozitív árak | 1000, 1200 | 1100 Ft | 2 pozitív ár / 4 termék |
| Hiány nullával pótolva | 1000, 1200, 0, 0 | 550 Ft | A negyedik nulla nem igazolt adat |
A PostgreSQL összesítő függvényei az átlagban a nem null adatbázisértékeket veszik figyelembe. A sorok számolása és az ármező nem hiányzó értékeinek számolása is eltérhet. Ez csak akkor segít, ha az import előtte helyesen különítette el a hiányt és a numerikus nullát.
Ha van legalább egy termék, de mindegyik ára hiányzik, ne jeleníts meg 0 Ft-os átlagot. Ilyenkor az átlaghoz nincs megfigyelt ár, a lefedettség pedig 0%. Üres terméklistánál a lefedettség hányadosa sem értelmezhető, mert az összes termék száma is nulla. A felületen az adathiányt jelezd, és az árforrás pótlását tedd a következő feladattá.
Igazolt határokból feltételes tartomány is számolható
Térjünk vissza a három termékhez: 1000 Ft, 1200 Ft és egy hiányzó ár. Egy külön, szemléltető feltétel szerint a harmadik terméknél megbízhatóan csak annyit tudsz, hogy az ára 800 és 1600 Ft közé esik. Ekkor a teljes háromtermékes átlag alsó határa (2200 + 800)/3 = 1000 Ft, felső határa (2200 + 1600)/3 ≈ 1266,67 Ft.
Ez a tartomány a megadott árhatárokból következik. A két ismert ár 1100 Ft-os átlaga továbbra is külön mutató, és nem pótolja a harmadik termék árát. Ha a 800–1600 Ft-os határokhoz sincs bizonyítékod, a tartományt se tüntesd fel igazolt eredményként. Így a riport megmutathatja a bizonytalanság lehetséges hatását anélkül, hogy becsült árat publikálna valódi termékárként.
Gyakori kérdések
A hiányzó árat átlaggal pótolhatom?
Elemzési becslésként csak külön jelöléssel és megnevezett módszerrel. Közzétett termékárként egy más termékekből számolt átlag nem tekinthető igazolt árnak.
Miért nem elég minden nullát kiszűrni?
Mert valódi, megengedett nulla érték is létezhet. A mező eredete és üzleti jelentése fontosabb, mint a puszta számérték.
A hiányzó rekordot kihagyhatom az átlagból?
Igen, ha az ismert adatok átlagát számolod, és megmutatod az ismert, illetve hiányzó rekordok számát. A lefedettséget ne hagyd el.
Záró tudáspróba
Válassz kérdésenként egy választ. A megoldások ellenőrzése után minden helyes válaszért 1 pontot adj magadnak; a hibás, kihagyott vagy több válasszal megjelölt kérdés 0 pont. Összesen 0–3 pont szerezhető.
1. Négy termék ára 1000 Ft, 1200 Ft, igazolt 0 Ft és hiányzó. Mennyi az ismert árak átlaga?
- A) 550 Ft.
- B) 733,33 Ft.
- C) 1100 Ft.
2. Mekkora a lefedettség ennél a négy terméknél?
- A) 50%.
- B) 100%.
- C) 75%.
3. Négy termékből mind a négynél hiányzik az ár. Mit közölj?
- A) Nincs számítható átlag az ismert árakból; a lefedettség 0%.
- B) Az átlag biztosan 0 Ft.
- C) A korábbi termék átlagát jelenítsd meg friss árként.
Megoldások és pontszám
1. B. Három ismert ár van: 2200/3 ≈ 733,33 Ft. A valódi nulla része az átlagnak, a hiányzó ár nem.
2. C. A 0 Ft-os kiegészítő ára is ismert. Így három ismert ár jut négy termékre: 3/4 = 75%.
3. A. Megfigyelt ár nélkül az átlag nem állapítható meg. A lefedettség itt 0/4 = 0%; üres terméklistánál a 0/0 hányados nem lenne értelmezhető. A numerikus nulla ár valós állítást jelentene, amelyhez nincs adat.
3 pont: A hiányt és a valódi nullát az összesítésben is megőrizted. A saját riportban az átlag mellé az ismert árak számát és a teljes termékszámot is tedd ki.
2 pont: Az 1. kérdéshez a három ismert árat, a 2.-hoz a négytermékes lefedettséget, a 3.-hoz a teljes adathiány határesetét nézd át.
0–1 pont: Jelöld minden terméknél külön az ár állapotát. Csak az ismert állapotú értékeket átlagold, a jóváhagyott nullát is beleszámítva.