SubField(), orijinal kayıt alanlarının bir ayırıcıyla ayrılmış iki veya daha fazla bölümden oluştuğu bir üst dize alanından alt dize bileşenlerini ayıklamak için kullanılır.
Subfield() fonksiyonu örneğin, tam adlardan oluşan bir kayıt listesinden adı veya soyadı ayıklamak, bir yol adının bileşen parçalarına ayıklamak veya virgülle ayrılmış tablolardan verileri ayıklamak için kullanılabilir.
Subfield() fonksiyonunu bir LOAD deyimi içinde isteğe bağlı field_no parametresini hariç bırakarak kullanırsanız, her bir alt dize için bir tam kayıt üretilir. Subfield() kullanılarak birkaç alan yüklenirse, tüm kombinasyonların Kartezyen çarpımları oluşturulur.
Söz Dizimi:
SubField(text,
delimiter[, field_no ])
Dönüş verileri türü: dize
Bağımsız Değişkenler:
Bağımsız Değişkenler
Bağımsız Değişken
Açıklama
text
Orijinal dize. Bu bir sabit kodlanmış metin, değişken, dolar işareti genişletmesi veya başka bir ifade olabilir.
delimiter
Dizeyi bileşen parçalarına ayıran text girişi içindeki bir karakter.
field_no
İsteğe bağlı üçüncü bağımsız değişken, text ana dizesinin hangi alt dizelerinin döndürüleceğini belirten bir tamsayıdır. İlk alt dizeyi döndürmek için 1 değerini, ikinci alt dizeyi döndürmek için 2 değerini kullanın ve bu şekilde devam edin.
field_no pozitif bir değerse alt dizeler soldan sağa doğru ayıklanır.
field_no negatif bir değerse alt dizeler sağdan sola doğru ayıklanır.
İpucu notuLen(), Right(), Left(), Mid() gibi fonksiyonların ve diğer dize fonksiyonlarının karmaşık kombinasyonlarını kullanmak yerine SubField() kullanılabilir.
Örnekler: SubField kullanan kod ve grafik ifadeleri
Temel örnekler
Örnek
Sonuç
SubField(S, ';' ,2)
S'abc;cde;efg' ise 'cde' döndürür.
SubField(S, ';' ,1)
S boş bir dizeyse boş bir dize döndürür.
SubField(S, ';' ,1)
S';' ise boş bir dize döndürür.
vMyPath yol adını içeren bir değişkeninizin olduğunu varsayın,
Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps;.
Metin ve resim grafiğinde şunun gibi bir hesaplama ekleyebilirsiniz: vMyPath değişkeninin sağ tarafındaki üçüncü alt dize olduğu için 'Qlik' ile sonuçlanan SubField(vMyPath, '\',-3).
Kod örneği 1
Komut dosyası
Aşağıdaki kod ifadelerini ve verileri veri yükleme düzenleyicisine yükleyin.
FullName:
LOAD * inline [
Name
'Dave Owen'
'Joe Tem'
];
SepNames:
Load Name,
SubField(Name, ' ',1) as FirstName,
SubField(Name, ' ',-1) as Surname
Resident FullName;
Drop Table FullName;
Görselleştirme oluşturma
Bir Qlik Sense sayfasında, Ad, Ad ve Soyadı boyutlarıyla bir tablo görselleştirmesi oluşturun.
Sonuç
Name
FirstName
SurName
Dave Owen
Dave
Owen
Joe Tem
Joe
Tem
Açıklama
SubField() fonksiyonu, field_no bağımsız değişkenini 1 olarak ayarlayarak Ad'ın ilk alt dizesini ayıklar. field_no değeri pozitif olduğundan, alt dizeyi ayıklamak için soldan sağa bir sıra izlenir. İkinci bir fonksiyon çağrısı, field_no bağımsız değişkenini -1 olarak ayarlayarak ikinci alt dizeyi ayıklar. Bu, alt dizeyi sağdan sola sıralayarak ayıklar.
Kod örneği 2
Komut dosyası
Aşağıdaki kod ifadelerini ve verileri veri yükleme düzenleyicisine yükleyin.
LOAD DISTINCT
Instrument,
SubField(Player,',') as Player,
SubField(Project,',') as Project;
Load * inline [
Instrument|Player|Project
Guitar|Neil,Mike|Music,Video
Guitar|Neil|Music,OST
Synth|Neil,Jen|Music,Video,OST
Synth|Jo|Music
Guitar|Neil,Mike|Music,OST
] (delimiter is '|');
Görselleştirme oluşturma
Qlik Sense sayfasında Araç, Oynatıcı ve Proje boyutlarıyla bir tablo görselleştirmesi oluşturun.
Sonuç
Instrument
Player
Project
Guitar
Mike
Music
Guitar
Mike
Video
Guitar
Mike
OST
Guitar
Neil
Music
Guitar
Neil
Video
Guitar
Neil
OST
Synth
Jen
Music
Synth
Jen
Video
Synth
Jen
OST
Synth
Jo
Music
Synth
Neil
Music
Synth
Neil
Video
Synth
Neil
OST
Açıklama
Bu örnek, Subfield() fonksiyonunu aynı LOAD deyimi içerisinden field_no parametresi dışarıda bırakılarak kullanmanın, nasıl tüm kombinasyonların Kartezyen çarpımlarını oluşturduğunu gösterir. Yinelenen kayıt oluşturmaktan kaçınmak için DISTINCT seçeneği kullanılır.
Bu sayfa size yardımcı oldu mu?
Bu sayfa veya içeriği ile ilgili bir sorun; bir yazım hatası, eksik bir adım veya teknik bir hata bulursanız, bize bildirin, düzeltelim!