Crosstable
crosstable yükleme öneki "çapraz tablo" veya "pivot tablo" yapılandırılmış verileri için kullanılır. Elektronik tablo kaynaklarıyla çalışılırken bu şekilde yapılandırılmış verilerle sıkça karşılaşılır. crosstable yükleme ön ekinin çıktısı ve amacı, bu tür yapıları düzenli, sütun odaklı tablo eş değerine dönüştürmektir çünkü bu yapı genellikle Qlik Sense üzerinde yapılan analizler için daha uygundur.
Söz Dizimi:
crosstable (attribute field name, data field name [ , n ] ) ( loadstatement | selectstatement )
Bağımsız Değişken | Açıklama |
---|---|
attribute field name | Transpoze edilecek yatay yönlendirmeli boyutu betimleyen istenen çıktı alanı adı (üstbilgi satırı). |
data field name |
Transpoze edilecek boyutun yatay yönlendirmeli verilerini betimleyen istenen çıktı alanı adı (veri değerlerinin matrisi üstbilgi satırının altındadır). |
n |
Genel amaçlı biçime dönüştürülecek tablodan önce gelen niteleyici alanların veya değişmeyen boyutların sayısı. Varsayılan değer 1'dir. |
Bu komut dosyası fonksiyonu şu fonksiyonlar ile ilgilidir:
Fonksiyon | Etkileşim |
---|---|
Generic | Varlık-öznitelik-değer olarak yapılandırılmış bir veri kümesini alıp bunu normal ilişkisel bir tablo yapısına dönüştürerek karşılaşılan her özniteliği yeni bir veri alanına veya sütununa ayıran bir dönüşüm yükleme ön eki. |
Örnek 1 – Pivotlu satış verilerini dönüştürme (basit)
Genel bakış
Veri yükleme düzenleyicisini açın ve aşağıdaki ilk komut dosyasını bir sekmeye ekleyin.
İlk yükleme komut dosyası, crosstable fonksiyonunu uygulayan bölümün kullanımdan çıkarıldığı crosstable kod ön ekinin daha sonra uygulanacağı veri kümesini içerir. Bu, komut dosyasındaki bu bölümü kullanımdan çıkarmak için yorum söz diziminin kullanıldığı anlamına gelir.
İkinci yükleme komut dosyası birinciyle aynıdır, ancak crosstable fonksiyonunun uygulanması kullanıma alınmıştır (yorum söz dizimi kaldırılarak). Komut dosyaları, bu kod fonksiyonunun veri dönüştürmedeki değerini vurgulamak için bu şekilde gösterilmektedir.
Birinci yükleme komut dosyası (fonksiyon uygulanmaz)
tmpData:
//Crosstable (MonthText, Sales)
Load * inline [
Product, Jan 2021, Feb 2021, Mar 2021, Apr 2021, May 2021, Jun 2021
A, 100, 98, 103, 63, 108, 82
B, 284, 279, 297, 305, 294, 292
C, 50, 53, 50, 54, 49, 51];
//Final:
//Load Product,
//Date(Date#(MonthText,'MMM YYYY'),'MMM YYYY') as Month,
//Sales
//Resident tmpData;
//Drop Table tmpData;
Satır içi yüklemeleri kullanma hakkında daha fazla bilgi için bkz. Satır içi yüklemeler.
Sonuçlar
Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanları boyut olarak ekleyin:
-
Product
-
Jan 2021
-
Feb 2021
-
Mar 2021
-
Apr 2021
-
May 2021
-
Jun 2021
Product | Oca 2021 | Şub 2021 | Mar 2021 | Nis 2021 | May 2021 | Haz 2021 |
---|---|---|---|---|---|---|
A | 100 | 98 | 103 | 63 | 108 | 82 |
B | 284 | 279 | 297 | 305 | 294 | 292 |
C | 50 | 53 | 50 | 54 | 49 | 51 |
Bu komut dosyası, her ay için bir sütun ve her ürün için bir satır ile bir çapraz tablo oluşturulmasına izin vermektedir. Mevcut biçiminde, bu verilerin analiz edilmesi kolay değildir. Üç sütunlu bir tabloda tüm sayıların bir alanda, tüm ayların başka bir alanda olması çok daha iyi olurdu. Sonraki bölüm, çapraz tabloya bu dönüşümün nasıl yapılacağını açıklamaktadır.
İkinci yükleme komut dosyası (fonksiyon uygulanır)
// karakterlerini kaldırarak kodu kullanıma alın. Yüklenen kod şöyle görünmelidir:
tmpData:
Crosstable (MonthText, Sales)
Load * inline [
Product, Jan 2021, Feb 2021, Mar 2021, Apr 2021, May 2021, Jun 2021
A, 100, 98, 103, 63, 108, 82
B, 284, 279, 297, 305, 294, 292
C, 50, 53, 50, 54, 49, 51];
Final:
Load Product,
Date(Date#(MonthText,'MMM YYYY'),'MMM YYYY') as Month,
Sales
Resident tmpData;
Drop Table tmpData;
Satır içi yüklemeleri kullanma hakkında daha fazla bilgi için bkz. Satır içi yüklemeler.
Sonuçlar
Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanları boyut olarak ekleyin:
-
Product
-
Month
-
Sales
Product | Ay | Satışlar |
---|---|---|
A | Jan 2021 | 100 |
A | Feb 2021 | 98 |
A | Mar 2021 | 103 |
A | Apr 2021 | 63 |
A | May 2021 | 108 |
A | Jun 2021 | 82 |
B | Jan 2021 | 284 |
B | Feb 2021 | 279 |
B | Mar 2021 | 297 |
B | Apr 2021 | 305 |
B | May 2021 | 294 |
B | Jun 2021 | 292 |
C | Jan 2021 | 50 |
C | Feb 2021 | 53 |
C | Mar 2021 | 50 |
C | Apr 2021 | 54 |
C | May 2021 | 49 |
C | Jun 2021 | 51 |
Kod ön eki uygulandıktan sonra çapraz tablo, Month için bir ve Sales için başka bir sütun ile düz bir tabloya dönüştürülür. Bu, verilerin okunabilirliğini artırır.
Örnek 2 – Pivotlu satış hedefi verilerini dikey bir tablo yapısına dönüştürme (ara aşama)
Genel bakış
Veri yükleme düzenleyicisini açın ve aşağıdaki yükleme kodunu yeni bir sekmeye ekleyin.
Yükleme kodu şunları içerir:
-
Targets adlı bir tabloya yüklenen bir veri kümesi.
-
Pivotlu satış elemanı adlarını Sales Person etiketli kendi alanına transpoze eden crosstable yükleme ön eki.
-
Target adlı bir alana yapılandırılan ilişkili satış hedefi verileri.
Komut dosyası
SalesTargets:
CROSSTABLE([Sales Person],Target,1)
LOAD
*
INLINE [
Area, Lisa, James, Sharon
APAC, 1500, 1750, 1850
EMEA, 1350, 950, 2050
NA, 1800, 1200, 1350
];
Sonuçlar
Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanları boyut olarak ekleyin:
-
Area
-
Sales Person
Şu hesaplamayı ekleyin:
=Sum(Target)
Alan | Satış Personeli | =Sum(Target) |
---|---|---|
APAC | James | 1750 |
APAC | Lisa | 1500 |
APAC |
Sharon | 1850 |
EMEA | James | 950 |
EMEA | Lisa | 1350 |
EMEA | Sharon | 2050 |
Geçerli değil | James | 1200 |
Geçerli değil | Lisa | 1800 |
Geçerli değil | Sharon | 1350 |
Verilerin pivot giriş tablosu olarak görüntülenmesini çoğaltmak istiyorsanız bir sayfada eş değer bir pivot tablo oluşturabilirsiniz.
Aşağıdakileri yapın:
- Az önce oluşturduğunuz tabloyu kopyalayıp sayfaya yapıştırın.
- Pivot tablo grafik nesnesini yeni oluşturulan tablo kopyasının üzerine sürükleyin. Dönüştür'ü seçin.
- Düzenleme bitti'ye tıklayın.
- Sales Person alanını dikey sütun rafından yatay sütun rafına sürükleyin.
Aşağıdaki tablo, verileri ilk tablo biçiminde, Qlik Sense içinde görüntülendiği haliyle göstermektedir:
Alan | Satış Personeli | =Sum(Target) |
---|---|---|
Toplamlar | - | 13800 |
APAC | James | 1750 |
APAC | Lisa | 1500 |
APAC |
Sharon | 1850 |
EMEA | James | 950 |
EMEA | Lisa | 1350 |
EMEA | Sharon | 2050 |
Geçerli değil | James | 1200 |
Geçerli değil | Lisa | 1800 |
Geçerli değil | Sharon | 1350 |
Eş değer pivot tablo; satış elemanının adının sütunu Sales Person için daha büyük satırın içinde kalacak şekilde olmak üzere şuna benzer:
Alan | James | Lisa | Sharon |
---|---|---|---|
APAC | 1750 | 1500 | 1850 |
EMEA | 950 | 1350 | 2050 |
Geçerli değil | 1350 | 1350 | 1350 |
Örnek 3 – Pivotlu satışları ve hedef verileri dikey bir tablo yapısına dönüştürme (gelişmiş)
Genel bakış
Veri yükleme düzenleyicisini açın ve aşağıdaki yükleme kodunu yeni bir sekmeye ekleyin.
Yükleme kodu şunları içerir:
-
Satış ve hedeflerin verilerini temsil eden, bölgeye ve aya göre düzenlenmiş bir veri kümesi. Bu, SalesAndTargets adlı bir tabloya yüklenir.
-
crosstable yükleme ön eki. Bu, Month Year boyutunu pivot olmaktan çıkarıp özel bir alan yapmanın yanı sıra satışlar ve hedef miktarlar matrisini Amount adlı özel bir alana transpoze etmek için kullanılır.
-
Month Year alanının, metinden tarihe dönüştürme fonksiyonu date# kullanılarak metinden düzgün bir tarihe dönüştürülmesi. Tarihe dönüştürülmüş bu Month Year alanı, bir Join yükleme ön ekiyle SalesAndTarget tablosu ile geri birleştirilir.
Komut dosyası
SalesAndTargets:
CROSSTABLE(MonthYearAsText,Amount,2)
LOAD
*
INLINE [
Area Type Jan-22 Feb-22 Mar-22 Apr-22 May-22 Jun-22 Jul-22 Aug-22 Sep-22 Oct-22 Nov-22 Dec-22
APAC Target 425 425 425 425 425 425 425 425 425 425 425 425
APAC Actual 435 434 397 404 458 447 413 458 385 421 448 397
EMEA Target 362.5 362.5 362.5 362.5 362.5 362.5 362.5 362.5 362.5 362.5 362.5 362.5
EMEA Actual 363.5 359.5 337.5 361.5 341.5 337.5 379.5 352.5 327.5 337.5 360.5 334.5
NA Target 375 375 375 375 375 375 375 375 375 375 375 375
NA Actual 378 415 363 356 403 343 401 365 393 340 360 405
] (delimiter is '\t');
tmp:
LOAD DISTINCT MonthYearAsText,date#(MonthYearAsText,'MMM-YY') AS [Month Year]
RESIDENT SalesAndTargets;
JOIN (SalesAndTargets)
LOAD * RESIDENT tmp;
DROP TABLE tmp;
DROP FIELD MonthYearAsText;
Sonuçlar
Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanları boyut olarak ekleyin:
-
Area
-
Month Year
Actual etiketiyle şu hesaplamayı oluşturun:
=Sum({<Type={'Actual'}>} Amount)
Target etiketiyle şu hesaplamayı da oluşturun:
=Sum({<Type={'Target'}>} Amount)
Alan | Ay Yıl | Gerçek | Hedef |
---|---|---|---|
APAC | Jan-22 | 435 | 425 |
APAC | Feb-22 | 434 | 425 |
APAC |
Mar-22 | 397 | 425 |
APAC | Apr-22 | 404 | 425 |
APAC | May-22 | 458 | 425 |
APAC | Jun-22 | 447 | 425 |
APAC | Jul-22 | 413 | 425 |
APAC | Aug-22 | 458 | 425 |
APAC | Sep-22 | 385 | 425 |
APAC | Oct-22 | 421 | 425 |
APAC | Nov-22 | 448 | 425 |
APAC | Dec-22 | 397 | 425 |
EMEA | Jan-22 | 363.5 | 362.5 |
EMEA | Feb-22 | 359.5 | 362.5 |
Verilerin pivot giriş tablosu olarak görüntülenmesini çoğaltmak istiyorsanız bir sayfada eş değer bir pivot tablo oluşturabilirsiniz.
Aşağıdakileri yapın:
- Az önce oluşturduğunuz tabloyu kopyalayıp sayfaya yapıştırın.
- Pivot tablo grafik nesnesini yeni oluşturulan tablo kopyasının üzerine sürükleyin. Dönüştür'ü seçin.
- Düzenleme bitti'ye tıklayın.
- Month Year alanını dikey sütun rafından yatay sütun rafına sürükleyin.
- Values öğesini yatay sütun rafından dikey sütun rafına sürükleyin.
Aşağıdaki tablo, verileri ilk tablo biçiminde, Qlik Sense içinde görüntülendiği haliyle göstermektedir:
Alan | Ay Yıl | Gerçek | Hedef |
---|---|---|---|
Toplamlar | - | 13812 | 13950 |
APAC | Jan-22 | 435 | 425 |
APAC | Feb-22 | 434 | 425 |
APAC |
Mar-22 | 397 | 425 |
APAC | Apr-22 | 404 | 425 |
APAC | May-22 | 458 | 425 |
APAC | Jun-22 | 447 | 425 |
APAC | Jul-22 | 413 | 425 |
APAC | Aug-22 | 458 | 425 |
APAC | Sep-22 | 385 | 425 |
APAC | Oct-22 | 421 | 425 |
APAC | Nov-22 | 448 | 425 |
APAC | Dec-22 | 397 | 425 |
EMEA | Jan-22 | 363.5 | 362.5 |
EMEA | Feb-22 | 359.5 | 362.5 |
Eş değer pivot tablo; yılın her bir ayının sütunu Month Year için daha büyük satırın içinde kalacak şekilde olmak üzere şuna benzer:
Alan (Değerler) | Jan-22 | Feb-22 | Mar-22 | Apr-22 | May-22 | Jun-22 | Jul-22 | Aug-22 | Sep-22 | Oct-22 | Nov-22 | Dec-22 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
APAC - Gerçek | 435 | 434 | 397 | 404 | 458 | 447 | 413 | 458 | 385 | 421 | 448 | 397 |
APAC - Hedef | 425 | 425 | 425 | 425 | 425 | 425 | 425 | 425 | 425 | 425 | 425 | 425 |
EMEA - Gerçek | 363.5 | 359.5 | 337.5 | 361.5 | 341.5 | 337.5 | 379.5 | 352.5 | 327.5 | 337.5 | 360.5 | 334.5 |
EMEA - Hedef | 362.5 | 362.5 | 362.5 | 362.5 | 362.5 | 362.5 | 362.5 | 362.5 | 362.5 | 362.5 | 362.5 | 362.5 |
NA - Actual | 378 | 415 | 363 | 356 | 403 | 343 | 401 | 365 | 393 | 340 | 360 | 405 |
Geçerli Değil - Hedef | 375 | 375 | 375 | 375 | 375 | 375 | 375 | 375 | 375 | 375 | 375 | 375 |