# SubStringCount Komut dosyası ve grafik fonksiyonu

SubStringCount(), girdi dizesi metninde belirtilen alt dizenin oluşum sayısını döndürür. Eşleşme yoksa, 0 sonucu döndürülür.

Söz Dizimi:

SubStringCount(text, sub\_string)

Dönüş verileri türü: tamsayı

Bağımsız Değişkenler

| Bağımsız Değişken | Açıklama |
| --- | --- |
| text | Orijinal dize. |
| sub\_string | text giriş dizesi içinde bir kez veya daha çok geçebilen bir dize. |

Örnek: Grafik ifadeleri

| Örnek | Sonuç |
| --- | --- |
| `SubStringCount( 'abcdefgcdxyz', 'cd' )` | `2` döndürür |
| `SubStringCount( 'abcdefgcdxyz', 'dc' )` | `0` döndürür |

## Örnek - SubStringCount temel bilgileri

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/SubStringCount.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 `FruitSentence` adında bir alan.

Komut dosyası

```
Example:
Load * inline [
FruitSentence
"I love eating an apple every day.Apple juice is great too!"
"Apple pie is my favorite dessert. I also enjoy apple jam."
"There is an apple and a banana on the table."
"I don't like apples as much as oranges."
"An apple a day keeps the doctor away, but two apples are even better!"
];
```

Sonuçlar

Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanı boyut olarak ekleyin:

* ` FruitSentence
                                   `

Aşağıdaki hesaplanan boyutu oluşturun:

* `=SubStringCount(FruitSentence, 'apple')`, `apple` kelimesinin `FruitSentence` içinde kaç kez geçtiğini hesaplamak için.

Results table

| FruitSentence | SubStringCount(FruitSentence, 'apple') |
| --- | --- |
| An apple a day keeps the doctor away, but two apples are even better! | 2 |
| Apple pie is my favorite dessert. I also enjoy apple jam. | 1 |
| I don't like apples as much as oranges. | 1 |
| I love eating an apple every day. Apple juice is great too! | 1 |
| There is an apple and a banana on the table. | 1 |

Tablo, `FruitSentence` boyutunda artan sırada sıralanır. `SubStringCount` fonksiyonu, `apple` sözcüğünün her cümlede kaç kez geçtiğini döndürür. Örneğin, sözcük cümlede iki kez geçtiği içinden ilk cümle `2` döndürür. İkinci ve dördüncü cümlelerde fonksiyon, `apple` arama teriminin büyük/küçük harfiyle eşleşmediğinden `Apple` sözcüğünü yok sayar.

İpucu notuBüyük/küçük harfe duyarlı olmayan bir arama yapmak için, giriş dizenizi önce büyük veya küçük harfe dönüştürebilir ve ardından sonuç üzerinde `SubStringCount` fonksiyonunu kullanabilirsiniz. Örneğin, büyük/küçük harf fark etmeksizin apple sözcüğünün tüm geçtiği yerleri aramak için şu hesaplama ifadesini kullanın: `=SubStringCount(Upper(FruitSentence),'APPLE')`.Bu ifade, tüm dizeyi büyük harf karakterlerine dönüştürmek için `Upper` fonksiyonuyla birlikte `SubStringCount` fonksiyonunu kullanır ve ardından `APPLE` sözcüğünü arar.

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

#### Komut dosyası

Aşağıdaki kod, fonksiyonun bir komut dosyasında nasıl kullanılacağını gösterir. Bu örnek, tüm dizeyi büyük harf karakterlerine dönüştürmek için `Upper` fonksiyonuyla birlikte `SubStringCount` fonksiyonunu kullanan ve ardından `APPLE` sözcüğünü arayan bir önceki yüklemeyi içerir.

```
Example:
Load *,
SubStringCount(Upper(FruitSentence),'APPLE') as SubStringCount_APPLE;
Load * inline [
FruitSentence
"I love eating an apple every day. Apple juice is great too!"
"Apple pie is my favorite dessert. I also enjoy apple jam."
"There is an apple and a banana on the table."
"I don't like apples as much as oranges."
"An apple a day keeps the doctor away, but two apples are even better!"
];
```

Sonuçlar tablosu

| Meyve Cümlesi | AltDizeSayısı\_ELMA |
| --- | --- |
| I love eating an apple every day. Apple juice is great too! | 2 |
| Apple pie is my favorite dessert. I also enjoy apple jam. | 2 |
| There is an apple and a banana on the table. | 1 |
| I don't like apples as much as oranges. | 1 |
| An apple a day keeps the doctor away, but two apples are even better! | 2 |

## Örnek - SubStringCount senaryosu

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

#### Grafik ifadesi

Genel bakış

Meyve ürünlerinden oluşan bir veri kümesi, ürün açıklamalarını içeren bir alan içerir. Bu örnek, her bir açıklamada şu meyve adlarının kaç kez geçtiğini hesaplar: elma, muz veya portakal.

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 `ProductDescription` adında bir alan.

Komut dosyası

```
Example:
Load * inline [
ProductDescription
"Fresh apple and banana smoothie."
"Organic apple, banana, and orange juice. Great for breakfast."
"A refreshing orange soda made with real orange juice."
"Banana chips with apple and cinnamon flavor."
"Delicious apple pie with a hint of cinnamon and vanilla."
"Tropical banana and orange mix for smoothies."
];
```

Sonuçlar

Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanı boyut olarak ekleyin:

* `ProductDescription`

Aşağıdaki hesaplanan boyutları oluşturun:

* `=SubStringCount(ProductDescription, 'apple')`, `apple` sözcüğünün `ProductDescription` dizesinde geçme sayısını hesaplamak için.

* `=SubStringCount(ProductDescription, 'banana')`, `banana` sözcüğünün `ProductDescription` dizesinde geçme sayısını hesaplamak için.

* `=SubStringCount(ProductDescription, 'orange')`, `orange` sözcüğünün `ProductDescription` dizesinde geçme sayısını hesaplamak için.

Results table

| ProductDescription | SubStringCount(ProductDescription, 'apple') | SubStringCount(ProductDescription, 'banana') | SubStringCount(ProductDescription, 'orange') |
| --- | --- | --- | --- |
| A refreshing orange soda made with real orange juice. | 0 | 0 | 2 |
| Banana chips with apple and cinnamon flavor. | 1 | 0 | 0 |
| Delicious apple pie with a hint of cinnamon and vanilla. | 1 | 0 | 0 |
| Fresh apple and banana smoothie. | 1 | 1 | 0 |
| Organic apple, banana, and orange juice. Great for breakfast. | 1 | 1 | 1 |
| Tropical banana and orange mix for smoothies. | 0 | 1 | 1 |

`SubStringCount` fonksiyonunun çıktısı, her bir alt dizenin (`apple, banana, orange`) ürün açıklamasında geçtiği örnek sayısını başarıyla döndürür. Örneğin, ilk açıklamada, `orange` sözcüğünün iki örneği olduğu için fonksiyon 2 döndürür. `sub_string` bağımsız değişkeni büyük/küçük harfe duyarlıdır, bu nedenle ikinci açıklamada, hesaplama ifadesindeki `banana` alt dizesiyle eşleşmediği için fonksiyon, `Banana` sözcüğünü saymaz.

İpucu notuBüyük/küçük harfe duyarlı olmayan bir arama yapmak için, giriş dizenizi önce büyük veya küçük harfe dönüştürebilir ve ardından sonuç üzerinde `SubStringCount` fonksiyonunu kullanabilirsiniz. Örneğin, büyük/küçük harf fark etmeksizin apple sözcüğünün tüm geçtiği yerleri aramak için şu hesaplama ifadesini kullanın: `=SubStringCount(Upper(ProductDescription),'APPLE')`.Bu ifade, tüm dizeyi büyük harf karakterlerine dönüştürmek için `Upper` fonksiyonuyla birlikte `SubStringCount` fonksiyonunu kullanır ve ardından `APPLE` sözcüğünü arar.

## Örnek - İç içe geçmiş verileri ayrıştıran SubStringCount senaryosu

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

#### Grafik ifadesi

Genel bakış

BT kayıtlarından oluşan bir veri kümesi, değişiklik kimlik numaralarının ve kategorilerinin bir listesini içerir. Veri tablosunda Categories alanı, en üst ana kategoriyi ve ardından tüm alt kategorileri listeleyen çok seviyeli bir hiyerarşiden türetilmiştir, örneğin Yazılım &gt; Program &gt; Düzeltme. Bu senaryo, SubStringCount ve SubField fonksiyonlarının bir kombinasyonunu kullanarak bu düzensiz kategori hiyerarşisinden son değerin veya yaprak değerinin nasıl seçileceğini göstermektedir.

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:

  * ChangeID, işlenecek orijinal değişiklik kimliğini içerir.

  * Categories, değişiklik kategorilerinin bir listesini içerir. Kategoriler noktalı virgüllerle ayrılır ve en üstteki ana kategoriden başlayarak en ayrıntılı alt kategoriye kadar soldan sağa hiyerarşik sırayla listelenir.

Komut dosyası

```
Example:
Load * inline [
ChangeID,Categories
CHG00100,Software;Program;Patch
CHG00101,Hardware;Server
CHG00102,Hardware;Network;Router
];
```

Sonuçlar

Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanları boyut olarak ekleyin:

* ChangeID

* Categories

Aşağıdaki hesaplanan boyutları oluşturun:

* =SubStringCount(Categories,';')+1, değişiklik hiyerarşisindeki kategori seviyelerinin sayısını hesaplamak için.

* =SubField(Categories, ';' ,SubStringCount(Categories,';')+1), değişiklik hiyerarşisinde en sağdaki kategoriyi çıkarmak için.

Results table

| ChangeID | Categories | ​SubStringCount(Categories,';')+1 | SubField(Categories, ';' ,SubStringCount(Categories,';')+1) |
| --- | --- | --- | --- |
| CHG00100 | Software;Program;Patch | 3 | Patch |
| CHG00101 | Hardware;Server | 2 | Server |
| CHG00102 | Hardware;Network;Router | 3 | Router |

Bu örnekte, SubStringCount fonksiyonu, SubField fonksiyonunun içine yerleştirilmiştir. Hesaplanan ilk boyut olan SubStringCount(), Categories alanındaki iç içe geçmiş değerlerin sayısını hesaplar. Bu, ';' noktalı virgüller sayılarak ve sonuca 1 eklenerek belirlenir. Bu çıktı daha sonra SubField fonksiyonunun üçüncü parametresi olarak enjekte edilerek Categories alanında iç içe geçmiş en sağdaki kategori çıkarılır.

Örneğin, ChangeID girişi için sonuçları inceleyin CHG00100. İlk hesaplanan boyutta SubStringCount 2'dir. İfade daha sonra Categories alanının Software, Program ve Patch olmak üzere üç iç içe kategori değerine sahip olduğunu belirlemek için bu sonuca 1 ekler. Hesaplanan ikinci boyuttaki SubField fonksiyonu daha sonra bu sonucu olan Patch üçüncü kategoriyi çıkarmak için kullanır.