# FindOneOf funkcja skryptu i funkcja wykresu

Funkcja FindOneOf() przeszukuje ciąg znaków, aby znaleźć pozycję wystąpienia dowolnego znaku z zestawu udostępnionych znaków. Zwracana jest pozycja N-tego wystąpienia dowolnego znaku ze zbioru wyszukiwania, gdzie N jest opcjonalnym trzecim parametrem funkcji. Jeśli nie podano trzeciego parametru, zwracane jest pierwsze wystąpienie. W razie braku dopasowania zwracane jest 0.

Składnia:

FindOneOf(text, char\_set[, count])

Typ zwracanych danych: liczba całkowita

Argumenty

| Argument | Opis |
| --- | --- |
| text | Pierwotny ciąg znaków. |
| char\_set | Zestaw znaków do wyszukania w tekście text/ |
| count | Określa wystąpienie dowolnego znaku, który ma zostać wyszukany. Na przykład wartość dwóch wyszukań dla drugiego wystąpienia. |

Przykład: wyrażenia wykresu

| Przykład | Wynik |
| --- | --- |
| `FindOneOf(  'my example text string', 'et%s' )` | Zwraca „`4`”, ponieważ „`e`” jest czwartym znakiem w przykładowym ciągu. |
| `FindOneOf(  'my example text string', 'et%s', 3 )` | Zwraca `12`, ponieważ wyszukiwanie dotyczy dowolnego z następujących znaków: `e`, `t`, `%` lub `s`, a `t` to trzecie wystąpienie na pozycji `12` przykładowego ciągu. |
| `FindOneOf(  'my example text string', '¤%&' )` | Zwraca `0` , ponieważ żaden ze znaków `¤`, `%` ani `&` nie został znaleziony w przykładowym ciągu. |

## Przykład — podstawy FindOneOf

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/FindOneOf.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 `Phrase`, które zawiera oryginalne ciągi tekstowe do przetworzenia.

Skrypt ładowania

```
Example:
Load *
Inline
[Phrase
Many tiny beads
For a very long time
Has the potential for growth
];
```

Wyniki

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

* ` Phrase
                                   `

Utwórz następujące wymiary wyliczane:

* `=FindOneOf(Phrase, 'e', 1)`

* `=FindOneOf(Phrase, 'y', 1)`

* `=FindOneOf(Phrase, 'ey', 1)`

* `=FindOneOf(Phrase, 'e', 2)`

* `=FindOneOf(Phrase, 'y', 2)`

* `=FindOneOf(Phrase, 'ey', 2)`

Tabela wynikowa

| Phrase | FindOneOf(Phrase, 'e', 1) | FindOneOf(Phrase, 'y', 1) | FindOneOf(Phrase, 'ey', 1) | FindOneOf(Phrase, 'e', 2) | FindOneOf(Phrase, 'y', 2) | FindOneOf(Phrase, 'ey', 2) |
| --- | --- | --- | --- | --- | --- | --- |
| For a very long time | 8 | 10 | 8 | 20 | 0 | 10 |
| Has the potential for growth | 7 | 0 | 7 | 12 | 0 | 12 |
| Many tiny beads | 12 | 4 | 4 | 0 | 9 | 9 |

W przypadku każdego wymiaru wyliczanego dane wyjściowe zwracają pozycję wystąpienia znaków z zestawu wyszukiwania dla każdej frazy. Na przykład pierwsze wystąpienie litery `e` znajduje się na pozycjach `8`, `7` i `12` odpowiednio w każdej frazie. Drugie wystąpienie litery `e` w każdej frazie znajduje się na pozycjach `20`, `12` i `0` (nie znaleziono). Podobnie wystąpienie liter „`e` lub `y`” znajduje się na pozycji `8`, `7` i `4`, odpowiednio w każdej frazie. Zauważ, że we frazie `For a very long time` pierwsze wystąpienie „`e` lub `y`” znajduje się na pozycji `8`, `e`, a drugie wystąpienie na pozycji `10`, `y`.

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

#### Skrypt ładowania

Poniższy kod pokazuje, jak użyć tej funkcji w skrypcie ładowania.

```
Example:
Load *, FindOneOf(InputText, SearchFor, Occurrence) AS FindOneOf_Matches
Inline
InputText, SearchFor, Occurrence
my example text string, et%s,1
my example text string, et%s,3
my example text string, ¤%&,1
];
```

Tabela wynikowa

| InputText | SearchFor | Occurrence | FindOneOf\_Matches |
| --- | --- | --- | --- |
| my example text string | et%s | 1 | 4 |
| my example text string | et%s | 3 | 12 |
| my example text string | ¤%& | 1 | 0 |

## Przykład — zastosowanie FindOneOf

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

#### Wyrażenie wykresu

Przegląd

W tym przykładzie wykorzystuje się funkcję `FindOneOf` do analizowania komentarzy klientów w zestawie danych zamówień klientów i identyfikowania zamówień, które mogą wymagać działania. Każde zamówienie ma pole `CustomerComment`, w którym klienci mogą zostawiać uwagi lub komentarze na temat swoich zamówień. Analizując komentarze, można zidentyfikować konkretne słowa kluczowe lub znaki, takie jak „!”, „@”, „#”, które mogą wskazywać na pilność lub specjalne prośby.

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:

  * Numer identyfikacyjny zgłoszenia `TicketID`

  * Pierwotny ciąg znaków `CustomerComment`

Skrypt ładowania

```
Example:
Load * inline [
TicketID, CustomerComment
1, I need this order ASAP!
2, Please confirm my order @12345.
3, Can you update my order?
4, I have a question about #discount.
5, Thank you!
];
```

Wyniki

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

* ` TicketID
                                   `

* `CustomerComment`

Utwórz następujące wymiary wyliczane:

* `=FindOneOf(CustomerComment, '!,@,#')`

* `=If(FindOneOf(CustomerComment, '!,@,#')>0,'High Priority','Normal Priority')`

Tabela wynikowa

| TicketID | CustomerComment | FindOneOf(CustomerComment, '!,@,#') | If(FindOneOf(CustomerComment, '!,@,#')&gt;0,'High Priority','Normal Priority') |
| --- | --- | --- | --- |
| 1 | I need this order ASAP! | 23 | Wysoki priorytet |
| 2 | Please confirm my order @12345. | 25 | Wysoki priorytet |
| 3 | Can you update my order? | 0 | Normal Priority |
| 4 | I have a question about #discount. | 25 | Wysoki priorytet |
| 5 | Dziękujemy! | 10 | Wysoki priorytet |

Porównaj dane wyjściowe funkcji `FindOneOf` z oryginalnymi wartościami ciągu `CustomerComment`, które zostały załadowane w skrypcie. Używając wartości `!,@,#`, funkcja pomyślnie zwróciła pozycję, w której te znaki występują w ciągu komentarza. Ostateczna miara wykorzystuje instrukcję warunkową `If` do identyfikacji rekordów, które zawierają dowolny z wyszukiwanych znaków, i przypisuje je jako `High Priority`. Jeśli żaden ze znaków wyszukiwania `!,@,#` nie zostanie znaleziony, na przykład wiersz 3, zgłoszenie zostanie sklasyfikowane jako `Normal Priority`.