{"id":32854,"date":"2025-10-26T17:41:09","date_gmt":"2025-10-26T14:41:09","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=32854"},"modified":"2025-10-26T17:41:09","modified_gmt":"2025-10-26T14:41:09","slug":"great-expectations-ile-verilerinizi-test-etme-kilavuzu","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/great-expectations-ile-verilerinizi-test-etme-kilavuzu\/","title":{"rendered":"Great Expectations ile Verilerinizi Test Etme K\u0131lavuzu"},"content":{"rendered":"<p><body><\/p>\n<h2>Great Expectations ile Verilerinizi Test Etme K\u0131lavuzu<\/h2>\n<h2>Giri\u015f<\/h2>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn veri odakl\u0131 d\u00fcnyas\u0131nda, i\u015fletmelerin ve organizasyonlar\u0131n ald\u0131\u011f\u0131 kararlar\u0131n, geli\u015ftirdi\u011fi \u00fcr\u00fcnlerin ve sundu\u011fu hizmetlerin temelinde y\u00fcksek kaliteli veriler yatmaktad\u0131r. Veri, modern ekonominin can damar\u0131d\u0131r ve bu damardaki herhangi bir t\u0131kan\u0131kl\u0131k veya kirlilik, ciddi sonu\u00e7lar do\u011furabilir. Hatal\u0131, eksik veya tutars\u0131z veriler, yanl\u0131\u015f i\u015f kararlar\u0131na, bozuk makine \u00f6\u011frenimi modellerine, m\u00fc\u015fteri g\u00fcveninin kayb\u0131na ve \u00f6nemli finansal kay\u0131plara yol a\u00e7abilir. Bu nedenle, veri kalitesini g\u00fcvence alt\u0131na almak, herhangi bir veri stratejisinin ayr\u0131lmaz bir par\u00e7as\u0131 haline gelmi\u015ftir.<\/p>\n<p>Veri kalitesini sa\u011flaman\u0131n en etkili yollar\u0131ndan biri veri testidir. Geleneksel yaz\u0131l\u0131m testlerinde oldu\u011fu gibi, veri testleri de verilerimizin belirli standartlara, beklentilere ve i\u015f kurallar\u0131na uygunlu\u011funu do\u011frulamam\u0131z\u0131 sa\u011flar. Ancak, verinin dinamik do\u011fas\u0131 ve hacmi g\u00f6z \u00f6n\u00fcne al\u0131nd\u0131\u011f\u0131nda, geleneksel test yakla\u015f\u0131mlar\u0131 \u00e7o\u011fu zaman yetersiz kal\u0131r. \u0130\u015fte tam bu noktada, Great Expectations gibi ara\u00e7lar devreye girer.<\/p>\n<p>Great Expectations, veri kalitesi sorunlar\u0131n\u0131 proaktif bir \u015fekilde tespit etmek, belgelemek ve \u00e7\u00f6zmek i\u00e7in tasarlanm\u0131\u015f g\u00fc\u00e7l\u00fc, a\u00e7\u0131k kaynakl\u0131 bir Python k\u00fct\u00fcphanesidir. Sadece verilerinizi test etmekle kalmaz, ayn\u0131 zamanda veri beklentilerinizi (Expectations) insan taraf\u0131ndan okunabilir bir formatta belgeleyerek veri ekipleri aras\u0131nda ileti\u015fimi geli\u015ftirir ve veri g\u00fcvenini art\u0131r\u0131r. Bu makalede, Great Expectations&#8217;\u0131n ne oldu\u011funu, neden bu kadar \u00f6nemli oldu\u011funu ve verilerinizi onunla nas\u0131l etkili bir \u015fekilde test edebilece\u011finizi ad\u0131m ad\u0131m inceleyece\u011fiz. Kurulumdan beklenti olu\u015fturmaya, do\u011frulamadan raporlamaya kadar t\u00fcm s\u00fcreci detayl\u0131 bir \u015fekilde ele alacak ve geli\u015fmi\u015f kullan\u0131m senaryolar\u0131na de\u011finece\u011fiz.<\/p>\n<h2>Great Expectations Nedir?<\/h2>\n<p>Great Expectations, &#8220;veri kalitesi i\u00e7in birim testleri&#8221; olarak tan\u0131mlanabilecek bir ara\u00e7t\u0131r. Amac\u0131, veri boru hatlar\u0131n\u0131zdaki verilerin bekledi\u011finiz gibi oldu\u011fundan emin olmakt\u0131r. Bu sadece teknik bir do\u011frulama arac\u0131 olman\u0131n \u00f6tesinde, ayn\u0131 zamanda veri varl\u0131klar\u0131n\u0131z i\u00e7in ya\u015fayan bir dok\u00fcmantasyon sistemi g\u00f6revi g\u00f6r\u00fcr.<\/p>\n<p>Great Expectations&#8217;\u0131n temel konsepti, verileriniz hakk\u0131nda &#8220;Beklentiler&#8221; (Expectations) tan\u0131mlaman\u0131za dayan\u0131r. Bu beklentiler, verinin yap\u0131s\u0131 (\u015fema), i\u00e7eri\u011fi (de\u011fer aral\u0131klar\u0131, benzersizlik), da\u011f\u0131l\u0131m\u0131 ve di\u011fer istatistiksel \u00f6zellikleriyle ilgili iddialard\u0131r. \u00d6rne\u011fin, bir s\u00fctunun bo\u015f de\u011fer i\u00e7ermemesi gerekti\u011fini, belirli bir de\u011fer k\u00fcmesinden gelmesi gerekti\u011fini veya belirli bir say\u0131sal aral\u0131kta olmas\u0131 gerekti\u011fini belirten beklentiler tan\u0131mlayabilirsiniz.<\/p>\n<p>Great Expectations&#8217;\u0131n temel bile\u015fenleri \u015funlard\u0131r:<\/p>\n<p>*   <strong>Expectations (Beklentiler):<\/strong> Veriniz hakk\u0131nda insan taraf\u0131ndan okunabilir, test edilebilir iddialard\u0131r. \u00d6rne\u011fin, <code>expect_column_to_exist<\/code> veya <code>expect_column_values_to_not_be_null<\/code>.<br \/>\n*   <strong>Expectation Suites (Beklenti S\u00fcitleri):<\/strong> Bir veri k\u00fcmesi veya tablosu i\u00e7in tan\u0131mlanm\u0131\u015f bir dizi beklentinin koleksiyonudur. Bu s\u00fcitler, verinizin belirli bir b\u00f6l\u00fcm\u00fc i\u00e7in ge\u00e7erli olan t\u00fcm kalite kurallar\u0131n\u0131 kapsar.<br \/>\n*   <strong>Data Context (Veri Ba\u011flam\u0131):<\/strong> Great Expectations kurulumunuzun merkezi yap\u0131land\u0131rma alan\u0131d\u0131r. Veri kaynaklar\u0131, beklenti s\u00fcitleri, do\u011frulama sonu\u00e7lar\u0131 ve Data Docs siteleri gibi t\u00fcm \u00f6nemli bile\u015fenlerin nas\u0131l organize edildi\u011fini ve sakland\u0131\u011f\u0131n\u0131 y\u00f6netir.<br \/>\n*   <strong>Checkpoints (Kontrol Noktalar\u0131):<\/strong> Bir veya daha fazla beklenti s\u00fcitini bir veya daha fazla veri y\u0131\u011f\u0131n\u0131na (batch) kar\u015f\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in kullan\u0131lan yeniden kullan\u0131labilir yap\u0131land\u0131rmalard\u0131r. Veri boru hatlar\u0131n\u0131za entegrasyonu kolayla\u015ft\u0131r\u0131r.<br \/>\n*   <strong>Data Docs (Veri Dok\u00fcmanlar\u0131):<\/strong> Otomatik olarak olu\u015fturulan, etkile\u015fimli ve insan taraf\u0131ndan okunabilir HTML raporlar\u0131d\u0131r. Bu raporlar, beklenti s\u00fcitlerinizi, do\u011frulama sonu\u00e7lar\u0131n\u0131z\u0131 ve veriniz hakk\u0131nda di\u011fer \u00f6nemli bilgileri i\u00e7erir. Veri ekipleri aras\u0131nda veri kalitesi hakk\u0131nda \u015feffafl\u0131k ve ileti\u015fim sa\u011flar.<\/p>\n<h3>Neden Great Expectations Kullanmal\u0131y\u0131z?<\/h3>\n<p>Geleneksel veri kalitesi yakla\u015f\u0131mlar\u0131 genellikle ad-hoc SQL sorgular\u0131 veya \u00f6zel Python betikleri kullan\u0131r. Bu y\u00f6ntemler, k\u0131sa vadede i\u015fe yarasa da, b\u00fcy\u00fck ve karma\u015f\u0131k veri ortamlar\u0131nda \u00f6l\u00e7eklenebilirlik, s\u00fcrd\u00fcr\u00fclebilirlik ve i\u015fbirli\u011fi a\u00e7\u0131s\u0131ndan yetersiz kal\u0131r. Great Expectations, bu s\u0131n\u0131rlamalar\u0131 a\u015farak bir dizi \u00f6nemli avantaj sunar:<\/p>\n<p>*   <strong>Proaktif Veri Kalitesi Y\u00f6netimi:<\/strong> Veri sorunlar\u0131n\u0131 a\u015fa\u011f\u0131 ak\u0131\u015f sistemlerine ula\u015fmadan \u00f6nce tespit etmenizi sa\u011flar. Bu, hatalar\u0131n maliyetini ve etkisini \u00f6nemli \u00f6l\u00e7\u00fcde azalt\u0131r.<br \/>\n*   <strong>Geli\u015ftirilmi\u015f Veri G\u00fcveni:<\/strong> Veri t\u00fcketicileri (i\u015f analistleri, veri bilimcileri vb.) verinin kalitesine g\u00fcvenebilirler \u00e7\u00fcnk\u00fc beklentiler a\u00e7\u0131k\u00e7a tan\u0131mlanm\u0131\u015f ve d\u00fczenli olarak do\u011frulanmaktad\u0131r.<br \/>\n*   <strong>Daha \u0130yi \u0130leti\u015fim ve \u0130\u015fbirli\u011fi:<\/strong> Data Docs, veri kalitesi hakk\u0131nda ortak bir dil ve \u015feffaf bir g\u00f6r\u00fcn\u00fcm sa\u011flayarak veri \u00fcreticileri ve t\u00fcketicileri aras\u0131ndaki ileti\u015fimi kolayla\u015ft\u0131r\u0131r.<br \/>\n*   <strong>Otomatik Dok\u00fcmantasyon:<\/strong> Beklentiler, verinin &#8220;nas\u0131l g\u00f6r\u00fcnmesi gerekti\u011fine&#8221; dair canl\u0131 bir dok\u00fcmantasyon g\u00f6revi g\u00f6r\u00fcr. Bu dok\u00fcmantasyon, manuel g\u00fcncellemeler olmadan otomatik olarak g\u00fcncel kal\u0131r.<br \/>\n*   <strong>Veri Kaymas\u0131n\u0131 (Data Drift) Tespit Etme:<\/strong> Zaman i\u00e7inde verinin \u015femas\u0131nda veya i\u00e7eri\u011finde meydana gelen beklenmedik de\u011fi\u015fiklikleri (veri kaymas\u0131) belirlemenize yard\u0131mc\u0131 olur.<br \/>\n*   <strong>Mevcut Veri Y\u0131\u011f\u0131nlar\u0131yla Entegrasyon:<\/strong> Pandas DataFrame&#8217;leri, Apache Spark DataFrame&#8217;leri, SQL veritabanlar\u0131 (PostgreSQL, MySQL, Snowflake, BigQuery vb.) ve dosya tabanl\u0131 kaynaklar (CSV, Parquet) dahil olmak \u00fczere \u00e7e\u015fitli veri kaynaklar\u0131yla sorunsuz bir \u015fekilde \u00e7al\u0131\u015f\u0131r.<br \/>\n*   <strong>Veri Boru Hatlar\u0131na Kolay Entegrasyon:<\/strong> Airflow, dbt, Prefect gibi pop\u00fcler veri orkestrasyon ara\u00e7lar\u0131yla entegre edilebilir, b\u00f6ylece veri do\u011frulama, boru hatlar\u0131n\u0131z\u0131n otomatik bir par\u00e7as\u0131 haline gelir.<\/p>\n<p>Great Expectations, veri kalitesini bir yaz\u0131l\u0131m m\u00fchendisli\u011fi disiplini olarak ele alarak, veri ekiplerine verileri \u00fczerinde daha fazla kontrol ve g\u00fcven kazand\u0131r\u0131r.<\/p>\n<h2>Great Expectations&#8217;a Ba\u015flang\u0131\u00e7<\/h2>\n<p>Great Expectations ile verilerinizi test etmeye ba\u015flamak olduk\u00e7a kolayd\u0131r. \u0130\u015fte ad\u0131m ad\u0131m bir k\u0131lavuz:<\/p>\n<h3>Kurulum<\/h3>\n<p>Great Expectations&#8217;\u0131 Python ortam\u0131n\u0131za kurmak i\u00e7in pip kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">pip install great_expectations<\/code><\/pre>\n<p>Kurulum tamamland\u0131ktan sonra, Great Expectations projenizi ba\u015flatman\u0131z gerekir. Bu komut, projeniz i\u00e7in gerekli dizin yap\u0131s\u0131n\u0131 ve yap\u0131land\u0131rma dosyalar\u0131n\u0131 olu\u015fturacakt\u0131r:<\/p>\n<pre><code class=\"language-bash\">great_expectations init<\/code><\/pre>\n<p>Bu komutu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, size birka\u00e7 soru sorulacak ve ard\u0131ndan projenizin k\u00f6k dizininde <code>great_expectations<\/code> ad\u0131nda yeni bir dizin olu\u015fturulacakt\u0131r. Bu dizin, t\u00fcm Great Expectations yap\u0131land\u0131rman\u0131z\u0131, beklenti s\u00fcitlerinizi, do\u011frulama sonu\u00e7lar\u0131n\u0131z\u0131 ve Data Docs&#8217;unuzu i\u00e7erecektir.<\/p>\n<p>Olu\u015fturulan dizin yap\u0131s\u0131 genellikle \u015funa benzer:<\/p>\n<pre><code class=\"language-\">your_project_root\/\n\u251c\u2500\u2500 great_expectations\/\n\u2502   \u251c\u2500\u2500 great_expectations.yml    # Ana yap\u0131land\u0131rma dosyas\u0131\n\u2502   \u251c\u2500\u2500 checkpoints\/              # Checkpoint tan\u0131mlar\u0131\n\u2502   \u251c\u2500\u2500 expectations\/             # Beklenti s\u00fcitleri\n\u2502   \u251c\u2500\u2500 plugins\/                  # \u00d6zel eklentiler (beklentiler vb.)\n\u2502   \u251c\u2500\u2500 uncommitted\/\n\u2502   \u2502   \u251c\u2500\u2500 data_docs\/            # Data Docs HTML dosyalar\u0131\n\u2502   \u2502   \u251c\u2500\u2500 validations\/          # Do\u011frulama sonu\u00e7lar\u0131\n\u2502   \u2502   \u2514\u2500\u2500 samples\/              # \u00d6rnek veri dosyalar\u0131\n\u2502   \u2514\u2500\u2500 ...\n\u2514\u2500\u2500 ...<\/code><\/pre>\n<h3>Veri Ba\u011flam\u0131 Olu\u015fturma<\/h3>\n<p><code>great_expectations init<\/code> komutu, <code>great_expectations\/great_expectations.yml<\/code> dosyas\u0131n\u0131 olu\u015fturarak sizin i\u00e7in bir Veri Ba\u011flam\u0131 (Data Context) ba\u015flat\u0131r. Bu dosya, Great Expectations kurulumunuzun kalbidir. Veri kaynaklar\u0131n\u0131z\u0131n nerede oldu\u011funu, beklenti s\u00fcitlerinizin nerede sakland\u0131\u011f\u0131n\u0131, do\u011frulama sonu\u00e7lar\u0131n\u0131n nas\u0131l kaydedildi\u011fini ve Data Docs&#8217;un nas\u0131l olu\u015fturuldu\u011funu tan\u0131mlar.<\/p>\n<p>Bu dosyadaki ana b\u00f6l\u00fcmler \u015funlard\u0131r:<br \/>\n*   <code>datasources<\/code>: Veri kaynaklar\u0131n\u0131z\u0131n (CSV dosyalar\u0131, veritabanlar\u0131, Spark vb.) yap\u0131land\u0131rmas\u0131.<br \/>\n*   <code>stores<\/code>: Beklenti s\u00fcitleri, do\u011frulama sonu\u00e7lar\u0131 ve di\u011fer Great Expectations varl\u0131klar\u0131n\u0131n nerede depoland\u0131\u011f\u0131n\u0131 tan\u0131mlar.<br \/>\n*   <code>data_docs_sites<\/code>: Data Docs sitelerinizin nas\u0131l olu\u015fturulaca\u011f\u0131n\u0131 ve nerede bar\u0131nd\u0131r\u0131laca\u011f\u0131n\u0131 yap\u0131land\u0131r\u0131r.<\/p>\n<p>Bu dosyay\u0131 manuel olarak d\u00fczenleyebilir veya Great Expectations CLI komutlar\u0131n\u0131 kullanarak g\u00fcncelleyebilirsiniz.<\/p>\n<h3>Veri Kaynaklar\u0131na Ba\u011flanma<\/h3>\n<p>Great Expectations&#8217;\u0131 kullanabilmek i\u00e7in \u00f6ncelikle verilerinizin nerede oldu\u011funu bilmesi gerekir. <code>great_expectations datasource new<\/code> komutu, bir veri kayna\u011f\u0131na ba\u011flanma s\u00fcrecinde size rehberlik eder.<\/p>\n<p>\u00d6rne\u011fin, yerel bir CSV dosyas\u0131na ba\u011flanmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">great_expectations datasource new<\/code><\/pre>\n<p>Bu komutu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, Great Expectations size birka\u00e7 soru soracakt\u0131r:<br \/>\n1.  <strong>Hangi veri kayna\u011f\u0131n\u0131 kullanmak istersiniz?<\/strong> (Pandas, Spark, SQL)<br \/>\n    *   Pandas&#8217;\u0131 se\u00e7elim.<br \/>\n2.  <strong>Veri kaynaklar\u0131n\u0131z ne t\u00fcr?<\/strong> (CSV, Parquet, JSON, SQL tablosu vb.)<br \/>\n    *   CSV&#8217;yi se\u00e7elim.<br \/>\n3.  <strong>Veri kaynaklar\u0131n\u0131z nerede bulunuyor?<\/strong> (Yerel bir klas\u00f6r, AWS S3, Google Cloud Storage vb.)<br \/>\n    *   Yerel bir klas\u00f6r\u00fc se\u00e7elim ve CSV dosyalar\u0131n\u0131z\u0131n bulundu\u011fu yolu belirtelim (\u00f6rne\u011fin, <code>data\/<\/code> veya <code>..\/data\/<\/code>).<\/p>\n<p>Bu ad\u0131mlar\u0131 tamamlad\u0131\u011f\u0131n\u0131zda, Great Expectations, <code>great_expectations.yml<\/code> dosyan\u0131za yeni bir veri kayna\u011f\u0131 giri\u015fi ekleyecek ve bu veri kayna\u011f\u0131n\u0131 test etmek i\u00e7in \u00f6rnek bir Jupyter Notebook a\u00e7acakt\u0131r. Bu notebook, veri kayna\u011f\u0131n\u0131zdan bir veri y\u0131\u011f\u0131n\u0131 (batch) y\u00fcklemenizi ve \u00fczerinde baz\u0131 temel i\u015flemleri ger\u00e7ekle\u015ftirmenizi sa\u011flar.<\/p>\n<p>\u00d6rnek bir <code>great_expectations.yml<\/code> dosyas\u0131nda bir Pandas veri kayna\u011f\u0131 \u015f\u00f6yle g\u00f6r\u00fcnebilir:<\/p>\n<pre><code class=\"language-yaml\">datasources:\n  my_csv_datasource:\n    module_name: great_expectations.datasource\n    class_name: Datasource\n    execution_engine:\n      module_name: great_expectations.execution_engine\n      class_name: PandasExecutionEngine\n    data_connectors:\n      default_inferred_data_connector_name:\n        class_name: InferredAssetFilesystemDataConnector\n        base_directory: ..\/data # CSV dosyalar\u0131n\u0131z\u0131n oldu\u011fu dizin\n        default_regex:\n          pattern: (.*)\\.csv\n          group_names:\n            - data_asset_name<\/code><\/pre>\n<h3>Beklentiler Olu\u015fturma<\/h3>\n<p>Beklentiler, Great Expectations&#8217;\u0131n kalbidir. Verilerinizin belirli \u00f6zelliklere sahip olmas\u0131 gerekti\u011fini belirten iddialard\u0131r. Great Expectations, y\u00fczlerce yerle\u015fik beklenti sunar ve ayr\u0131ca \u00f6zel beklentiler olu\u015fturman\u0131za da olanak tan\u0131r.<\/p>\n<p>Beklentiler olu\u015fturman\u0131n iki ana yolu vard\u0131r:<\/p>\n<h4>1. Otomatik Profiller Olu\u015fturma (Automated Profiling)<\/h4>\n<p>Yeni bir veri k\u00fcmesiyle \u00e7al\u0131\u015f\u0131rken, Great Expectations&#8217;\u0131n otomatik profil olu\u015fturma \u00f6zelli\u011fi, veri hakk\u0131nda h\u0131zl\u0131ca bir ilk beklenti s\u00fciti olu\u015fturman\u0131za yard\u0131mc\u0131 olabilir. Bu, veri k\u00fcmenizin mevcut durumunu anlamak ve temel beklentileri h\u0131zl\u0131ca tan\u0131mlamak i\u00e7in harika bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r.<\/p>\n<pre><code class=\"language-bash\">great_expectations suite new --batch-request '{\"datasource_name\": \"my_csv_datasource\", \"data_connector_name\": \"default_inferred_data_connector_name\", \"data_asset_name\": \"my_data_file\"}' --profile<\/code><\/pre>\n<p><code>my_data_file<\/code> yerine CSV dosyan\u0131z\u0131n ad\u0131n\u0131 yazmal\u0131s\u0131n\u0131z (uzant\u0131s\u0131z). Bu komut, belirtilen veri y\u0131\u011f\u0131n\u0131 i\u00e7in bir dizi temel beklenti (\u00f6rne\u011fin, s\u00fctunlar\u0131n varl\u0131\u011f\u0131, veri tipleri, bo\u015f olmayan de\u011fer oranlar\u0131) olu\u015fturacak ve bunlar\u0131 bir beklenti s\u00fciti olarak kaydedecektir. Ayr\u0131ca, bu s\u00fciti i\u00e7eren bir Jupyter Notebook a\u00e7acakt\u0131r, b\u00f6ylece beklentileri inceleyebilir ve d\u00fczenleyebilirsiniz.<\/p>\n<h4>2. Etkile\u015fimli Beklenti Olu\u015fturma (Interactive Creation)<\/h4>\n<p>Beklentileri manuel ve etkile\u015fimli olarak olu\u015fturmak, verinizi daha derinlemesine anlaman\u0131za ve i\u015f kurallar\u0131n\u0131za \u00f6zel beklentiler tan\u0131mlaman\u0131za olanak tan\u0131r. Bu genellikle bir Jupyter Notebook i\u00e7inde yap\u0131l\u0131r.<\/p>\n<pre><code class=\"language-bash\">great_expectations suite new --interactive<\/code><\/pre>\n<p>Bu komut, beklenti s\u00fcitinizi olu\u015fturmak i\u00e7in bir Jupyter Notebook a\u00e7ar. Notebook i\u00e7inde \u015fu ad\u0131mlar\u0131 izleyeceksiniz:<br \/>\n1.  <strong>Veri Y\u0131\u011f\u0131n\u0131 Y\u00fckleme:<\/strong> Tan\u0131mlad\u0131\u011f\u0131n\u0131z veri kayna\u011f\u0131ndan bir veri y\u0131\u011f\u0131n\u0131 y\u00fcklersiniz.<\/p>\n<pre><code class=\"language-python\">context = ge.data_context.DataContext()\n    batch_request = {\n        \"datasource_name\": \"my_csv_datasource\",\n        \"data_connector_name\": \"default_inferred_data_connector_name\",\n        \"data_asset_name\": \"my_data_file\",\n        \"limit\": 1000 # \u00d6rnekleme i\u00e7in\n    }\n    validator = context.get_validator(batch_request=batch_request, expectation_suite_name=\"my_new_suite\")<\/code><\/pre>\n<p>2.  <strong>Veriyi Ke\u015ffetme:<\/strong> <code>validator.head()<\/code>, <code>validator.describe()<\/code> gibi y\u00f6ntemleri kullanarak veriyi inceleyebilirsiniz.<br \/>\n3.  <strong>Beklentileri Ekleme:<\/strong> <code>validator.expect_...<\/code> y\u00f6ntemlerini kullanarak beklentileri tek tek eklersiniz.<br \/>\n    *   <code>validator.expect_column_to_exist(\"customer_id\")<\/code><br \/>\n    *   <code>validator.expect_column_values_to_not_be_null(\"order_date\")<\/code><br \/>\n    *   <code>validator.expect_column_values_to_be_of_type(\"price\", \"float\")<\/code><br \/>\n    *   <code>validator.expect_column_values_to_be_between(\"quantity\", min_value=1, max_value=100)<\/code><br \/>\n    *   <code>validator.expect_column_values_to_be_in_set(\"status\", [\"completed\", \"pending\", \"cancelled\"])<\/code><br \/>\n    *   <code>validator.expect_table_row_count_to_be_between(min_value=1000, max_value=100000)<\/code><br \/>\n4.  <strong>Beklenti S\u00fcitini Kaydetme:<\/strong> T\u00fcm beklentileri ekledikten sonra, s\u00fciti kaydedersiniz.<\/p>\n<pre><code class=\"language-python\">validator.save_expectation_suite(discard_failed_expectations=False)<\/code><\/pre>\n<p>Bu i\u015flem, beklenti s\u00fcitinizi <code>great_expectations\/expectations\/<\/code> dizinine bir JSON dosyas\u0131 olarak kaydedecektir (\u00f6rne\u011fin, <code>my_new_suite.json<\/code>).<\/p>\n<h3>Checkpoint&#8217;ler ile Beklentileri \u00c7al\u0131\u015ft\u0131rma<\/h3>\n<p>Beklenti S\u00fcitleri olu\u015fturduktan sonra, bunlar\u0131 belirli veri y\u0131\u011f\u0131nlar\u0131na kar\u015f\u0131 \u00e7al\u0131\u015ft\u0131rman\u0131z gerekir. \u0130\u015fte burada Checkpoint&#8217;ler devreye girer. Bir Checkpoint, bir veya daha fazla beklenti s\u00fcitini bir veya daha fazla veri y\u0131\u011f\u0131n\u0131na kar\u015f\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in yeniden kullan\u0131labilir bir yap\u0131land\u0131rmad\u0131r.<\/p>\n<p>Yeni bir Checkpoint olu\u015fturmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">great_expectations checkpoint new my_checkpoint_name<\/code><\/pre>\n<p>Bu komut, <code>great_expectations\/checkpoints\/my_checkpoint_name.yml<\/code> dosyas\u0131n\u0131 olu\u015fturacak ve bu dosyay\u0131 d\u00fczenlemeniz i\u00e7in size bir metin d\u00fczenleyici a\u00e7acakt\u0131r. Bu dosyada, hangi beklenti s\u00fcitlerinin hangi veri y\u0131\u011f\u0131nlar\u0131na kar\u015f\u0131 \u00e7al\u0131\u015ft\u0131r\u0131laca\u011f\u0131n\u0131 yap\u0131land\u0131r\u0131rs\u0131n\u0131z.<\/p>\n<p>\u00d6rnek bir <code>checkpoint.yml<\/code> dosyas\u0131:<\/p>\n<pre><code class=\"language-yaml\">name: my_checkpoint_name\nconfig_version: 1.0\nclass_name: SimpleCheckpoint\nrun_name_template: \"%Y%m%d-%H%M%S-my-run\"\nvalidations:\n  - batch_request:\n      datasource_name: my_csv_datasource\n      data_connector_name: default_inferred_data_connector_name\n      data_asset_name: my_data_file\n    expectation_suite_name: my_new_suite # Olu\u015fturdu\u011funuz beklenti s\u00fcitinin ad\u0131<\/code><\/pre>\n<p>Checkpoint&#8217;i \u00e7al\u0131\u015ft\u0131rmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">great_expectations checkpoint run my_checkpoint_name<\/code><\/pre>\n<p>Bu komut, Checkpoint&#8217;te tan\u0131mlanan t\u00fcm beklenti s\u00fcitlerini belirtilen veri y\u0131\u011f\u0131nlar\u0131na kar\u015f\u0131 \u00e7al\u0131\u015ft\u0131racak, do\u011frulama sonu\u00e7lar\u0131n\u0131 kaydedecek ve Data Docs&#8217;unuzu g\u00fcncelleyecektir. Konsolda do\u011frulama sonu\u00e7lar\u0131n\u0131n bir \u00f6zetini g\u00f6receksiniz.<\/p>\n<h3>Veri Dok\u00fcmanlar\u0131 Olu\u015fturma ve \u0130nceleme<\/h3>\n<p>Great Expectations&#8217;\u0131n en g\u00fc\u00e7l\u00fc \u00f6zelliklerinden biri, otomatik olarak olu\u015fturulan Data Docs&#8217;tur. Data Docs, beklenti s\u00fcitlerinizi ve do\u011frulama sonu\u00e7lar\u0131n\u0131z\u0131 i\u00e7eren, etkile\u015fimli ve insan taraf\u0131ndan okunabilir HTML sayfalar\u0131d\u0131r. Veri kalitesi durumu hakk\u0131nda \u015feffafl\u0131k sa\u011flar ve veri ekipleri aras\u0131nda ileti\u015fimi geli\u015ftirir.<\/p>\n<p>Bir Checkpoint \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, Data Docs otomatik olarak g\u00fcncellenir. Data Docs&#8217;u manuel olarak yeniden olu\u015fturmak ve taray\u0131c\u0131n\u0131zda a\u00e7mak i\u00e7in \u015fu komutlar\u0131 kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">great_expectations docs build\ngreat_expectations docs open<\/code><\/pre>\n<p><code>great_expectations docs open<\/code> komutu, varsay\u0131lan web taray\u0131c\u0131n\u0131zda Data Docs ana sayfas\u0131n\u0131 a\u00e7acakt\u0131r. Burada, t\u00fcm beklenti s\u00fcitlerinizi ve bunlar\u0131n son do\u011frulama sonu\u00e7lar\u0131n\u0131 g\u00f6rebilirsiniz. Her bir beklenti s\u00fcitine t\u0131klayarak, o s\u00fcite ait t\u00fcm beklentileri, her beklentinin ba\u015far\u0131l\u0131 olup olmad\u0131\u011f\u0131n\u0131 ve ilgili istatistikleri detayl\u0131 bir \u015fekilde inceleyebilirsiniz. Bu, veri kalitesini izlemek ve veri sorunlar\u0131n\u0131 h\u0131zl\u0131ca te\u015fhis etmek i\u00e7in paha bi\u00e7ilmez bir ara\u00e7t\u0131r.<\/p>\n<h2>Geli\u015fmi\u015f Kullan\u0131m Senaryolar\u0131 ve Entegrasyonlar<\/h2>\n<p>Great Expectations, sadece temel veri do\u011frulamadan \u00e7ok daha fazlas\u0131n\u0131 sunar. Veri boru hatlar\u0131na entegrasyon, \u00f6zel beklentiler ve veri kaymas\u0131 tespiti gibi geli\u015fmi\u015f \u00f6zellikler, veri kalitesi y\u00f6netimini daha da g\u00fc\u00e7lendirir.<\/p>\n<h3>Veri Boru Hatlar\u0131na Entegrasyon<\/h3>\n<p>Veri do\u011frulamay\u0131 veri boru hatlar\u0131n\u0131za entegre etmek, veri kalitesini proaktif olarak y\u00f6netmenin anahtar\u0131d\u0131r. Great Expectations, \u00e7e\u015fitli orkestrasyon ara\u00e7lar\u0131yla entegre olabilir:<\/p>\n<p>*   <strong>Apache Airflow:<\/strong> Airflow DAG&#8217;lerinize <code>GreatExpectationsOperator<\/code>&#8216;\u00fc ekleyerek, bir veri i\u015fleme ad\u0131m\u0131 tamamland\u0131ktan hemen sonra veri do\u011frulamay\u0131 tetikleyebilirsiniz. Do\u011frulama ba\u015far\u0131s\u0131z olursa, a\u015fa\u011f\u0131 ak\u0131\u015f g\u00f6revlerinin \u00e7al\u0131\u015fmas\u0131n\u0131 engelleyebilir, b\u00f6ylece hatal\u0131 verilerin daha ileri sistemlere yay\u0131lmas\u0131n\u0131 \u00f6nleyebilirsiniz.<\/p>\n<pre><code class=\"language-python\">from great_expectations.airflow.operators import GreatExpectationsOperator\n\n    with DAG(...) as dag:\n        validate_data = GreatExpectationsOperator(\n            task_id=\"validate_raw_data\",\n            data_context_dir=\"\/path\/to\/great_expectations\",\n            checkpoint_name=\"my_airflow_checkpoint\",\n            allow_failure=False # Do\u011frulama ba\u015far\u0131s\u0131z olursa DAG ba\u015far\u0131s\u0131z olur\n        )<\/code><\/pre>\n<p>*   <strong>dbt (data build tool):<\/strong> dbt projelerinizde Great Expectations kullanman\u0131n iki yolu vard\u0131r:<br \/>\n    1.  <strong><code>dbt-expectations<\/code> Paketi:<\/strong> dbt modelleriniz i\u00e7in do\u011frudan dbt testleri olarak Great Expectations beklentileri yazman\u0131za olanak tan\u0131yan bir adapt\u00f6rd\u00fcr.<br \/>\n    2.  <strong>dbt Hooks:<\/strong> dbt&#8217;nin <code>on-run-end<\/code> veya <code>post-hook<\/code> gibi kancalar\u0131n\u0131 kullanarak, dbt modelleri olu\u015fturulduktan sonra Great Expectations Checkpoint&#8217;lerini \u00e7al\u0131\u015ft\u0131rabilirsiniz.<br \/>\n*   <strong>Spark\/Pandas Ortamlar\u0131:<\/strong> Great Expectations&#8217;\u0131 do\u011frudan Python betikleriniz veya Jupyter Notebook&#8217;lar\u0131n\u0131z i\u00e7inde kullanabilirsiniz. Verilerinizi bir DataFrame&#8217;e y\u00fckledikten sonra, do\u011frudan <code>context.get_validator()<\/code> y\u00f6ntemini kullanarak beklentileri \u00e7al\u0131\u015ft\u0131rabilirsiniz. Bu, etkile\u015fimli veri ke\u015ffi ve do\u011frulama i\u00e7in idealdir.<br \/>\n*   <strong>CI\/CD Boru Hatlar\u0131:<\/strong> Veri m\u00fchendisli\u011fi projelerinizin CI\/CD boru hatlar\u0131na Great Expectations entegrasyonu, kod da\u011f\u0131t\u0131lmadan veya veri d\u00f6n\u00fc\u015f\u00fcmleri \u00fcretime al\u0131nmadan \u00f6nce veri kalitesini sa\u011flamak i\u00e7in kritik \u00f6neme sahiptir. \u00d6rne\u011fin, bir veri d\u00f6n\u00fc\u015f\u00fcm kodu de\u011fi\u015fikli\u011fi \u00e7ekme iste\u011fi (Pull Request) olu\u015fturuldu\u011funda, otomatik olarak ilgili veri k\u00fcmesi \u00fczerinde Great Expectations testleri \u00e7al\u0131\u015ft\u0131r\u0131labilir.<\/p>\n<h3>\u00d6zel Beklentiler Olu\u015fturma<\/h3>\n<p>Great Expectations, kapsaml\u0131 bir yerle\u015fik beklenti k\u00fct\u00fcphanesine sahip olsa da, bazen i\u015f mant\u0131\u011f\u0131n\u0131za veya \u00f6zel veri formatlar\u0131n\u0131za \u00f6zg\u00fc beklentiler tan\u0131mlaman\u0131z gerekebilir. Great Expectations, \u00f6zel beklentiler olu\u015fturmak i\u00e7in esnek bir \u00e7er\u00e7eve sunar.<\/p>\n<p>\u00d6zel bir beklenti olu\u015fturmak i\u00e7in, genellikle Great Expectations&#8217;\u0131n temel beklenti s\u0131n\u0131flar\u0131ndan birinden (\u00f6rne\u011fin, <code>ColumnMapExpectation<\/code>, <code>ColumnAggregateExpectation<\/code>, <code>TableExpectation<\/code>) miras al\u0131rs\u0131n\u0131z. Bu, karma\u015f\u0131k i\u015f kurallar\u0131n\u0131 kodunuza entegre etmenize olanak tan\u0131r.<\/p>\n<p>\u00d6rne\u011fin, bir e-posta adresinin ge\u00e7erli bir formatta olup olmad\u0131\u011f\u0131n\u0131 kontrol eden \u00f6zel bir beklenti olu\u015fturabilirsiniz:<\/p>\n<pre><code class=\"language-python\">from great_expectations.expectations.expectation import ColumnMapExpectation\nfrom great_expectations.execution_engine import PandasExecutionEngine\nimport re\n\nclass ExpectColumnValuesToBeValidEmailAddress(ColumnMapExpectation):\n    \"\"\"Expect column values to be valid email addresses.\"\"\"\n\n    map_metric = \"column_values.valid_email\"\n    metric_dependencies = [\"column_values.map.email_validation\"]\n    success_keys = (\"mostly\",)\n    default_kwarg_values = {\"mostly\": 1.0}\n\n    def _validate_map(self, series, <em><\/em>kwargs):\n        regex = r\"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$\"\n        return series.apply(lambda x: bool(re.match(regex, str(x))))\n\n    @PandasExecutionEngine.column_map_expectation\n    def _expectation_impl(self, df, <em><\/em>kwargs):\n        # ... (Bu k\u0131s\u0131m beklentinin nas\u0131l uyguland\u0131\u011f\u0131n\u0131 tan\u0131mlar)\n        # Genellikle _validate_map fonksiyonunu \u00e7a\u011f\u0131r\u0131r ve sonu\u00e7lar\u0131 i\u015fler\n        return self._validate_map(df[self.column])\n\nif __name__ == \"__main__\":\n    # Bu beklentiyi great_expectations\/plugins\/custom_expectations.py gibi bir dosyaya kaydedin\n    # great_expectations.yml dosyan\u0131zda plugins_directory yap\u0131land\u0131rmas\u0131n\u0131 kontrol edin.\n    pass<\/code><\/pre>\n<p>Bu \u00f6zel beklentiyi <code>great_expectations\/plugins\/<\/code> dizinine yerle\u015ftirerek, projenizde kullan\u0131ma haz\u0131r hale getirebilirsiniz.<\/p>\n<h3>Beklentilerin Versiyon Kontrol\u00fc<\/h3>\n<p>Beklenti S\u00fcitleri, JSON dosyalar\u0131 olarak diske kaydedildi\u011fi i\u00e7in, bunlar\u0131 di\u011fer kod varl\u0131klar\u0131n\u0131z gibi versiyon kontrol sistemlerinde (\u00f6rne\u011fin Git) saklamak \u00e7ok \u00f6nemlidir. Beklentileri kod olarak ele almak, \u015fu faydalar\u0131 sa\u011flar:<\/p>\n<p>*   <strong>\u0130\u015fbirli\u011fi:<\/strong> Veri ekipleri, beklentiler \u00fczerinde birlikte \u00e7al\u0131\u015fabilir ve de\u011fi\u015fiklikleri takip edebilir.<br \/>\n*   <strong>De\u011fi\u015fiklik Takibi:<\/strong> Beklentilerdeki de\u011fi\u015fikliklerin ne zaman ve kim taraf\u0131ndan yap\u0131ld\u0131\u011f\u0131n\u0131 g\u00f6rebilirsiniz.<br \/>\n*   <strong>Geri Alma Yetene\u011fi:<\/strong> Yanl\u0131\u015f veya istenmeyen beklenti de\u011fi\u015fikliklerini kolayca geri alabilirsiniz.<br \/>\n*   <strong>CI\/CD Entegrasyonu:<\/strong> Beklentilerdeki de\u011fi\u015fiklikler, veri boru hatlar\u0131n\u0131zdaki kod de\u011fi\u015fiklikleriyle birlikte incelenebilir ve da\u011f\u0131t\u0131labilir.<\/p>\n<h3>Veri Profilleme ve Veri Kaymas\u0131 Tespiti<\/h3>\n<p>Great Expectations, sadece do\u011frulama yapmakla kalmaz, ayn\u0131 zamanda veri profilleme yetenekleri de sunar. Otomatik profil olu\u015fturma \u00f6zelli\u011fi, bir veri k\u00fcmesinin temel istatistiklerini, da\u011f\u0131l\u0131mlar\u0131n\u0131 ve olas\u0131 anormalliklerini h\u0131zl\u0131ca anlaman\u0131za yard\u0131mc\u0131 olur.<\/p>\n<p>Veri kaymas\u0131 (data drift), zaman i\u00e7inde verinin istatistiksel \u00f6zelliklerinde (da\u011f\u0131l\u0131m, ortalama, varyans vb.) veya \u015femas\u0131nda meydana gelen beklenmedik de\u011fi\u015fiklikleri ifade eder. Bu, makine \u00f6\u011frenimi modellerinin performans\u0131n\u0131 d\u00fc\u015f\u00fcrebilir veya i\u015f kararlar\u0131n\u0131 etkileyebilir. Great Expectations, Checkpoint&#8217;lerinizi d\u00fczenli olarak \u00e7al\u0131\u015ft\u0131rarak ve farkl\u0131 zaman noktalar\u0131ndaki do\u011frulama sonu\u00e7lar\u0131n\u0131 kar\u015f\u0131la\u015ft\u0131rarak veri kaymas\u0131n\u0131 tespit etmenize yard\u0131mc\u0131 olabilir. Data Docs, bu kar\u015f\u0131la\u015ft\u0131rmalar\u0131 g\u00f6rselle\u015ftirmek i\u00e7in harika bir platform sa\u011flar. \u00d6rne\u011fin, bir s\u00fctunun bo\u015f olmayan de\u011fer oran\u0131n\u0131n zamanla \u00f6nemli \u00f6l\u00e7\u00fcde de\u011fi\u015fti\u011fini veya bir kategorik s\u00fctuna yeni, beklenmedik de\u011ferlerin eklendi\u011fini kolayca g\u00f6rebilirsiniz.<\/p>\n<h2>Great Expectations \u0130\u00e7in En \u0130yi Uygulamalar<\/h2>\n<p>Great Expectations&#8217;tan en iyi \u015fekilde yararlanmak i\u00e7in baz\u0131 en iyi uygulamalar\u0131 takip etmek \u00f6nemlidir:<\/p>\n<p>*   <strong>K\u00fc\u00e7\u00fck Ba\u015flay\u0131n, Tekrar Edin:<\/strong> T\u00fcm beklentileri bir kerede tan\u0131mlamaya \u00e7al\u0131\u015fmay\u0131n. En kritik veri kalitesi beklentileriyle ba\u015flay\u0131n ve zamanla daha fazla beklenti ekleyerek s\u00fcitinizi geli\u015ftirin.<br \/>\n*   <strong>Beklentileri \u0130\u015fbirli\u011fiyle Tan\u0131mlay\u0131n:<\/strong> Veri \u00fcreticileri (m\u00fchendisler) ve veri t\u00fcketicileri (analistler, veri bilimcileri) aras\u0131nda beklentiler \u00fczerinde i\u015fbirli\u011fi yap\u0131n. Bu, beklentilerin i\u015f gereksinimlerini do\u011fru bir \u015fekilde yans\u0131tmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <strong>Veri Boru Hatt\u0131na Erken Entegre Edin:<\/strong> Veri do\u011frulamas\u0131n\u0131, verinin boru hatt\u0131na girdi\u011fi veya \u00f6nemli d\u00f6n\u00fc\u015f\u00fcmlerden ge\u00e7ti\u011fi ilk a\u015famalara entegre edin. Sorunlar\u0131 erken tespit etmek, d\u00fczeltme maliyetini d\u00fc\u015f\u00fcr\u00fcr.<br \/>\n*   <strong>Do\u011frulamay\u0131 Otomatikle\u015ftirin:<\/strong> Checkpoint&#8217;leri kullanarak veri do\u011frulamay\u0131 otomatikle\u015ftirin ve bunlar\u0131 orkestrasyon ara\u00e7lar\u0131n\u0131zla (Airflow, dbt vb.) entegre edin. Manuel do\u011frulama, s\u00fcrd\u00fcr\u00fclebilir de\u011fildir.<br \/>\n*   <strong>Data Docs&#8217;u D\u00fczenli Olarak \u0130zleyin:<\/strong> Data Docs, veri kalitesi durumunuzun canl\u0131 bir g\u00f6stergesidir. Veri kalitesi sorunlar\u0131n\u0131 h\u0131zl\u0131ca tespit etmek i\u00e7in d\u00fczenli olarak kontrol edin.<br \/>\n*   <strong>Beklentileri Kod Olarak Ele Al\u0131n:<\/strong> Beklenti s\u00fcitlerinizi versiyon kontrol sistemlerinde (Git) saklay\u0131n ve di\u011fer kod varl\u0131klar\u0131n\u0131z gibi inceleme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerine dahil edin.<br \/>\n*   <strong>A\u00e7\u0131klay\u0131c\u0131 Beklenti Adlar\u0131 Kullan\u0131n:<\/strong> Beklenti s\u00fcitlerinize ve Checkpoint&#8217;lerinize anlaml\u0131 adlar verin. Bu, ekibinizin yap\u0131land\u0131rmalar\u0131 anlamas\u0131na ve y\u00f6netmesine yard\u0131mc\u0131 olur.<br \/>\n*   <strong>Kapsam\u0131 ve S\u00fcrd\u00fcr\u00fclebilirli\u011fi Dengeleyin:<\/strong> \u00c7ok fazla beklenti tan\u0131mlamak, bak\u0131m y\u00fck\u00fcn\u00fc art\u0131rabilir. En \u00f6nemli veri kalitesi sorunlar\u0131n\u0131 hedefleyen beklentilere odaklan\u0131n.<\/p>\n<h2>Sonu\u00e7<\/h2>\n<p>Veri kalitesi, modern veri odakl\u0131 organizasyonlar\u0131n ba\u015far\u0131s\u0131 i\u00e7in vazge\u00e7ilmez bir temeldir. Hatal\u0131 veriler, maliyetli hatalara ve g\u00fcven kayb\u0131na yol a\u00e7arken, y\u00fcksek kaliteli veriler, daha iyi kararlar, daha g\u00fcvenilir modeller ve daha g\u00fc\u00e7l\u00fc i\u015f sonu\u00e7lar\u0131 anlam\u0131na gelir. Great Expectations, bu zorlu\u011fun \u00fcstesinden gelmek i\u00e7in veri ekiplerine g\u00fc\u00e7l\u00fc ve esnek bir \u00e7er\u00e7eve sunar.<\/p>\n<p>Bu makalede, Great Expectations&#8217;\u0131n temel kavramlar\u0131n\u0131, kurulumdan veri kaynaklar\u0131na ba\u011flanmaya, beklentiler olu\u015fturmaktan Checkpoint&#8217;ler arac\u0131l\u0131\u011f\u0131yla do\u011frulamaya ve Data Docs ile raporlamaya kadar ad\u0131m ad\u0131m inceledik. Ayr\u0131ca, veri boru hatlar\u0131na entegrasyon, \u00f6zel beklentiler olu\u015fturma ve veri kaymas\u0131 tespiti gibi geli\u015fmi\u015f kullan\u0131m senaryolar\u0131na da de\u011findik.<\/p>\n<p>Great Expectations, veri kalitesini bir yaz\u0131l\u0131m m\u00fchendisli\u011fi disiplini olarak ele alarak, veri testini ve dok\u00fcmantasyonunu otomatikle\u015ftirir. Bu sayede, veri ekipleri verilerine daha fazla g\u00fcvenebilir, daha iyi kararlar alabilir ve veri varl\u0131klar\u0131n\u0131n ger\u00e7ek potansiyelini ortaya \u00e7\u0131karabilirler. Veri boru hatlar\u0131n\u0131za Great Expectations&#8217;\u0131 entegre etmek, sadece veri sorunlar\u0131n\u0131 \u00e7\u00f6zmekle kalmaz, ayn\u0131 zamanda veri odakl\u0131 k\u00fclt\u00fcr\u00fcn\u00fcz\u00fc g\u00fc\u00e7lendirir ve organizasyonunuzun gelecekteki ba\u015far\u0131s\u0131 i\u00e7in sa\u011flam bir temel olu\u015fturur. Veri kalitesine yat\u0131r\u0131m yapmak, gelece\u011fe yap\u0131lan en ak\u0131ll\u0131 yat\u0131r\u0131mlardan biridir ve Great Expectations bu yolculukta paha bi\u00e7ilmez bir m\u00fcttefiktir.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Great Expectations ile Verilerinizi Test Etme K\u0131lavuzu\nGiri\u015f\nG\u00fcn\u00fcm\u00fcz\u00fcn veri odakl\u0131 d\u00fcnyas\u0131nda, i\u015fletmelerin ve organizasyonlar\u0131n ald\u0131\u011f\u0131","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-32854","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Great Expectations ile Verilerinizi Test Etme K\u0131lavuzu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/great-expectations-ile-verilerinizi-test-etme-kilavuzu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Great Expectations ile Verilerinizi Test Etme K\u0131lavuzu\" \/>\n<meta property=\"og:description\" content=\"Great Expectations ile Verilerinizi Test Etme K\u0131lavuzu Giri\u015f G\u00fcn\u00fcm\u00fcz\u00fcn veri odakl\u0131 d\u00fcnyas\u0131nda, i\u015fletmelerin ve organizasyonlar\u0131n ald\u0131\u011f\u0131\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/great-expectations-ile-verilerinizi-test-etme-kilavuzu\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-26T14:41:09+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/great-expectations-ile-verilerinizi-test-etme-kilavuzu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/great-expectations-ile-verilerinizi-test-etme-kilavuzu\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Great Expectations ile Verilerinizi Test Etme K\u0131lavuzu\",\"datePublished\":\"2025-10-26T14:41:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/great-expectations-ile-verilerinizi-test-etme-kilavuzu\/\"},\"wordCount\":3331,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/great-expectations-ile-verilerinizi-test-etme-kilavuzu\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/great-expectations-ile-verilerinizi-test-etme-kilavuzu\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/great-expectations-ile-verilerinizi-test-etme-kilavuzu\/\",\"name\":\"Great Expectations ile Verilerinizi Test Etme K\u0131lavuzu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-26T14:41:09+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/great-expectations-ile-verilerinizi-test-etme-kilavuzu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/great-expectations-ile-verilerinizi-test-etme-kilavuzu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/great-expectations-ile-verilerinizi-test-etme-kilavuzu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Great Expectations ile Verilerinizi Test Etme K\u0131lavuzu\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Great Expectations ile Verilerinizi Test Etme K\u0131lavuzu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/great-expectations-ile-verilerinizi-test-etme-kilavuzu\/","og_locale":"tr_TR","og_type":"article","og_title":"Great Expectations ile Verilerinizi Test Etme K\u0131lavuzu","og_description":"Great Expectations ile Verilerinizi Test Etme K\u0131lavuzu Giri\u015f G\u00fcn\u00fcm\u00fcz\u00fcn veri odakl\u0131 d\u00fcnyas\u0131nda, i\u015fletmelerin ve organizasyonlar\u0131n ald\u0131\u011f\u0131","og_url":"https:\/\/fatihsoysal.com\/blog\/great-expectations-ile-verilerinizi-test-etme-kilavuzu\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-26T14:41:09+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"19 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/great-expectations-ile-verilerinizi-test-etme-kilavuzu\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/great-expectations-ile-verilerinizi-test-etme-kilavuzu\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Great Expectations ile Verilerinizi Test Etme K\u0131lavuzu","datePublished":"2025-10-26T14:41:09+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/great-expectations-ile-verilerinizi-test-etme-kilavuzu\/"},"wordCount":3331,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/great-expectations-ile-verilerinizi-test-etme-kilavuzu\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/great-expectations-ile-verilerinizi-test-etme-kilavuzu\/","url":"https:\/\/fatihsoysal.com\/blog\/great-expectations-ile-verilerinizi-test-etme-kilavuzu\/","name":"Great Expectations ile Verilerinizi Test Etme K\u0131lavuzu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-26T14:41:09+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/great-expectations-ile-verilerinizi-test-etme-kilavuzu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/great-expectations-ile-verilerinizi-test-etme-kilavuzu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/great-expectations-ile-verilerinizi-test-etme-kilavuzu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Great Expectations ile Verilerinizi Test Etme K\u0131lavuzu"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32854","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=32854"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32854\/revisions"}],"predecessor-version":[{"id":32855,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32854\/revisions\/32855"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=32854"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=32854"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=32854"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}