Azure ML Reader modul alternative use

Felmerült nemrégiben egy probléma (amit írtam is egy korábbi bejegyzésben), hogy ha pl. Azure SQL DB-ben mentünk el valamilyen adatot a kísérletben (legyen az végeredmény, köztes állapot, bemeneti adathalmaz egy metszete…), akkor a Writer modul minden egyes alkalommal végrehajtja az INSERT parancsot a megkapott adatokkal. Ez nekünk nem jó, nagyon nem jó. Ezt fel is tüntetik a hivatalos doksiban  Azure ML fejlesztői is ( 🙂 utólag rájöttem). Megoldás viszont egy kicsit érdekes, vagy inkább alternatív, mint ahogy a címben is írtam 😀

A már ismert Reader modulnak meg lehet adni (SQL DB esetén), hogy milyen SQL utasítás alapján szedje ki nekünk az adatokat a megadott adatbázisból. A trükk az, hogy mind a Writer mind a Reader modul ugyanarra az adatbázisra fog csatlakozni, és a Reader modult bekötjük a kísérletbe valami olyan helyre, ahol nem fog senkit zavarni (sajnos be kell kötni, mert különben a Studio hibát fog jelezni), én ezt egy egyszerű SQL Transformition modul segítségével oldottam meg ideiglenesen. Ha mind a két modul DB forrása megegyezik, akkor a Reader-ben már könnyedén kiadhatunk egy truncate, vagy delete vagy bármely olyan SQL utasítást ami kiszűri vagy törli a már meglévő adatokat az adatbázisból. Fontos megjegyezni, hogy a Reader modul-nak muszáj visszaadnia egy adathalmazt, így ha szükségünk van valamire az adatokból esetleg akkor azt adjuk vissza, vagy ha töröltük az adatokat egy SELECT * FROM table; utasítás mindig hasznos! Ha nem üres a táblánk akkor sincs semmi gond, egy rendkívül triviális nem megterhelő lekérdezést eredményét is visszaadhatjuk, hiszen ha olyan megoldást választunk a kísérletbe történő bekötésre mint én, hogy egy transzformáló modulba megy bele az eredmény, akkor egyszerűen ott felhasználjuk, vagy nem használjuk fel a kapott adathalmazt.

Lényegében a Reader modult nyugodtan hívhatnánk SQL modulnak vagy valami hasonlónak, mert nincs korlátozva ilyen szempontból semmi sem.

A bekötésnél azért érdemes figyelni arra, hogy hamarabb fusson le mint a Writer modulunk, mert akkor nyilván nem sok értelme van ha nem így történik 😀

sql

 

A példához a korábban boncolgatott autók árának becslésére készített kísérletet használtam, és az SQL utasításokon látszik is, hogy akár több utasítás is megadható, nem gond.

 

sql1

 

Hivatalos fórumokon is ezt a tippet találtam, kaptam …egyenlőre! 🙂 good luck

Leave a Reply