Ana içeriğe geç

Veri temizleme

Qlik Sense içine yüklediğiniz kaynak verilerinin Qlik Sense uygulamasında istediğiniz gibi olmadığı zamanlar olabilir. Qlik Sense, verilerimizi işinize yarayan bir biçime dönüştürmenizi sağlayan çok sayıda fonksiyon ve deyim sağlar.

Kod çalıştırıldığında alan değerlerini veya adlarını değiştirmek için Qlik Sense kodunda eşleme kullanılabilir; bu nedenle eşleme, verileri temizlemek ve daha tutarlı kılmak veya alan değerinin bir kısmını ya da tümünü değiştirmek için kullanılabilir.

Farklı tablolardan veri yüklediğinizde, aynı şeyi belirten alan değerleri her zaman tutarlı şekilde adlandırılmaz. Bu tutarlılık eksikliği ilişkileri engellediğinden, sorunun çözülmesi gerekir. Bu, alan değerlerinin karşılaştırılması için bir eşleme tablosu oluşturarak düzenli bir şekilde gerçekleştirilebilir.

Eşleme tabloları

Mapping yükleme veya Mapping seçme aracılığıyla yüklenen tablolar, diğer tablolardan farklı bir şekilde işlenir. Bunlar, belleğin ayrı bir alanında depolanır ve yalnızca kod çalıştırıldığında eşleme tabloları olarak kullanılır. Kod çalıştırıldıktan sonra, bu tablolar otomatik olarak bırakılır.

Kurallar:

  • Eşleme tablosu, birincisi karşılaştırma değerlerini içerecek ve ikincisi istenen eşleme değerlerini içerecek şekilde iki sütuna sahip olmalıdır.
  • İki sütun adlandırılmalıdır, ancak adlar kendi içinde ilgili olmamalıdır. Sütun adları, normal dahili tablolardaki alan adlarıyla bağlantılı değildir.

Mapping işlevleri ve deyimleri

Bu derste aşağıdaki eşleme fonksiyonları/deyimleri ele alınacaktır:

Mapping öneki

ApplyMap()

MapSubstring()

Map … Using deyimi

Unmap deyimi

Mapping öneki

Mapping öneki, bir kodda eşleme tablosu oluşturmak için kullanılır. Eşleme tablosu ApplyMap() fonksiyonu, MapSubstring() fonksiyonu veya Map … Using deyimi ile kullanılabilir.

  1. Yeni bir uygulama oluşturun ve ona bir ad verin.
  2. Veri yükleme düzenleyicisi'ne yeni bir kod bölümü ekleyin.
  3. Countries bölümünü çağırın.
  4. Aşağıdaki kodu girin:
  5. CountryMap: MAPPING LOAD * INLINE [ Country, NewCountry U.S.A., US U.S., US United States, US United States of America, US ];

    CountryMap tablosu iki sütunu depolar: Country ve NewCountry. Country sütunu, Country alanına ülke girmek için kullanılan çeşitli yöntemleri depolar. NewCountry sütunu, değerlerin nasıl eşleneceğini depolar. Bu eşleme tablosu, Country alanında tutarlı US ülke değerlerini depolamak için kullanılacaktır. Örneğin, Country alanında U.S.A. depolanırsa, US ile eşleyin.

ApplyMap() fonksiyonu

Bir alandaki verileri daha önce oluşturulan eşleme tablosuna göre değiştirmek için ApplyMap() öğesini kullanın. ApplyMap() fonksiyonunun kullanılabilmesi için önce eşleme tablosunun yüklenmesi gerekir. Yükleyeceğiniz Data.xlsx tablosundaki veriler şu şekilde görünür:

Veri tablosu
Kimlik Ad Ülke Kod
1 John Black U.S.A. SDFGBS1DI
2 Steve Johnson U.S. 2ABC
3 Mary White Birleşik Devletler DJY3DFE34
4 Susan McDaniels u DEF5556
5 Dean Smith US KSD111DKFJ1

Ülkenin farklı şekillerde girildiğine dikkat edin. Ülke alanını tutarlı kılmak için eşleme tablosu yüklenir ve ApplyMap() fonksiyonu kullanılır.

  1. Yukarıda girdiğiniz kodun altına Data.xlsx dosyasını seçin ve yükleyin, ardından kodu yerleştirin.
  2. Yeni oluşturulan LOAD deyiminin üzerine şunu girin:
  3. Data:

    Kodunuz şöyle görünmelidir:

    CountryMap: MAPPING LOAD * INLINE [     Country, NewCountry     U.S.A., US     U.S., US     United States, US     United States of America, US ]; 	 Data: LOAD     ID,     Name,     Country,     Code FROM [lib://DataFiles/Data.xlsx] (ooxml, embedded labels, table is Sheet1);

  4. Country, içeren satırı aşağıdaki gibi değiştirin:
  5. ApplyMap('CountryMap', Country) as Country,

    ApplyMap() fonksiyonunun ilk parametresi, tek tırnak içine alınmış eşleme adına sahiptir. İkinci parametre, değiştirilecek verileri içeren alandır.

  6. Verileri yükle'ye tıklayın.
  7. Elde edilen tablo şöyle görünür:

    ApplyMap() işlevi kullanılarak yüklenen verileri gösteren tablo

    ApplyMap işlevi kullanılarak yüklenen verileri gösteren tablo.

    United States'ın tüm yazımları US olarak değiştirilmiştir. Doğru yazılmamış bir kayıt vardır ve bu nedenle ApplyMap() fonksiyonunu bu alan değerini değiştirmemiştir. ApplyMap() fonksiyonunu kullanarak, eşleme tablosunda eşleşen değer yoksa varsayılan bir ifade eklemek için üçüncü parametreyi kullanabilirsiniz.

  8. Ülkenin yanlış girilebileceği durumları yönetmek için ApplyMap() fonksiyonunun üçüncü parametresi olarak 'US' ekleyin:
  9. ApplyMap('CountryMap', Country, 'US') as Country,

    Kodunuz şöyle görünmelidir:

    CountryMap: MAPPING LOAD * INLINE [     Country, NewCountry     U.S.A., US     U.S., US     United States, US     United States of America, US ];  Data: LOAD     ID,     Name,     ApplyMap('CountryMap', Country, 'US') as Country,     Code FROM [lib://DataFiles/Data.xlsx] (ooxml, embedded labels, table is Sheet1);

  10. Verileri yükle'ye tıklayın.
  11. Elde edilen tablo şöyle görünür:

    ApplyMap işlevi kullanılarak yüklenen verileri gösteren tablo

Bilgi notuApplyMap() hakkında daha fazla bilgi almak için Qlik Community bölümündeki blog gönderisine göz atın: Don't join - use Applymap instead (Join yerine Applymap kullanın)

MapSubstring() fonksiyonu

MapSubstring() fonksiyonu alanın bölümlerini eşlemenizi sağlar.

ApplyMap() tarafından oluşturulan tabloda sayıların metin olarak yazılmasını istiyoruz, bu nedenle sayısal verileri metinle değiştirmek için MapSubstring() fonksiyonu kullanılacaktır.

Bunu yapmak için önce bir eşleme tablosunun oluşturulması gerekir.

  1. CountryMap bölümünden sonra ve Data bölümünden önce, aşağıdaki kod satırlarını ekleyin.
  2. CodeMap: MAPPING LOAD * INLINE [ F1, F2 1, one 2, two 3, three 4, four 5, five 11, eleven ];

    CodeMap tablosunda, 1 ile 5 arasındaki sayılar ve 11 eşlenir.

  3. Kodun Data bölümünde Code deyimini aşağıdaki gibi değiştirin:
  4. MapSubString('CodeMap', Code) as Code

    Kodunuz şöyle görünmelidir:

    CountryMap: MAPPING LOAD * INLINE [     Country, NewCountry     U.S.A., US     U.S., US     United States, US     United States of America, US ];  CodeMap: MAPPING LOAD * INLINE [     F1, F2     1, one     2, two     3, three     4, four     5, five     11, eleven ];  Data: LOAD     ID,     Name,     ApplyMap('CountryMap', Country, 'US') as Country,     MapSubString('CodeMap', Code) as Code FROM [lib://DataFiles/Data.xlsx] (ooxml, embedded labels, table is Sheet1);

  5. Verileri yükle'ye tıklayın.
  6. Elde edilen tablo şöyle görünür:

    MapSubString işlevi kullanılarak yüklenen verileri gösteren tablo

    MapSubString işlevi kullanılarak yüklenen verileri gösteren tablo.

    Sayısal karakterler, Code alanındaki metinle değiştirilmiştir. Bir sayı ID=3 ve ID=4 için bir kereden fazla görünürse, metin de tekrarlanır. ID=4. Susan McDaniels kodunda 6 vardır. 6 CodeMap tablosunda eşlenmediği için değiştirilmeden kalır. ID=5, Dean Smith kodunda 111 vardır. Bu 'elevenone' olarak eşlenmiştir.

Bilgi notuMapSubstring() hakkında daha fazla bilgi almak için Qlik Community bölümündeki blog gönderisine göz atın: Mapping … and not the geographical kind (Mapping ancak coğrafi olmayan türden)

Map … Using

Alana bir eşlemeyi uygulamak için Map … Using deyimi de kullanılabilir. Fakat ApplyMap() deyiminden farklı çalışır. Alan adıyla her karşılaşıldığında eşlemeyi ApplyMap() yönetir, dahili tablodaki alan adının altında değer depolandığında ise eşlemeyi Map … Using yönetir.

Şimdi bir örneği inceleyelim. Country alanını kodda bir kereden fazla yüklediğimizi ve alan her yüklendiğinde bir eşleme uygulamak istediğimizi varsayalım. Bu derste daha önce açıklandığı şekilde ApplyMap() fonksiyonu veya Map … Using kullanılabilir.

Map … Using kullanılırsa, alan dahili tabloda depolandığında eşleme alana uygulanır. Bu nedenle aşağıdaki örnekte, eşleme Data1 tablosundaki Country alanına uygulanır, ancak Data2 tablosundaki Country2 alanına uygulanmaz. Bunun nedeni, Map … Using deyiminin yalnızca Country adlı alanlara uygulanmasıdır. Country2 alanı dahili tabloda depolandığında, artık Country olarak adlandırılmaz. Eşlemenin Country2 tablosuna uygulanmasını istiyorsanız, ApplyMap() fonksiyonunu kullanmanız gerekir.

Unmap deyimi Map … Using deyimini sonlandırır, bu nedenle Unmap deyiminden sonra Country yüklenecekse, CountryMap uygulanmaz.

  1. Data tablosunun kodunu aşağıdaki ile değiştirin:
  2. Map Country Using CountryMap; Data1: LOAD     ID,     Name,     Country FROM [lib://DataFiles/Data.xlsx] (ooxml, embedded labels, table is Sheet1); 					 Data2: LOAD     ID,     Country as Country2 FROM [lib://DataFiles/Data.xlsx] (ooxml, embedded labels, table is Sheet1); UNMAP;

  3. Verileri yükle'ye tıklayın.
  4. Elde edilen tablo şöyle görünür:

    Map … Using işlevi kullanılarak yüklenen verileri gösteren tablo

    Harita ... Kullanarak işlevi kullanılarak yüklenen verileri gösteren tablo.