2026'da Great Expectations: Veri Kalitesi Doğrulama ve Mülakat Soruları

Great Expectations 1.22 ile veri kalitesi doğrulama için kapsamlı rehber. Expectation Suites, Checkpoints oluşturma ve Apache Airflow entegrasyonu.

2026'da Great Expectations: Veri Kalitesi Doğrulama ve Mülakat Soruları

Great Expectations (GX), Python tabanlı veri pipeline'larında veri kalitesi doğrulama için standart açık kaynak framework'tür. Ağustos 2026'da yayınlanan 1.22 sürümü, GX 1.0'da sunulan API değişikliklerini pekiştirmekte ve deneysel Python 3.14 desteği eklemektedir. Bu özellikler, framework'ü üretim seviyesinde pipeline'lar oluşturan veri mühendisleri için kritik bir araç haline getirmektedir.

GX Core vs GX Cloud

GX Core, 11.400'den fazla GitHub yıldızına sahip açık kaynak kütüphanedir (Apache 2.0 lisansı). GX Cloud ise bunun üzerine inşa edilmiş, işbirliği araçları ve gerçek zamanlı izleme panelleri sunan yönetilen SaaS platformudur. Bu makale GX Core'a odaklanmaktadır.

Great Expectations Veri Pipeline'larında Hangi Sorunları Çözer

Veri pipeline'ları sessizce başarısız olur. Upstream'de bir şema değişikliği, olmaması gereken yerde null değer, ISO'dan Unix timestamp'e değişen tarih formatı — bu sorunlar genellikle kimse fark etmeden dashboard'lara veya ML modellerine ulaşır. Great Expectations, verileri kod gibi ele alır ve pipeline'daki checkpoint'lerde otomatik olarak çalışan assertion'lar (Expectation olarak adlandırılır) uygular.

Framework, Apache Airflow, Databricks, Snowflake ve AWS S3, Azure Blob Storage gibi bulut depolama hizmetleriyle entegre olur. Her doğrulama, teknik olmayan paydaşların okuyabileceği HTML raporları olan Data Docs üretir.

Temel Kavramlar: Data Context, Data Sources ve Expectations

GX 1.22, doğrulamayı dört bileşen etrafında organize eder: Data Context, Data Sources, Data Assets ve Expectation Suites.

Data Context, merkezi yapılandırma nesnesidir. Data Sources, Expectation Suites, Checkpoints ve geçmiş doğrulama sonuçları için metadata depolar. Çoğu projede tek bir gx/ dizini, YAML yapılandırma dosyalarını ve oluşturulan Data Docs'u içerir.

Data Source, veritabanı, veri ambarı veya dosya sistemine bağlantıyı temsil eder. Data Asset, bu kaynak içindeki mantıksal kayıt koleksiyonudur, tabloya veya sorgu sonuç kümesine benzer.

python
# gx_setup.py
import great_expectations as gx

# Initialize or load an existing Data Context
context = gx.get_context()

# Add a Pandas Data Source for local files
data_source = context.data_sources.add_pandas("local_files")

# Define a Data Asset pointing to a specific CSV pattern
data_asset = data_source.add_csv_asset(
    name="user_events",
    filepath_or_buffer="data/user_events_*.csv"  # Glob pattern
)

Bu kurulum, GX'in data/ dizinindeki user_events_*.csv kalıbına uyan herhangi bir CSV dosyasını doğrulamasına olanak tanır.

Sütun Doğrulama için Expectation Suite Oluşturma

Expectation Suite, Data Asset'e karşı assertion koleksiyonudur. Her Expectation, veriler için geçerli olması gereken bir koşul bildirir; örneğin "user_id sütunu asla null olmamalı" veya "age sütunu 0 ile 120 arasında değerler içermeli."

python
# build_suite.py
import great_expectations as gx

context = gx.get_context()

# Create or retrieve an Expectation Suite
suite = context.suites.add(
    gx.ExpectationSuite(name="user_events_suite")
)

# Add Expectations to the suite
suite.add_expectation(
    gx.expectations.ExpectColumnToExist(column="user_id")
)
suite.add_expectation(
    gx.expectations.ExpectColumnValuesToNotBeNull(column="user_id")
)
suite.add_expectation(
    gx.expectations.ExpectColumnValuesToBeBetween(
        column="age",
        min_value=0,
        max_value=120
    )
)
suite.add_expectation(
    gx.expectations.ExpectColumnValuesToMatchRegex(
        column="email",
        regex=r"^[\w.-]+@[\w.-]+\.\w+$"
    )
)

# Save the suite to the Data Context
context.suites.save(suite)

GX 1.0+, Expectation'lar için sınıf tabanlı API kullanır. Eski sözlük tabanlı sözdizimi (expect_column_to_exist) hala kullanılabilir, ancak sınıf tabanlı yaklaşım daha iyi IDE otomatik tamamlama ve tip güvenliği sağlar.

Checkpoint'lerle Doğrulama Çalıştırma

Checkpoint, Data Asset, Expectation Suite ve doğrulama geçtiğinde veya başarısız olduğunda tetiklenen opsiyonel Action'ları bir araya getirir. Checkpoint'ler, üretimdeki otomatik doğrulama için ana giriş noktasıdır.

python
# run_checkpoint.py
import great_expectations as gx

context = gx.get_context()

# Create a Checkpoint
checkpoint = context.checkpoints.add(
    gx.Checkpoint(
        name="user_events_checkpoint",
        validation_definitions=[
            gx.ValidationDefinition(
                name="validate_user_events",
                data=context.data_sources.get("local_files")
                    .get_asset("user_events")
                    .build_batch_request(),
                suite=context.suites.get("user_events_suite")
            )
        ],
        actions=[
            gx.checkpoint.UpdateDataDocsAction(name="update_docs"),
        ]
    )
)

# Run the Checkpoint
result = checkpoint.run()

# Check overall success
if result.success:
    print("All validations passed")
else:
    print("Validation failures detected")
    for validation_result in result.run_results.values():
        for expectation_result in validation_result.results:
            if not expectation_result.success:
                print(f"  Failed: {expectation_result.expectation_config}")

Checkpoint çalıştığında, GX batch'i yükler, her Expectation'ı uygular ve Data Docs'u günceller. Başarısız doğrulamalar, yapılandırılmış Action'lara bağlı olarak Slack bildirimleri, PagerDuty uyarıları veya pipeline sonlandırma tetikleyebilir.

Data Engineering mülakatlarında başarılı olmaya hazır mısın?

İnteraktif simülatörler, flashcards ve teknik testlerle pratik yap.

GX'i Apache Airflow DAG'leriyle Entegre Etme

Üretim veri pipeline'larının çoğu Apache Airflow gibi bir orkestratör kullanır. GX, Checkpoint yürütmesini bir operatöre saran resmi Airflow entegrasyonu sağlar.

python
# dags/user_events_pipeline.py
from airflow import DAG
from airflow.operators.python import PythonOperator
from datetime import datetime
import great_expectations as gx

def validate_user_events():
    """Run GX Checkpoint for user events data."""
    context = gx.get_context(context_root_dir="/opt/airflow/gx")
    checkpoint = context.checkpoints.get("user_events_checkpoint")
    result = checkpoint.run()
    
    if not result.success:
        # Raise exception to fail the Airflow task
        raise ValueError("Data validation failed. Check Data Docs for details.")

with DAG(
    dag_id="user_events_pipeline",
    start_date=datetime(2026, 1, 1),
    schedule_interval="@daily",
    catchup=False
) as dag:
    
    validate_task = PythonOperator(
        task_id="validate_user_events",
        python_callable=validate_user_events
    )
    
    # Downstream tasks depend on validation passing
    # transform_task >> load_task

Doğrulamayı dönüşüm görevlerinden önce yerleştirmek, kötü verilerin downstream'e yayılmasını engeller. Bazen "shift-left testing" olarak adlandırılan bu kalıp, sorunları maliyetli hesaplama işleri tamamlandıktan sonra değil, ingestion aşamasında yakalar.

Great Expectations Hakkında Yaygın Mülakat Soruları

2026'daki veri mühendisliği mülakatları sıklıkla veri kalitesi araçları hakkında sorular içerir. Aşağıda teknik görüşmelerde ortaya çıkan sorular ve deneyimli adayları juniorlardan ayıran cevaplar bulunmaktadır.

"Üretim pipeline'ında veri kalitesi kontrollerini nasıl uygularsınız?"

Güçlü cevaplar, doğrulamayı ayrı bir dashboard olarak değil, pipeline aşaması olarak yerleştirmeyi belirtir. Özellikle:

  • Ingestion'da şema doğrulama, yapısal sorunları hemen yakalar; örneğin integer beklenirken string görünmesi
  • İş mantığı doğrulama, pozitif fiyatlar ve tarih aralıkları gibi domain kısıtlamalarını kontrol eder
  • Otomatik uyarılar, doğrulama başarısız olduğunda nöbetçi mühendisleri bilgilendirir ve sessiz veri bozulmasını önler
  • dbt testleri, dönüşüm katmanı kontrollerini yönetirken GX ingestion ve output doğrulamasını yönetir

"Expectation Suite ile Checkpoint arasındaki fark nedir?"

Expectation Suite, assertion'ların kendisini içerir: hangi sütunların var olması gerektiği, hangi değer aralıklarının kabul edilebilir olduğu, hangi regex kalıplarının eşleşmesi gerektiği. Ne kontrol edileceğini tanımlar.

Checkpoint, bu kontrollerin ne zaman ve nasıl çalıştırılacağını tanımlar. Belirli bir Data Asset'i (doğrulanacak veriler), Expectation Suite'i (uygulanacak kurallar) ve Action'ları (doğrulamadan sonra ne olacağı) birbirine bağlar.

"Ortama göre değişen Expectation'ları nasıl yönetirsiniz?"

Üretim verileri genellikle staging verilerinden farklı özelliklere sahiptir. İki yaklaşım:

  1. Parametreli Expectation'lar: Eşikleri ayarlamak için ortam değişkenleri veya runtime parametreleri kullanın. Örneğin min_value=int(os.getenv("AGE_MIN", 0)).

  2. Birden Fazla Suite: Staging ve üretim için ayrı suite'ler tutun. Staging, eksik veri akışlarını test etmek için opsiyonel alanlarda null'lara izin verebilir.

"Zamanlanmış pipeline'da Checkpoint başarısız olursa ne olur?"

Checkpoint, success=False ile CheckpointResult döndürür. Pipeline davranışı, orkestratorun hatayı nasıl ele aldığına bağlıdır:

  • Airflow'da exception fırlatmak, görevi başarısız olarak işaretler ve downstream görevleri engeller
  • Databricks'te notebook hata durumuyla çıkabilir
  • Checkpoint'e bağlı Action'lar Slack mesajları gönderebilir, Jira ticket'ları oluşturabilir veya rollback prosedürlerini tetikleyebilir

Domain'e Özgü Doğrulama için Özel Expectation'lar

GX, 300'den fazla yerleşik Expectation içerir, ancak domain'e özgü kurallar genellikle özel implementasyonlar gerektirir. Özel Expectation, temel sınıfı genişletir ve doğrulama mantığını uygular.

python
# custom_expectations/expect_valid_iso_country_code.py
from great_expectations.expectations import Expectation
from great_expectations.core import ExpectationConfiguration
import pycountry

class ExpectValidIsoCountryCode(Expectation):
    """Expect column values to be valid ISO 3166-1 alpha-2 country codes."""
    
    column: str
    
    @classmethod
    def _prescriptive_template(cls) -> str:
        return "Column {column} values must be valid ISO country codes"
    
    def _validate(self, metrics, runtime_configuration=None, execution_engine=None):
        column_values = metrics.get("column_values")
        valid_codes = {c.alpha_2 for c in pycountry.countries}
        
        invalid_values = [
            v for v in column_values 
            if v is not None and v not in valid_codes
        ]
        
        return {
            "success": len(invalid_values) == 0,
            "result": {
                "observed_value": len(invalid_values),
                "unexpected_list": invalid_values[:10]  # Sample
            }
        }

Özel Expectation'lar, great_expectations/plugins/ dizinine yerleştirilerek veya great_expectations.yml içindeki plugins_directory'ye modül eklenerek kaydedilir.

Data Docs: Kaliteyi Paydaşlara İletme

Data Docs, doğrulama sonuçlarından oluşturulan statik HTML siteleridir. Her çalıştırma, hangi Expectation'ların geçtiğini veya başarısız olduğunu gösteren, beklenmeyen değerler hakkında detaylı bilgi içeren bir sayfa üretir.

python
# Generate and open Data Docs
context = gx.get_context()
context.build_data_docs()
context.open_data_docs()  # Opens browser

Üretim sistemleri için Data Docs, uygun erişim kontrolleriyle S3, GCS veya Azure Blob Storage'da barındırılabilir. GX Cloud platformu, takım işbirliği özellikleriyle barındırılan Data Docs sunar.

GX 1.0 Geçişi: 0.x'ten Kırıcı Değişiklikler

GX 0.x'ten yükseltme yapan takımlar API değişiklikleriyle karşılaşır. Temel farklar:

GX 0.xGX 1.0+
context.create_expectation_suite()context.suites.add()
context.add_datasource()context.data_sources.add_*()
Sözlük tabanlı Expectation'larSınıf tabanlı Expectation'lar
context.run_checkpoint()checkpoint.run()

Resmi geçiş rehberi her değişikliği kapsar. Büyük kod tabanları için uyumluluk shim'leri kullanarak kademeli geçiş riski azaltır.

Pratik yapmaya başla!

Mülakat simülatörleri ve teknik testlerle bilgini test et.

GX 1.22 ile Veri Kalitesi için Temel Çıkarımlar

  • Great Expectations 1.22 (Ağustos 2026), Python 3.10'dan 3.13'e kadar destekler ve GX_PYTHON_EXPERIMENTAL ortam değişkeni aracılığıyla deneysel 3.14 desteği sunar
  • Expectation Suites neyin doğrulanacağını, Checkpoint'ler ne zaman ve nasıl doğrulanacağını tanımlar
  • Checkpoint'leri Airflow DAG'lerinde veya Databricks notebook'larında pipeline aşaması olarak yerleştirmek, kötü verileri ingestion aşamasında yakalar
  • Özel Expectation'lar, yerleşik Expectation'ların karşılayamadığı domain'e özgü kuralları yönetir
  • Data Docs, paydaşların okuyabileceği HTML raporları sağlar; üretim erişimi için bulut depolamada barındırılmalıdır
  • Mülakat cevapları, veri kalitesini eklenti dashboard olarak değil, yerleşik pipeline aşaması olarak vurgulamalıdır
Günün meydan okuması

Data Engineering kodundaki hatayı bulabilir misin?

Gerçek bir kod parçası, gizli bir hata, günde bir deneme. Denemek için hesap gerekmez.

Anthony Fillion-Maillet

Yazan:

Anthony Fillion-Maillet

SharpSkill kurucusu

10 yılı aşkın süredir fullstack geliştirici. SharpSkill’i yönetiyor ve burada yayımlanan her şeyden sorumlu.

13 Eylül 2026 tarihinde güncellendi

Paylaş

İlgili makaleler