# SubField Komut dosyası ve grafik fonksiyonu

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.<br><br><ul> <li><span>field_no</span> pozitif bir değerse alt dizeler soldan sağa doğru ayıklanır.</li> <li><span>field_no</span> negatif bir değerse alt dizeler sağdan sola doğru ayıklanır.</li> </ul> |

İpucu notu Len(), Right(), Left(), Mid() gibi fonksiyonların ve diğer dize fonksiyonlarının karmaşık kombinasyonlarını kullanmak yerine SubField() kullanılabilir.

Örnekler: Grafik ifadeleri

| Örnek | Sonuç |
| --- | --- |
| `SubField( 'abc;cde;efg',   ';' ,2 )` | `cde` döndürür |
| `SubField( Null,   ';' ,1 )` | Boş bir dize döndürür |
| `SubField( ';',   ';' ,1 )` | Boş bir dize döndürür |
| `SubField( '\Users\ext_jrb\Documents\Qlik\Sense\Apps;','\',-3 )` | `Qlik` döndürür |

## Örnek - SubField temel bilgileri

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/SubField.htm)

#### Grafik ifadesi

Genel bakış

Veri yükleme düzenleyicisini açın ve aşağıdaki komut dosyasını yeni bir bölüme ekleyin.

Komut dosyası ş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.

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/SubField.htm)

#### Komut dosyası

Komut dosyası

Veri yükleme düzenleyicisi bölümünü açın ve aşağıdaki yükleme kodunu yeni bir bölüme 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

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/SubField.htm)

#### Grafik ifadesi

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 komut dosyasını yeni bir bölüme ekleyin.

Komut dosyası şunları içerir:

* `Example` adlı veri tablosuna yüklenen bir veri kümesi.

* Veri tablosundaki şu alanlar:

  * `ProductID`

  * `ProductName`

  * `Tags`

  * `Sales`

Komut dosyası

```
Example:
Load  *
INLINE [
ProductID, ProductName, Tags, Sales
1, Widget A, Electronics|Gadgets|Home, 150
2, Widget B, Electronics|Accessories, 200
3, Widget C, Furniture|Home, 100
4, Widget D, Gadgets|Accessories, 250
];
```

Sonuçlar

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.

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/SubField.htm)

#### Komut dosyası

Komut dosyası

Veri yükleme düzenleyicisi bölümünü açın ve aşağıdaki yükleme kodunu yeni bir bölüme 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.