Selam arkadaşlar. Qlik isimli programda aşağıdaki kod hatasız çalışıyor. İstediğim tek şey belge türü tk olan bir satırın referans numarası başka bir satırda da geçiyorsa bu iki satırda elensin, yani gelmesin.
HTML:
Yapay zeka cevabı
Merhaba,
İstediğiniz işlemi Qlik'in mevcut kod yapısıyla tek bir LOAD ifadesi içinde yapmak mümkün değildir. Çünkü bir satırın yüklenip yüklenmeyeceğine karar verirken, o satırın REFERANS değerinin tablonun tamamında başka bir 'TK' satırında olup olmadığını bilmek gerekir. LOAD işlemi satır satır çalıştığı için bu bilgiye sahip değildir.
Bu sorunu çözmek için en yaygın ve etkili yöntem, veriyi birkaç adımda işlemektir:
* Adım 1: Tüm veriyi önce geçici bir tabloya yükleyin (mevcut kodunuz).
* Adım 2: Belge türü 'TK' olan satırlardaki tüm REFERANS numaralarını ayrı bir "yasaklı liste" tablosuna alın.
* Adım 3: İlk yüklediğiniz geçici tablodan, REFERANS numarası bu "yasaklı listede" olmayan tüm satırları alarak nihai tablonuzu oluşturun.
* Adım 4: Artık ihtiyaç duyulmayan geçici tabloları bellekten kaldırın.
Aşağıda bu mantıkla düzenlenmiş, hatasız çalışacak kodunuzu bulabilirsiniz. Mevcut kodunuzun sonuna eklemeniz yeterlidir.
Düzenlenmiş Qlik Script Kodu
Mevcut kodunuz olduğu gibi kalacak ve veriyi KONTROLAHMET isimli bir tabloya yükleyecek. Ardından aşağıdaki ek adımlar çalışacak.
HTML:
Kodun Açıklaması:
* KONTROLAHMET_TEMP: Orijinal kodunuzun yüklediği tabloyu _TEMP ekiyle isimlendirdik. Bu bizim işlenmemiş, ham veri tablomuz oldu.
* ElenecekReferanslar: Bu yeni tablo, KONTROLAHMET_TEMP tablosu içinden sadece BELGE_TURU'su 'TK' olan satırları okur ve bu satırlardaki REFERANS numaralarını ElenecekRef isimli bir alanda toplar. DISTINCT komutu sayesinde her referans numarası sadece bir kez listelenir. Len(Trim(REFERANS)) > 0 kontrolü ile boş referansların listeye girmesi engellenir.
* KONTROLAHMET: Bu, sizin istediğiniz filtrelenmiş veriyi içeren nihai tablodur.
* NOCONCATENATE: Qlik'in bu tabloyu bir önceki KONTROLAHMET_TEMP ile otomatik birleştirmesini engeller.
* RESIDENT KONTROLAHMET_TEMP: Veriyi _TEMP tablosundan okur.
* WHERE NOT Exists(ElenecekRef, REFERANS): Bu satır, kodun en kritik kısmıdır. Her bir satırı okurken, o satırın REFERANS alanındaki değerin ElenecekReferanslar tablosundaki ElenecekRef alanında var olup olmadığını kontrol eder. NOT Exists kullandığımız için, referans numarası o "yasaklı" listede varsa, o satır yüklenmez. Bu sayede hem 'TK' olan orijinal satır hem de aynı referans numarasına sahip diğer tüm satırlar elenmiş olur.
* DROP TABLE: İşimiz bittiğinde bellekte yer kaplamamaları için kullandığımız geçici tabloları (KONTROLAHMET_TEMP ve ElenecekReferanslar) siliyoruz. Geriye sadece temizlenmiş KONTROLAHMET tablosu kalır.
Bu yöntemle istediğiniz sonuca hatasız ve performanslı bir şekilde ulaşabilirsiniz.