Žymos archyvas: oracle

Hibridinė JasperServer ataskaita iš Oracle ir MS SQL vienu metu

dibert_dbTaip jau buvo, taip nutiko, kad prisireikė vienoje ataskaitoje dinamiškai „sukirsti“ Oracle ir MS SQL Server duomenis. Klasikinis variantas šioje situacijoje yra vienos DB duomenų replikavimas/sinchronizavimas į kitą. Toks variantas gal ir yra pats geriausias/patikimiausiais, tačiau jis toli gražu nėra trivialus. Pirmiausia, aš pats nei vienos iš tų DB neadministruoju, todėl nagų kišti į vidų kaip ir negaliu. Antra, abiejų DB duomenų modeliai yra skirtingi, todėl norint gražiai perkelti duomenis, reiktų juos perskaičiuoti ir „pritraukti“ iki vienos iš DB struktūros. Kol DBA keiksnodami bando įsivertinti darbų apimtis, nusprendžiau užduotį atlikti Jasper priemonėmis. Tiesa pasakius, kol pats nepabandžiau net nebuvau tikras, ar Jasperis iš vis gali imti duomenis iš kelių skirtingų DB vienu metu, bet tai atrodė visai logiška, nes Jasperis leidžia vienoje ataskaitoje manipuliuoti keliais tos pačios DB Dataset’ais. Jei jau galima kurti skirtingus datasetus, kodėl gi būtų negalima jų kurti iš skirtingų DB šaltinių? Skaityti toliau

JasperServer date input parameters: kaip nustatyti dar gudresnias „default“ vertes

jasper_parametraiSeniai rašiau, kaip JasperServer ataskaitoms suprogramuoti standartines (angl. default) ataskaitos parametrų reikšmes. Po to radau, kaip lengvai ir paprastai galima įjungti ir išjungti SQL užklausos where sąlygas. Nusprendžiau kad iš šių dviejų „metodikų“ galima sukergti visai neblogą sprendimą automatiniam/rankiniam ataskaitų generavimui… Skaityti toliau

Dinaminis SQL užklausos „where“ sąlygų keitimas

sql_geekSituacija dažnai sutinkama kasdieniniame darbe. Turim select’ą su daug where sąlygų. Vieną kartą select’ą tenka įvykdyti su vienomis sąlygomis, antrą kartą su kitomis, trečią – su visomis išskyrus vieną ir pan. Jeigu select’as trumpas, bėdos nėra: užkomentuojam nereikalingas eilutes ir tiek. Jeigu select’as yra labai ilgas, su daug join’ų, union’ų ir daug daug kintančių sąlygų, problema pasidaro gan rimta. Galima lengvai susipainioti ar kažką praleisti. Taip pat toks „užkomentavimo“ metodas nelabai tinka automatiniam ataskaitų generavimui. Na bet pasirodo yra gan paprastas ir patogus where sąlygų įjungimo/išjungimo būdas. Skaityti toliau

Išklausiau kursus „Oracle Database 12c: Introduction to SQL Ed 1“

oracle_mini Ilgai delsiau, bet pagaliau išklausiau „Oracle Database 12c: Introduction to SQL Ed 1“ (lt. Oracle DB: Įvadas į SQL) 5 dienų trukmės kursus. Nors pavadinimas kaip ir nieko daug nežada, bet kaip savamoksliui programuotojui kursai buvo labai naudingi. Ne tik tuo, kad prisisėmiau daug teorinių žinių ir supratau, kodėl kai kas, ką kažkada bandžiau suprogramuoti, net ir negalėjo veikti, bet ir tuo, kad turėjau labai gerą dėstytoją, kuris peržengdamas kursų gaires atsakinėjo į visus man rūpimus klausimus.

Highly recommended!

Laiko rėžis datos rėžio oracle užklausoje

sql_date_time

Laikas nuo laiko tenka ištraukti tam tikrų valandų kelių dienų duomenis, pav. gauti duomenis už praėjusio mėnesio kiekvieną dieną 08:00–09:00 valandomis. Kartais pasitaiko tai įdomesni poreikiai, pav. gauti tam tikro laiko intervalo duomenis tik savaitgaliais arba tik konkrečią dieną (pav. tik antradieniais ir pan.). Užduotis paprasta, bet dėl to, kad tai daryti tenka ne dažnai, vis pamirštu konkrečia sintaksę. Tenka pasikelti senus failus, juose ieškoti konkretaus sprendimo. Taip daryti nusibodo ir nusprendžiau savo naudojamą techniką aprašyti čia. Gal kam nors irgi pravers… Skaityti toliau

Oracle hierarchinės užklausos su WITH ir CONNECT BY

oracle_hierarchine

Darbe iš nutolusių įrenginių kelis kartus per valanda surenkam įvairius duomenis. Kiekviena surinkimo faktą (surinko ar nesurinko duomenis) taip pat fiksuojame ir saugome DB. Kažkada iškilo poreikis grafiškai pasižiūrėti, kaip vis dėl to mūsų įrenginiai veikia, t. y. kaip kokybiškai teikia mums duomenis. Tam pasirašiau paprastą užklausą, kuri tiesiog suskaičiuoja, kiek kiekvieną valandą buvo sėkmingų duomenų surinkimo iteracijų. Kaip ir viskas gerai, tačiau bėda kyla, jei konkrečią valandą nebuvo nei vienos sėkmingos iteracijos. Tada duomenys visai dingsta (žr. nuotrauką viršuje), o norėjosi bent null pamatyti. Skaityti toliau