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ş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.
Veri yükleme düzenleyicisini açın ve aşağıdaki yükleme kodunu yeni bir sekmeye ekleyin.
Yükleme kodu şunları içerir:
Example adlı veri tablosuna yüklenen bir veri kümesi.
Veri tablosunda Name adında bir alan.
Komut dosyası
Example:
Load * inline [
Name
Dave Owen
Joe Tem
];
Sonuçlar
Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanı boyut olarak ekleyin:
Name
Aşağıdaki hesaplanan boyutları oluşturun:
=SubField(Name, ' ',1), alan ' ' sınırlayıcısından önce görünen ilk alt dizeyi ayıklamak için.
=SubField(Name, ' ',-1), alan ' ' sınırlayıcısından önce dizenin sağından başlayarak görünen ilk alt dizeyi ayıklamak için.
Results table
Name
SubField(Name, ' ',1)
SubField(Name, ' ',-1)
Dave Owen
Dave
Owen
Joe Tem
Joe
Tem
SubField() fonksiyonu, field_no bağımsız değişkenini 1 olarak ayarlayarak Name öğesinin 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.
Komut dosyası
Veri yükleme düzenleyicisi bölümünü açın ve aşağıdaki yükleme kodunu yeni bir sekmeye ekleyin.
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;
Sonuçlar
Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanları boyut olarak ekleyin:
Name
FirstName
SurName
Results table
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 Name öğesinin 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.
Örnek - SubField senaryosu
Genel bakış
Ürünlerden oluşan bir veri kümesi bir ürün tablosu içerir. Tablodaki her ürün, ürün alanını tanımlayan bir etiket alanına sahiptir. Ürünler, etiket alanı için birden fazla değere sahip olabilir. Örneğin, Widget A aşağıdaki etiketlere sahiptir: Elektronik, Aletler, Ev. Etiket değerleri sınırlayıcı olarak dik çizgi (|) karakteri ile ayrılır. Bu örnek, SubField fonksiyonunu kullanarak belirli etiket değerlerini nasıl çıkaracağınızı gösterir.
Veri yükleme düzenleyicisini açın ve aşağıdaki yükleme kodunu yeni bir sekmeye ekleyin.
Yükleme kodu şunları içerir:
Example adlı veri tablosuna yüklenen bir veri kümesi.
Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanları boyut olarak ekleyin:
ProductID
ProductName
Tags
Aşağıdaki hesaplanan boyutları oluşturun:
=SubField(Tags, '|',1), Tags alanındaki ilk öğeyi çıkarmak için.
=SubField(Tags, '|',2), Tags alanındaki ikinci öğeyi çıkarmak için.
=SubField(Tags, '|',3), Tags alanındaki üçüncü öğeyi çıkarmak için.
Results table
ProductID
ProductName
Tags
SubField(Tags, '|', 1)
SubField(Tags, '|', 2)
SubField(Tags, '|', 3)
1
Widget A
Electronics|Gadgets|Home
Electronics
Gadgets
Home
2
Widget B
Electronics|Accessories
Electronics
Accessories
-
3
Widget C
Furniture|Home
Furniture
Home
-
4
Widget D
Gadgets|Accessories
Gadgets
Accessories
-
SubField fonksiyonlarının çıktısı, etiketleri orijinal Tags dizesindeki ilgili konumlardan başarıyla döndürmüştür.
Komut dosyası
Veri yükleme düzenleyicisi bölümünü açın ve aşağıdaki yükleme kodunu yeni bir sekmeye ekleyin.
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 '|');
Sonuçlar
Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanları boyut olarak ekleyin:
Instrument
Player
Project
Results table
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!