Özel SQL Sorguları
Hardal’da gelişmiş analitik için özel tablolar oluşturmayı ve SQL sorguları yazmayı öğrenin
Genel Bakış
Hardal Analytics, işletme ihtiyaçlarınıza özel yollarla verilerinizi analiz etmek için SQL sorguları kullanarak özel metrikler oluşturmanıza olanak tanır. Bu rehber, toplanan verilerinizden içgörüler elde etmek için Hardal’ın Analytics Dashboard’unda etkili SQL sorguları yazmanızı anlamanıza yardımcı olacaktır.
Hardal, analitik iş yükleri için yüksek performanslı SQL sorgulama yetenekleri sunan ClickHouse’u temel veritabanı olarak kullanır.
Ön Koşullar
Hardal Analytics’te SQL sorguları yazmadan önce şunlara sahip olmalısınız:
- Hardal Analytics Dashboard’una erişim
- SQL syntax’ı hakkında temel bilgi
- JSON veri yapıları hakkında bilgi (Hardal’ın verilerinin çoğu JSON formatında saklanır)
- Veri toplama kurulumunuz hakkında bilgi
Veri Yapısı
Hardal Veritabanı Yapısı hakkında detaylı bilgi edinin
Veritabanı Genel Bakış
Analitik veriler, birden fazla tablo içeren default
adlı bir veritabanında saklanır. Bu dokümantasyonda, default.analytics
formatıyla erişilebilen analytics
tablosuna odaklanacağız.
Tablo Yapısı
analytics
tablosu aşağıdaki sütunları içerir:
Sütun Adı | Tür | Açıklama |
---|---|---|
id | UUID | Her kayıt için benzersiz tanımlayıcı |
event_name | LowCardinality(String) | İzlenen olayın adı |
distinct_id | LowCardinality(String) | İzleme için benzersiz tanımlayıcı |
properties | String | Detaylı olay verilerini içeren JSON nesnesi |
created_at | DateTime | Olayın oluşturulma zaman damgası |
Properties Yapısı
properties
sütunu, zengin olay verileri içeren bir JSON nesnesi içerir. İşte standart yapı:
Üst Düzey Properties
distinct
: Kullanıcı kimlik bilgilerini içerirpage
: Sayfa ile ilgili bilgilerscreen
: Cihaz ekran özellikleribrowser
: Tarayıcı detaylarıdevice_type
: Cihaz tipi (örn., desktop, mobile)timezone
: Kullanıcının zaman dilimitimestamp
: Olay zaman damgasıquery_params
: URL sorgu parametrelerievents
: Detaylı olay bilgileri dizisibatch_size
: Batch’teki olay sayısıbatch_timestamp
: Batch’in zaman damgası
Properties Detayı
Sayfa Bilgileri
Ekran Bilgileri
Tarayıcı Bilgileri
SQL Sorguları Yazma
Özel bir SQL sorgusu oluşturmak için:
- Analytics Dashboard’a gidin
- “Create Metric” butonuna tıklayın
- Sorgu editöründe SQL sorgunuzu yazın
- Sorguyu çalıştırmak ve sonuçları görselleştirmek için “Execute Query” butonuna tıklayın
- Tercih ettiğiniz görselleştirme tipini seçin (Tablo, Çizgi Grafiği, Çubuk Grafiği veya Skor Kartı)
Temel Sorgu Yapısı
Hardal’dan veri almak için temel bir sorgu şu yapıya sahiptir:
JSON Verilerle Çalışma
Hardal’ın verilerinin çoğu properties
sütununda JSON formatında saklandığından, değerleri çıkarmak için özel fonksiyonlar kullanmanız gerekecektir:
String Çıkarma
Sayısal Çıkarma
Dizi Çıkarma
JSON’daki dizilerle çalışırken (örneğin events
):
Tarih ve Zaman Filtreleme
Önemli: Hardal, çok fazla veriyi tarayıp performansı etkilemesini önlemek için tüm sorguların BETWEEN toDateTime(?) AND toDateTime(?)
sözdizimini kullanarak bir tarih aralığı filtresi içermesini gerektirir. Bu zorunludur.
Son 7 günü filtrelemek istiyorsanız, tarih aralığını açıkça hesaplamanız gerekecektir:
Örnek Sorgular
İşte Hardal Analytics’te kullanabileceğiniz bazı pratik SQL sorgu örnekleri:
Temel Property Çıkarma
Temel Sayfa Görüntüleme Analizi
Şehre Göre Satın Alma Analizi
Platforma Göre Satın Almalar
Kullanıcı Yolculuğu Analizi
GA4 Event’lerini Analiz Etme
Görselleştirme Seçenekleri
Sorgunuzu çalıştırdıktan sonra, sonuçları çeşitli formatlarda görselleştirebilirsiniz:
Tablo Görünümü
Ham verileri tablo formatında görüntüler. Detaylı veri keşfi veya bireysel kayıtları görmeniz gerektiğinde en iyisidir.
Çubuk Grafiği
Kategoriler arasında değerleri karşılaştırmak için kullanışlıdır. Verileri sayfa, ülke veya cihaz tipi gibi boyutlara göre gruplandıran sorgular için iyidir.
Çizgi Grafiği
Zaman içindeki trendleri göstermek için idealdir. Tarih veya zaman damgası sütunları içeren sorgular için en iyisidir.
Skor Kartı
Toplam satın alma, ortalama gelir veya kullanıcı sayısı gibi genellikle bir anahtar metrik olan tek bir değer gösterir. Dashboard özet metrikleri için iyidir.
Sorun Giderme ve Optimizasyon
Yaygın Sorunlar
-
Gerekli Tarih Aralığı Eksik: Tüm sorgular bir tarih aralığı filtresi içermelidir:
WHERE created_at BETWEEN toDateTime(?) AND toDateTime(?)
eklediğinizden emin olun- ? yer tutucularını gerçek tarih değerleriyle değiştirin
-
Sorgu Zaman Aşımı: Sorgunuz çalıştırılmak için çok uzun sürerse:
- Daha spesifik filtreler ekleyin
- Tarih aralığını daraltın
- LIMIT cümlesi ekleyin
- Daha verimli JSON çıkarma kullanın
-
Sonuç Yok: Sorgunuz hiç veri döndürmüyorsa:
- Tarih aralığınızı kontrol edin - dönem için veri olduğundan emin olun
- Event adlarını ve property yollarını doğrulayın
- Herhangi bir veri olup olmadığını görmek için filtreleri basitleştirin
-
JSON Çıkarma Hataları: İç içe verilere erişirken sorun yaşıyorsanız:
- Veri tipi için doğru çıkarma fonksiyonunu kullanın
- Yolu tam olarak kontrol edin
- ClickHouse’da dizi indekslerinin 0 değil 1’den başladığını unutmayın
Performans İpuçları
-
Belirli Tarih Aralıkları Kullanın: Taranan veri miktarını sınırlamak için her zaman bir tarih filtresi ekleyin.
-
Erken Filtreleyin: WHERE ifadelerini sorgu mantığınızda mümkün olduğunca erken uygulayın.
-
Sonuç Kümelerini Sınırlayın: Sadece ihtiyacınız olan verileri döndürmek için LIMIT veya TOP kullanın.
-
Uygun JSON Çıkarıcıları Kullanın: Çıkarıcıyı veri tipiyle eşleştirin (String, Int, Float).
-
Karmaşık Alt Sorgulardan Kaçının: Daha iyi okunabilirlik ve performans için CTE’ler (WITH cümleleri) kullanın.
En İyi Uygulamalar
-
Her Zaman Tarih Aralığı Ekleyin: Her sorgu,
BETWEEN toDateTime(?) AND toDateTime(?)
kullanarak gerekli tarih aralığı filtresini içermelidir. -
Sorgularınızı Belgelendirin: Karmaşık mantığı açıklamak için yorumlar ekleyin.
-
Anlamlı Takma Adlar Kullanın: Sütunlara, verilerin neyi temsil ettiğini yansıtan açık isimler verin.
-
Sorgularınızı Biçimlendirin: Okunabilirlik için tutarlı girinti ve satır sonları kullanın.
-
Aşamalı Test Edin: Karmaşık sorguları adım adım oluşturun, her aşamada sonuçları doğrulayın.
-
Test Edilmiş Modelleri Yeniden Kullanın: Gelecekte kullanmak üzere çalışan sorgu modellerini kaydedin.
-
NULL Değerleri İşleyin: JSON çıkarma veya hesaplamalarda potansiyel NULL değerlerini her zaman işleyin.
-
WITH Cümleleri Kullanın: Karmaşık sorgular için mantığınızı daha açık hale getirmek üzere CTE’ler (WITH cümleleri) kullanın.
-
Uygun JSON Çıkarma Fonksiyonları Kullanın:
- Metin için
JSONExtractString
- Ondalık sayılar için
JSONExtractFloat
- Tam sayılar için
JSONExtractInt
- Boolean değerler için
JSONExtractBool
- Metin için
-
Dizi İndekslemeyi Unutmayın: Dizilerle çalışırken, indekslemenin 0 değil 1’den başladığını unutmayın
-
Çıkarmaları Doğru Şekilde Zincirleyin: İç içe özellikler için, çıkarma fonksiyonlarını dış elementlerden iç elementlere doğru zincirleyin
-
Geliştirme Sırasında LIMIT Kullanın: Geliştirme sırasında büyük miktarda veri işlemekten kaçınmak için LIMIT cümleleri eklemeyi düşünün