Konuyu Açan #1
jq ile çoklu JSON kayıtlarını birleştirme

Giriş ve amaç
Birden çok JSON kaydını tek bir yapı altında birleştirmek, data entegrasyonu ve dönüştürme işlerinde sık karşılaşılan bir görevdir. Özellikle günlük loglar, API çıktıları veya farklı servislerden gelen kayıtlar üzerinde çalışırken, ortak bir diziye veya tekil bir nesneye dönüştürmek gerekir. jq, komut satırında bu tür birleştirme işlemlerini ifade edilebilir ve yeniden kullanılabilir bir yaklaşım sunar.

Temel senaryo ve çözümler
  • Çoklu dosyadan tek bir dizi oluşturmak

Örnek durumda, her biri ayrı bir JSON nesnesi içeren dosyalar var ve hepsini tek bir diziye toplamak istiyorsunuz. Aşağıdaki yaklaşım bunu sağlar:
KOD
1jq -s '.' file1.json file2.json file3.json

Burada -s (slurp) tüm girişleri bir diziye sarar. Her bir dosya ayrı bir dizi olarak okunmaz; bunun yerine tüm girdiler tek bir büyük dizi içinde toplanır.

  • Dosyalar içindeki dizileri tek birleştirmek

Eğer her dosya kendi içinde bir dizi içeriyorsa ve hepsini tek bir uzun diziye birleştirmek istiyorsanız:
KOD
1jq -s 'add' file1.json file2.json file3.json

add operatörü a, b gibi dizileri veya nesneleri birleştirir. Dizinlerin içeriğini tek bir listeye toplamak gibi durumlarda kullanılır.

  • Nesnelerin birleştirilmesi

Farklı dosyalarda aynı anahtarları içeren nesneler varsa ve tek bir nesnede birleşik bir yapı elde etmek istiyorsanız:
KOD
1jq -s 'reduce .[] as $item ({}; . * $item)' file1.json file2.json file3.json

Bu yaklaşım, her dosyadan gelen nesneleri rekursif olarak birleştirir ve çakışan anahtarlar için son görülen değeri tercih eder.

  • Bütünüyle tek kaynaktan akış halinde birleştirme

Eğer birden çok dosyanın içerikleri arka arkaya işlenip son hâlde tek bir çıktı oluşturulsun isteniyorsa:
KOD
1jq -s 'flatten' file1.json file2.json file3.json

Bu, iç içe geçmiş dizileri açarak daha düz bir yapı elde etmenize yardımcı olabilir.

Pratik ipuçları
  • Hangi yapıya ihtiyacınız olduğuna karar verin: tek dizide birleşme mi, yoksa çoklu anahtar bazlı birleşim mi?
  • Giriş verilerinin bozulmaması için önce küçük birkaç örnekle test edin.
  • Büyük veri setlerinde bellek kullanımı önemli olabilir; gerektiğinde akış modunu düşünün veya filtrelerle önce gereksiz içeriği temizleyin.


Sonuç ve akışa dönük düşünceler
jq ile çoklu JSON kayıtlarını birleştirmek, basit yığma işlemlerinden karmaşık nesne kırpma operasyonlarına kadar geniş bir yelpazeye sahiptir. İhtiyaca göre -s, add veya reduce ile özelleştirilmiş çözümler üretebilirsiniz. Bu teknikler, günlük veri işleme iş akışlarında esnekliğe katkı sağlar.

Yanıt vermek için giriş yapmış olmalısınız.

Bu konuyu görüntüleyen kullanıcılar (Toplam: 2, Üyeler: 2, Misafirler: 0)
Toplam: 2 (üyeler: 2, misafirler: 0)
0 alıntı seçildi