# SubStringCount funkcja skryptu i funkcja wykresu

Funkcja SubStringCount() zwraca liczbę wystąpień określonego fragmentu tekstu w tekście ciągu wejściowego. W przypadku braku dopasowań zwracane jest 0.

Składnia:

SubStringCount(text, sub\_string)

Typ zwracanych danych: liczba całkowita

Argumenty

| Argument | Opis |
| --- | --- |
| text | Pierwotny ciąg znaków. |
| sub\_string | Ciąg znaków, który może występować co najmniej raz w tekście text wejściowego ciągu znaków. |

Przykład: wyrażenia wykresu

| Przykład | Wynik |
| --- | --- |
| `SubStringCount( 'abcdefgcdxyz', 'cd' )` | Zwraca wartość `2` |
| `SubStringCount( 'abcdefgcdxyz', 'dc' )` | Zwraca wartość `0` |

## Przykład — podstawy SubStringCount

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

#### Wyrażenie wykresu

Przegląd

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Zestaw danych załadowany do tabeli o nazwie `Example`.

* Jedno pole w tabeli danych o nazwie `FruitSentence`.

Skrypt ładowania

```
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!"
];
```

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj to pole jako wymiar:

* ` FruitSentence
                                   `

Utwórz następujący wymiar wyliczany:

* `=SubStringCount(FruitSentence, 'apple')` do obliczenia, ile razy słowo `apple` występuje w `FruitSentence`.

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 |

Tabela jest sortowana według wymiaru `FruitSentence` w porządku rosnącym. Funkcja `SubStringCount` zwraca liczbę wystąpień słowa `apple` w każdym zdaniu. Na przykład pierwsze zdanie zwraca `2`, ponieważ słowo to występuje w zdaniu dwukrotnie. W drugim i czwartym zdaniu funkcja ignoruje słowo `Apple`, ponieważ nie pasuje ono do wielkości liter wyszukiwanego hasła `apple`.

WskazówkaAby przeprowadzić wyszukiwanie bez uwzględniania wielkości liter, można najpierw przekonwertować ciąg wejściowy na wielkie lub małe litery, a następnie użyć funkcji `SubStringCount` na wyniku. Na przykład, aby wyszukać wszystkie wystąpienia słowa apple, niezależnie od wielkości liter, należy użyć następującego wyrażenia miary: `=SubStringCount(Upper(FruitSentence),'APPLE')`. Wyrażenie to wykorzystuje funkcję `SubStringCount` z funkcją `Upper` do konwersji całego ciągu na wielkie litery, a następnie wyszukuje słowo `APPLE`.

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

#### Skrypt ładowania

Poniższy kod pokazuje, jak użyć tej funkcji w skrypcie ładowania. Ten przykład zawiera poprzedzający ładunek, który wykorzystuje funkcję `SubStringCount` z funkcją `Upper` do konwersji całego ciągu na wielkie litery, a następnie wyszukuje słowo `APPLE`.

```
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!"
];
```

Tabela wynikowa

| FruitSentence | SubStringCount\_APPLE |
| --- | --- |
| 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 |

## Przykład — zastosowanie SubStringCount

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

#### Wyrażenie wykresu

Przegląd

Zestaw danych produktów owocowych zawiera pole z opisem produktu. W tym przykładzie oblicza się, ile razy w każdym opisie występują następujące nazwy owoców: apple, banana, orange.

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Zestaw danych załadowany do tabeli o nazwie `Example`.

* Jedno pole w tabeli danych o nazwie `ProductDescription`.

Skrypt ładowania

```
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."
];
```

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj to pole jako wymiar:

* `ProductDescription`

Utwórz następujące wymiary wyliczane:

* `=SubStringCount(ProductDescription, 'apple')` do obliczenia liczby wystąpień słowa `apple` w ciągu `ProductDescription`.

* `=SubStringCount(ProductDescription, 'banana')` do obliczenia liczby wystąpień słowa `banana` w ciągu `ProductDescription`.

* `=SubStringCount(ProductDescription, 'orange')` do obliczenia liczby wystąpień słowa `orange` w ciągu `ProductDescription`.

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 |

Wynik funkcji `SubStringCount` zwraca liczbę wystąpień każdego podciągu (`apple, banana, orange`) w opisie produktu. Na przykład w pierwszym opisie funkcja zwraca 2, ponieważ istnieją dwa wystąpienia słowa `orange`. W argumencie `sub_string` jest rozróżniana wielkość liter, więc w drugim opisie funkcja nie liczy słowa `Banana`, ponieważ nie pasuje ono do podciągu `banana` w wyrażeniu miary.

WskazówkaAby przeprowadzić wyszukiwanie bez uwzględniania wielkości liter, można najpierw przekonwertować ciąg wejściowy na wielkie lub małe litery, a następnie użyć funkcji `SubStringCount` na wyniku. Na przykład, aby wyszukać wszystkie wystąpienia słowa apple, niezależnie od wielkości liter, należy użyć następującego wyrażenia miary: `=SubStringCount(Upper(ProductDescription),'APPLE')`. Wyrażenie to wykorzystuje funkcję `SubStringCount` z funkcją `Upper` do konwersji całego ciągu na wielkie litery, a następnie wyszukuje słowo `APPLE`.

## Przykład — zastosowanie SubStringCount do analizy zagnieżdżonych danych

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

#### Wyrażenie wykresu

Przegląd

Zestaw danych rekordów IT zawiera listę numerów identyfikatorów zmian i kategorii. W tabeli danych pole Categories pochodzi z wielopoziomowej hierarchii, która zawiera listę najwyższej kategorii nadrzędnej, po której następują wszystkie podkategorie, na przykład Software &gt; Program &gt; Patch (Oprogramowanie &gt; Program &gt; Poprawka). Ten scenariusz pokazuje, jak wybrać ostatnią wartość lub wartość liścia z tej niedopracowanej hierarchii kategorii za pomocą kombinacji funkcji SubStringCount i SubField.

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Zestaw danych załadowany do tabeli o nazwie Example.

* Tabela zawiera następujące pola:

  * ChangeID zawiera oryginalny identyfikator zmiany do przetworzenia.

  * Categories zawiera listę kategorii zmian. Kategorie są oddzielone średnikami i wymienione w kolejności hierarchicznej od lewej do prawej, zaczynając od najwyższej kategorii nadrzędnej do najbardziej szczegółowej podkategorii.

Skrypt ładowania

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

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:

* ChangeID

* Categories

Utwórz następujące wymiary wyliczane:

* =SubStringCount(Categories,';')+1 do obliczenia liczbę poziomów kategorii w hierarchii zmian.

* =SubField(Categories, ';' ,SubStringCount(Categories,';')+1) do wyodrębnienia kategorii najbardziej na prawo w hierarchii zmian.

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 |

W tym przypadku funkcja SubStringCount jest zagnieżdżona w funkcji SubField. Pierwszy wyliczany wymiar, SubStringCount(), oblicza liczbę zagnieżdżonych wartości w polu Categories. Określa się to poprzez policzenie liczby średników ';' i dodanie 1 do wyniku. Dane te są następnie wstawiane jako trzeci parametr funkcji SubField w celu wyodrębnienia kategorii najbardziej na prawo zagnieżdżonej w polu Categories.

Na przykład przejrzyj wyniki dla wpisu ChangeID CHG00100 . W pierwszym wyliczanym wymiarze wartość SubStringCount wynosi 2. Następnie wyrażenie dodaje 1 do tego wyniku, aby określić, że pole Categories ma trzy zagnieżdżone wartości kategorii, Software, Program i Patch. Funkcja SubField w drugim wyliczanym wymiarze wykorzystuje następnie ten wynik do wyodrębnienia trzeciej kategorii, Patch.