SQL Tips: SQL Server Management Studion käyttö

Muuttamalla SQL Server Management Studion (SSMS) asetuksia, voi tehostaa ohjelman parissa työskentelyä. Tässä vinkissä käydään läpi muutamia näistä.

******1. Korvaa selauspalkki sisällön esikatselulla**

Monissa tekstieditoreissa löytyy ominaisuus lisätä navigointipalkkiin koodin esikatselu. Management Studioon sen saa päälle asetuksista valikosta (Text Editor -> All Languages -> Scroll Bars).

Valitse sieltä päälle ”Use map mode for vertical scroll bar” -asetus. Oletuksena rullauspalkissa, hiiren kursorin kohdalla, näytetään myös pieni tekstin esikatseluikkuna. Jos kyseinen ominaisuus häiritsee, “Show Preview Tooltip” -kohdasta voi ottaa sen pois käytöstä. Source Overview -asetus muuttaa palkin leveyttä. Selauspalkin ulkonäön lisäksi, asetus muuttaa myös hieman sen toimintaa. Palkin raahaamisen sijaan, dokumentissa voi siirtyä nopeasti haluttuun kohtaan vain klikkaamalla siihen.

******2. Kiinnitetyt välilehdet omalle riville**

Monesti Management Studiossa työskennellessä kyselyitä kertyy useisiin välilehtiin, jolloin niiden hallinnasta tulee hankalaa. Välilehden voi kiinnittää ensimmäiseksi sulkemispainikkeen vieressä olevasta painikkeesta, mutta asetuksista saa muutettua kiinnittämisen vieläkin tehokkaammaksi tavaksi järjestellä välilehtiä.

Asetus löytyy valikosta (Environment -> Tabs and Windows), josta voi ottaa päälle ”Show pinned tabs in a separate row” asetuksen. Nyt kiinnitetyt välilehdet siirtyy omalle riville, eikä ne katoa näkyvistä vaikka välilehtiä kertyisi kymmeniä.

******3. Rivinumerot näkyviin**

Oletuksena Management Studiossa rivinumerot ei ole näkyvillä. Rivinumerot auttaa selkeyttämään pitkän SQL-kyselyn lukemista, ja tietyn kohdan uudelleenlöytämistä kyselyssä. Asetuksen saa päälle valikosta (Text Editor -> All Languages -> General) ja ottamalla käyttöön kohdan ”Line numbers”.

******4. Muuta tilapalkin väriä yhteydestä riippuen**

Useita palvelinyhteyksiä käyttäessä pitää olla tarkkana, mille palvelimelle nykyinen välilehti on yhteydessä. Yhteysasetuksista voi muuttaa alareunassa näkyvän tilapalkin väriä, riippuen siitä mihin palvelimeen välilehti on yhteydessä. Ominaisuutta käyttääksesi, yhteyden muodostusikkunassa valitse ”Options” ja siellä valitse rasti ruutuun ”Use custom color”. Värin voi käydä valitsemassa ”Select” napista.

Tämän jälkeen yhteyden muodostuksessa, jos palvelinnimen valitsee pudotusvalikosta, tulee myös käyttöön aiemmin määritetty tilapalkin väri.

Laadukas data on yrityksen tärkeimpiä asioita

Yritykset saavat järjestelmistä paljon tietoa, mutta onko se hyödynnetty kaikilta osin ja kuinka laadukasta data on? Yrityksissä ei välttämättä edes olla tietoisia kaikista dataongelmista. Tärkeää olisi huomioida myös onko kaikki asiat osattu ottaa huomioon. Tämän takia yrityksessä olisikin hyvä olla tiedon laatuvastaava, jonka tehtävänä on seurata datan oikeellisuutta, kehittää tarvittavat prosessit ja ohjeistaa käyttäjät tekemään asioita oikein.

Tietovarastoinnin automatisoiduissa prosesseissa valvotaan datan virheitä ja puutteita sekä voidaan ohjata raja-arvoihin sopimattomat arvot virheiksi. Datan oikeellisuuden varmistamiseksi tehdään myös tarkistusprosesseja, joissa verrataan datoja keskenään ja etsitään poikkeamia. Virheelliset tiedot ohjataan automaattisesti virheiksi, joita seurataan päivittäin. Virheellinen data voidaan korjata operatiivisessa järjestelmässä heti ja tiedot saadaan oikeellisiksi pikaisesti. Yrityksissä on paljon myös tietoja, joilla on erityiset vaatimukset tiedon oikeellisuudesta, kuten taloushallintoon liittyvällä datalla.

Virheet voidaan ottaa siis kiinni jo datan latauksissa eikä vasta sitten, kun raportit näyttävät vääriä lukuja. Väärät luvut voivat olla raportilla pitkäänkin, ennenkuin joku huomaa ne ja näin on saatettu tehdä vääriä tulkintoja jo kauankin. Huonolla datalla voidaan tehdä vääriä päätöksiä tai pienillä asioilla voi olla suuriakin vaikutuksia.

Kilpailu on kovaa ja toiminnan pitäisi olla mahdollisimman kustannustehokasta. Tuotekustannuksen komponentteja on toimijasta riippuen useita. Esim: raaka-ainekustannukset, pakkaustarvikkeet, työkustannukset, logistikan kustannukset sekä markkinoinnin kiinteät. Jos näistä joku on analysointimielessä annettu puutteellisesti, aiheuttaa se vääristymän katteessa. Jos yksi näistä kustannuksista jää antamatta tai annetaan vaikka sen voimassaoloaika väärin, jää tuotteen kustannuksista esim 0,05 euroa pois. Vielä jos tämä osuu jonkin volyymituotteen, kuten kaupan merkkituotteen, kohdalle niin virhe kertautuu jo huomattavasti. Esimerkiksi asiakasryhmän omalla merkkituotteella 100 000 kiloa kuukaudessa muuttaa tuolla puuttuneella kustannuksella katteen 5000e paremmaksi, kuin mitä pitäisi. Toinen asiakasryhmä ei osta tuota tuotetta, joten sen kate on oikein, mutta jää virheen takia vertailussa kaikenaikaa heikommaksi. Tätä ei välttämättä heti huomata raportilla, mutta datan käsittelyssä tämä olisi helppo saada kiinni ja heti korjattavaksi.

Tiedon laatu on siis yksi tiedolla johtamisen tärkeimpiä asiota. Oletko miettinyt missä kunnossa datanne on? Viimeistään nyt kannattaisi ottaa tämä kallisarvoinen asia työpöydälle eikä enää jättää sitä vain puheiksi.

SQL Tips: Split

SQL-kyselyissä tulee ajoittain tarvetta pilkkoa jonkin kentän sisältöä palasiksi. SQL Serverin versiosta 2016 alkaen T-SQL tarjoaa sisäisen funktion pilkkomisen tekemiseen. Lisäksi kannan compatibility level -asetus pitää olla vähintään 130, jotta tuo sisäinen string_split -funktio löytyy ja on käytettävissä.

String_split -funktion käyttö on hyvin suoraviivaista; parametreiksi annetaan pilkottava merkkijono sekä erotinmerkki. Funktio palauttaa yksisarakkeisen taulun, jossa pilkotut merkkijonon alkiot ovat value -nimisessä kentässä.

Helppo käyttöesimerkki on datan suodattaminen. Alla olevassa kyselyssä on Customer -taulusta suodatettu mukaan ne rivit, joiden id -kentän arvo on @test -merkkijonon sisällä.

Entäpä sitten aikaisemmissa Sql Serverin versioissa, joissa sisäistä funktiota ei ole tarjolla? Ainut tapa saada vastaava toiminnallisuus on tehdä oma funktio. Alla on esimerkkitoteutus funktiosta. Mukana on myös muutama lisäominaisuus; OrderNbr ja Trim.

Oman funktion käyttö on hyvin samanlaista kuin sisäisen string_split -funktion käyttö. Alla vastaava haku kuin ensimmäisessä esimerkissä.

Tässä esimerkissä on otettu mukaan myös oman funktion tarjoama OrderNbr -kenttä, josta nähdään monesko alkio on kyseessä.

SQL Tips: Case sensitive SQL:n WHERE-lauseessa

Tässä esimerkissä on yksinkertainen taulu, jossa dataa näin:

Normaalisti esimerkiksi alla oleva kysely palauttaa rivit riippumatta tekstin kirjainkoosta:

Jos halutaan hakea vain tietyllä kirjainkoolla olevat rivit, pitää WHERE-ehdon perään lisätä oikea COLLATE-osuus. Tässä esimerkissä voidaan käyttää COLLATE SQL_Latin1_General_CP1_CS_AS. Tärkeintä on, että COLLATE-osuudesta löytyy _CS, joka tarkoittaa Case Sensitiveä. _AS (Accent Sensitive) tarkoittaa sitä, että a ei ole sama asia, kuin ä.

Kaikki eri COLLATE vaihtoehdot voit tarkistaa kyselyllä:

SELECT name, description 
FROM sys.fn_helpcollations()

Nyt kysely palauttaa vain halutulla kirjainkoolla olevat rivit:

Jos halutaan, että Tekstiarvo-kentässä mahdollisesti olevat indeksoinnit vaikuttaisivat, pitää rivi lisätä vielä ilman COLLATE-osuutta SQL-lauseeseen.

Hyppy tuntemattomaan - miten minusta tuli Oiwa?

Mikä saa 40+ olevan naisen jättämään 15 vuotta kestäneen työuran ja siirtymään yritykseen, joka on yli 300 km päässä kotoa? Paikkakunta on täysin uusi. Ei yhtään tuttua. Onko se silkkaa hulluutta vai ennakkoluulotonta rohkeutta kokeilla jotain uutta?

Kaikki sai alkunsa viime keväänä, kun selailin netistä ohjelmointialan työpaikkoja. Silmiin sattui erilainen työpaikkailmoitus. YouTube-videolla kerrottiin lenkkeilyn lomassa, että etsitään ohjelmistoasiantuntijaa. Siltä istumalta mieleen paloi ajatus siitä, että tuohon porukkaan haluaisin kuulua. Parin päivän pohtimisen jälkeen soitin Hannalle. Päädyttiin miettimään puolin ja toisin kesän yli. Syksyllä palattiin asiaan ja sovittiin haastattelu etänä. Jo haastattelun aikana tuli tunne, että kuulun joukkoon. Missään vaiheessa ei tullut epämiellyttävää oloa, vaan jutustelu sujui rennosti. Tämän haastattelun perusteella Oiwalla uskallettiin tehdä päätös ottaa minut töihin ilman, että olivat edes tavanneet kasvotusten. Kuulostaa jotenkin uskomattomalta, kun tänä päivänä vaaditaan usein, että uuden hakijan kanssa keskustellaan useampaan otteeseen soveltuvuustesteineen. Arvostan sitä, että yrityksellä on rohkeutta tehdä päätös nopeasti, jos haastattelun perusteella tulee tunne, että tämä henkilö on meille sopiva.

Nyt olen ollut reilun kuukauden Oiwalla töissä Developer, BI & Data -nimikkeellä. Mikä on muuttunut työssä? Suurin ero on, että ennen tein yrityksen sisäiseen käyttöön, mutta Oiwalla töitä tehdään ulkoisille asiakkaille. Omaan käyttöön tehtäessä määrittelyt tahtoi olla aika epämääräiset eikä niitä jaettu pienempiin osiin. Oli vain epämääräinen tarve, johon piti löytää ratkaisu. Uudessa työssä määrittelyt on tarkat ja kokonaisuus on jaettu pieniin tehtäviin, jotka on helpompi hallita. Asiakkaan kanssa on käyty tarkkaan läpi mitä halutaan ja mitä se vaatii. Uutena on tullut myös tuntien merkkaaminen eri projekteille. Se vaatii uutta asennoitumista. Vanhassa työssä tein kehitystä aika pitkälti yksin. Nyt on muitakin, jotka tekee samaa, niin voi keskustella toteutustavoista. Itselle on ollut vaikea hyväksyä, että ei olekaan hyödyksi, vaan aikaa menee uusien asioiden opetteluun. Se, että asiat ei tulekaan selkärangasta, lisää epävarmuutta omaa tekemistä kohtaan. Aiemmin käyttäjien ylläpito ja tuki vei paljon työaikaa. Yhteydenottoja tuli sekä puhelimella että sähköpostilla. Uudessa työssä niitä ei ole ollut. Saan keskittyä rauhassa kehitystyöhön. Yksi syy työpaikan vaihtoon oli kiinnostus ja halu kehittyä BI & Data asiantuntijaksi. Sen parempaa tapaa ei olekaan kuin päästä mukaan porukkaan, joka on tehnyt töitä asian kimpussa jo vuosikausia. Olen jo nyt oppinut paljon uutta ja vielä en ole päässyt edes kunnolla alkuun.

Ensimmäiset kaksi kuukautta olen Seinäjoella vierihoidossa. Tutustun uusiin työkavereihin ja pääsen paremmin sisälle Oiwan tapoihin tehdä. Sen jälkeen teen töitä etänä Kuopiosta käsin. Käyn Seinäjoella yhden päivän kerran kuukaudessa. Aiemmin en ole etätöitä tehnyt, joten sekin tulee uutena. Olen aika sosiaalinen tapaus, joten saa nähdä millaisia tunteita tuo herättää. Onneksi nykypäivänä on helppo pitää yhteyttä välimatkasta huolimatta. Paljon asiat on kuitenkin kiinni itsestä ja omasta asenteesta.

En ole katunut päätöstäni. Minut on otettu hyvin mukaan porukkaan. Iso kiitos siitä Oiwalaisille. Oiwan ilmapiiri on rento, rauhallinen ja huumoria riittää. On ymmärretty, että vaikka minulla on jo pitkä ura takana ohjelmointialalla, niin paljon tulee uutta ja sen oppimiseen menee aikaa. Oman kokemukseni perusteella kannattaa uskaltaa tehdä rohkeita päätöksiä, vaikka tuttu ja turvallinen houkuttaa. Uusi on samaan aikaan innostavaa ja pelottavaa sekä tuo oman stressinsä. Voin olla ylpeä rohkeudestani ja ei tarvitse harmitella jälkikäteen. Jos ajatus jostain uudesta houkuttaa ja siihen tulee mahdollisuus, niin ei muuta kuin rohkeasti hyppy tuntemattomaan.


Piia on Oiwan uusin asiantuntija. Käy tutustumassa Piiaan paremmin.