Metabase SQL Editor

Ülkelerin tarihleri, saatleri, sayıları ve para birimleri farklılık göstermektedir. Bu değerleri ülkemize uygun şekilde ayarlamak için Admin -> Settings -> Localization -> Dates and times yolunu takip ederek değiştirebilirsiniz. Bu sayede pano sonuçlarınız daha anlamlı hale gelecektir.

Metabase’de değişkenler (variables) kullanılmaktadır. Değişkenler sayesinde kullanıcıdan dinamik değerler alarak sorguları esnek hale getirilebilir. Yani bir SQL sorgusuna tarih, metin, sayı, kategori veya herhangi bir filtre eklemek istediğinde bu değerleri sabit olarak yazmak yerine parametre şeklinde tanımlanmaktadır. Örneğin, belirli tarih aralığındaki satışlar gibi sorgularda tarih alanını kullanıcı seçebilir.
Artık başlayabiliriz. Metabase kullanırken iki şekilde analizler gerçekleştirebilirsiniz. Question seçeneği ile teknik bilginiz olmadan hızlı, görsel ve basit analizler için kullanabilirken, SQL Query seçeneği ile gelişmiş sorgular, özel filtreler ile hayal gücünüzü zorlayabilirsiniz.
Şimdi örnekler yaparak daha iyi anlayalım. + New butonuna basarak SQL query seçeneğine tıklayın. Açılan pencerede istediğiniz gibi SQL sorgularını yazabilirsininiz. Yani veritabanında olan tüm verilerinizi görselleştirebilirsiniz.

Örnek -1
Şirketinizde yüzlerce IoT cihaz olduğunu düşünelim. Bu cihazların sağlık durumları veritabanında mevcut ve bunları izlemek istiyorsunuz. Bunun için aşağıdaki gibi yapınıza özel SQL sorgusu yazınız.
SELECT ROW_NUMBER() OVER (ORDER BY KONTROL) AS [SIRA] ,IP,MACID,NOKTANO,NOKTAAD,YERI,KONTROL FROM NOKTA where KONTROL <= DATEADD(MINUTE,-1,GETDATE()) order by KONTROL
Şimdi sorguyu çalıştıralım ve sonuçları görelim.

İsterseniz bu kısımda belirli kolonları gizleyebilirsiniz.

Çıkan sonuçları yapınıza uygun şekilde görselleştirebilirsiniz. Bunun için Visualization kısmından düzgün görseli seçmeniz yeterlidir.

Buraya kadar herşey yolundaysa artık gösterge paneli oluşturabilirsiniz. Sorguyu kayıt etmek için Save butonuna basın ve koleksiyon belirleyip tekrar Save butonuna basınız.

Açılan pencerede değişken eklemediğimiz için herhangi bir ayar yapmamıza gerek yok. Sayfayı her yenilediğinizde sorgu tekrar çalışırtırılır. Bu şekilde aynı panele açıklama veya farklı sorgularda girerek daha fazla özelleştirebilirsiniz.

Örnek -2
Metabase üzerinde isterseniz açılır liste ekleyebilirsiniz. Yani kolondo geçen tüm verileri listeler. Bu sayı 1000 ile sınırlandırıldığını unutmayın.
Field Filter değişkenleri, tek bir kolon ile eşleşecek şekilde tasarlandığı için, iki farklı kolonu tek bir filtre ile kontrol etmek standart Metabase sözdizimiyle doğrudan mümkün değildir.
Aşağıdaki SQL sorgusu KISI tablosunu listelemektedir. Aslında tek farklı olan eklediğimiz değişkend hangi kolonu göstermek istiyorsak onu seçmiş olacağız.
select * from KISI where {{ad}}
Değişkene kolono bağlamak için, çarpı sembolüne basalım.

Açılan pencerede Field Filter seçeneği seçtikten sonra ilgili tablo ve kolonu seçiyoruz. Akabinde Dropdown list ile devam ediyoruz. Eğer 1000 geçkin satırınız varsa Search box seçerek manuel arama daha sağlıklı çalışmasını sağlayabilirsiniz.

Şimdi arama kutusunu açarak ilgili değeri seçelim ve sonuçları görelim.

Çıkan sonuçları yapınıza uygun şekilde görselleştirebilirsiniz. Bunun için Visualization kısmından düzgün görseli seçmeniz yeterlidir.

Buraya kadar herşey yolundaysa artık gösterge paneli oluşturabilirsiniz. Sorguyu kayıt etmek için Save butonuna basın ve koleksiyon belirleyip tekrar Save butonuna basınız.

Açılan pencerede add a filter or parameter kısmından biraz önce eklediğiniz değişkenleri aynı şekilde eklemeniz gerekmektedir. Bunun için Text or Category ekliyorum.

Değişkeni ekledikten sonra Column to filter on kısmı aktif oluyor ve biraz önce oluşturduğumuz değişken ile eşleştirip Done butonu ile çıkın.

Son olarak sağ üst tarafta bulunan save butonuna tıklayabiliriz. Bir isim girerek sorguyu kontrol etmemiz yeterli olacaktır. Eğer sorgu çalışmaz ise sayfayı yenilemeyi unutmayın.

Bu şekilde aynı panele açıklama veya farklı sorgularda girerek daha fazla özelleştirebilirsiniz. Filed filter özelliğini benzersiz şeylerde yapmanız daha yararlı olacaktır. Aksi halde aynı olan isimleride aynı sonuçlarda getirecektir.

Örnek -3
Bu örnekte ise, şirketimizde belirli tarihler arasında yenen yemek sayısının toplamını çıkaralım. Bunun için tarih değişkenini kullanacağım. Aşağıdaki SQL sorgusunda değişken kısımları date_first ve date_end yazan yerlerdir. Bu kodlar sayesinde değişken seçenekleri aktif olacaktır.
Aşağıdaki SQL sorgusu YEMEK tablosunda count ile toplam satır sayısı bulmaktadır. Aslında tek farklı olan Between kısmına manuel olarak tarih yazmak yerine metabase değişkeni eklemiş olduk.
SELECT count(*) FROM YEMEK WHERE TARIH BETWEEN [[{{date_first}}]] and DATEADD(day,1, [[{{date_end}}]] )
Ancak bu değişkenin tarih olarak kullanacağımızı belirtmemiz gerekiyor. Bunuda çarpı sembolüne basarak yapacağız.

Açılan pencerede bir tarih aralığı gerçekleştireceğim için date_first ve date_end kısmında variable type olarak date seçeneğini seçmemiz gerekmektedir. Filter widget label kısımlarınada değişken kısımlara ayırt edici isimler yazmanız faydalı olabilir.

Şimdi sorguyu çalıştıralım ve sonuçları görelim.

Çıkan sonuçları yapınıza uygun şekilde görselleştirebilirsiniz. Bunun için Visualization kısmından düzgün görseli seçmeniz yeterlidir.

Buraya kadar herşey yolundaysa artık gösterge paneli oluşturabilirsiniz. Sorguyu kayıt etmek için Save butonuna basın ve koleksiyon belirleyip tekrar Save butonuna basınız.

Açılan pencerede add a filter or parameter kısmından biraz önce eklediğiniz değişkenleri aynı şekilde eklemeniz gerekmektedir. Başlangıç ve Bitiş tarihleri olacağı için 2 tane Data picker ekliyorum.

İlk eklediğim Data picker seçip sağ taraftaki Filter settings kısmından bir isim verip, Filter operator olarak Single Date seçiyorum. Akabinden Column to filter on kısmı aktif oluyor ve biraz önce oluşturduğumuz değişken ile eşleştiriyoruz.

İkinci Data picker seçip aynı şekilde diğer değişkenimizi seçelim.

Son olarak sağ üst tarafta bulunan save butonuna tıklayabiliriz. Bir tarih aralığı girerek sorguyu kontrol etmemiz yeterli olacaktır. Eğer sorgu çalışmaz ise sayfayı yenilemeyi unutmayın. Bu şekilde aynı panele açıklama veya farklı sorgularda girerek daha fazla özelleştirebilirsiniz.

Örnek -4
Bu örnekte ise birden fazla değişken kullanarak, şirketinizde belirlediğiniz personelin numarası ile hangi tarihlerde nerelerden(asansör, kapı vb.) geçtiğini çıkaracağız. Bunun için numara ve tarih değişkenini kullanacağım. Aşağıdaki SQL sorgusunda değişken kısımları person_no, date_first ve date_end yazan yerlerdir. Bu kodlar sayesinde numara ve tarih filtreme seçenekleri aktif olacaktır.
?Aşağıdaki SQL sorgusunda birden fazla tablo birleştirilmiştir.
SELECT CASE WHEN N.NOKTAAD IS NULL THEN 'GECIS'
ELSE N.NOKTAAD
END AS NOKTAAD1,
K.KISINO, Y.YONU, K.AD, K.SOYAD, YERI, G.NOKTA, G.TARIH
FROM
GECIS G
LEFT JOIN NOKTA N ON N.NOKTANO = G.NOKTA
INNER JOIN KISI K ON K.KISINO = G.KISI
INNER JOIN FIRMA F ON F.FIRMANO = K.FIRMA
INNER JOIN BOLUM B ON B.BOLUMNO = K.BOLUM
INNER JOIN GOREV GR ON GR.GOREVNO = K.GOREV
INNER JOIN YON Y ON Y.GIRIS = G.GIRIS
WHERE 1=1
[[AND K.KISINO = {{person_no}}]][[AND G.TARIH >= {{start_date}} AND G.TARIH < DATEADD(day, 1, {{end_date}})]]
Ancak bu değişkenlerin numara ve tarih olarak kullanacağımızı belirtmemiz gerekiyor. Bunuda çarpı sembolüne basarak yapacağız.

Açılan pencerede personel numarası araması gerçekleştireceğim person_no kısmını Number olarak ayarlıyorum.

Personel işlemleri için belirli bir tarih aralığı gerçekleştireceğim için date_first ve date_end kısmında variable type olarak date seçeneğini seçmemiz gerekmektedir. Filter widget label kısımlarınada değişken kısımlara ayırt edici isimler yazmanız faydalı olacaktır.

Şimdi personel numarası ve belirli bir tarih girip sorguyu çalıştıralım ve sonuçları görelim. Çıkan sonuçları yapınıza uygun şekilde görselleştirebilirsiniz. Bunun için Visualization kısmından düzgün görseli seçmeniz yeterlidir.

Buraya kadar herşey yolundaysa artık gösterge paneli oluşturabilirsiniz. Sorguyu kayıt etmek için Save butonuna basın ve koleksiyon belirleyip tekrar Save butonuna basınız.

Açılan pencerede add a filter or parameter kısmından biraz önce eklediğiniz değişkenleri aynı şekilde eklemeniz gerekmektedir. İlk olarak personel numarasından arama yapabilmek için Number değişkenini ekliyorum.

Başlangıç ve Bitiş tarihleri olacağı için 2 tane Data picker ekliyorum.

İlk eklediğim number değikenini seçip Filter settings kısmından bir isim verip, Column to filter on kısmından ilgili değişkeni seçiyorum.

Data picker seçip sağ taraftaki Filter settings kısmından bir isim verip, Filter operator olarak Single Date seçiyorum. Akabinden Column to filter on kısmı aktif oluyor ve biraz önce oluşturduğumuz değişkeni seçiyoruz.

İkinci Data picker seçip aynı şekilde diğer değişkenimizi seçelim.

Son olarak sağ üst tarafta bulunan save butonuna tıklayabiliriz. Personel numarası ve tarih aralığı girerek sorguyu kontrol etmemiz yeterli olacaktır. Eğer sorgu çalışmaz ise sayfayı yenilemeyi unutmayın. Bu şekilde aynı panele açıklama veya farklı sorgularda girerek daha fazla özelleştirebilirsiniz.

Örnek -5
Son örnekte ise tek panoda birden fazla sorguyu nasıl görselleştirebileceğimizi inceleyelim. Birden fazla yemekhane olduğunu düşünelim ve bunları tek panoda nasıl toplayacağımıza bakalım.
Yeni bir sorgu ekranı açıyorum ve kendime özel sorguyu yazıyorum. Değişkenleri ve ilgili ayarları gerçekleştiriyorum.
SELECT count(*) FROM YEMEK WHERE NOKTA='35' and YEMEK_NO='1' and TARIH BETWEEN [[{{first}}]] and DATEADD(day,1,[[{{end}}]])

Save butonuna bastıktan sonra hangi panoya ekleyecekseniz Where do you want to save this kısmından seçmeniz gerekmektedir. Yukarıdaki örnekte günlük toplam yemek sayısını çıkarmaştık. Ben aynı analizi seçtim ve bu sayede tek panoda birleşecekler.

Açılan pencerede değişkenleri daha önceden eklemiştik. Tek yapmamız gereken aynı değişkenleri bu sorguylada eşleştirmek.
Başlangıç Tarihi ile sorgumdaki başlangıç değişkeni eşleştiriyorum.

Bitiş tarihi ile sorgumdaki bitiş değişkeni eşleştiriyorum.

Son olarak sağ üst tarafta bulunan save butonuna tıklayabiliriz. Herhangi bir tarih aralığı girerek sorguyu kontrol etmemiz yeterli olacaktır.

Sonuç olarak veritabanınızda ne kadar bilgi varsa o kadar çok özelleştirme yapabilirsiniz.
