SubStringCount - script- en diagramfunctie
SubstringCount() retourneert het aantal keren dat de opgegeven subtekenreeks voorkomt in de tekst van de invoertekenreeks. Als er geen overeenkomst wordt gevonden, wordt 0 geretourneerd.
Syntaxis:
SubStringCount(text, sub_string)
Retourgegevenstypen: geheel getal
Argument | Beschrijving |
---|---|
text | De oorspronkelijke tekenreeks. |
sub_string | Een tekenreeks die een of meer keren in de invoerreeks text mag voorkomen. |
Voorbeeld | Resultaat |
---|---|
SubStringCount( 'abcdefgcdxyz', 'cd' ) | Retourneert 2 |
SubStringCount( 'abcdefgcdxyz', 'dc' ) | Retourneert 0 |
Voorbeeld - Basisprincipes voor SubStringCount
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
-
Een gegevensverzameling die wordt geladen in een tabel met de naam Example.
-
Eén veld in de gegevenstabel met de naam FruitSentence.
Load-script
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!"
];
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg dit veld toe als dimensie:
-
FruitSentence
Maak een nieuwe tabel en voeg de volgende berekende dimensie toe:
-
=SubStringCount(FruitSentence, 'apple') om uit te rekenen hoe vaak het woord apple voorkomt in FruitSentence.
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 |
De tabel wordt gesorteerd op de dimensie FruitSentence in oplopende volgorde. De functie SubStringCount retourneert het aantal keren dat het woord apple in elke zin voorkomt. De eerste zin retourneert bijvoorbeeld 2, omdat het woord twee keer voorkomt in de zin. In de tweede en vierde zin negeert de functie het woord Apple omdat het niet overeenkomt met de hoofdletter van de zoekterm apple.
De volgende code laat zien hoe u de functie in een load-script kunt gebruiken. Dit voorbeeld bevat een voorafgaande lading die de functie SubStringCount met de functie Upper gebruikt om de hele tekenreeks naar hoofdletters te converteren, en vervolgens naar het woord APPLE zoekt.
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!"
];
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 |
Voorbeeld 5 – Scenario met SubStringCount
Overzicht
Een gegevensverzameling van fruitproducten bevat een veld met productbeschrijvingen. Dit voorbeeld berekent het aantal keren dat de volgende fruitnamen in elke beschrijving voorkomen: apple, banana of orange.
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
-
Een gegevensverzameling die wordt geladen in een tabel met de naam Example.
-
Eén veld in de gegevenstabel met de naam ProductDescription.
Load-script
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."
];
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg dit veld toe als dimensie:
-
ProductDescription
Maak de volgende berekende dimensies:
-
=SubStringCount(ProductDescription, 'apple') om het aantal exemplaren van het woord apple in de tekenreeks ProductDescription te berekenen.
-
=SubStringCount(ProductDescription, 'banana') om het aantal exemplaren van het woord banana in de tekenreeks ProductDescription te berekenen.
-
=SubStringCount(ProductDescription, 'orange') om het aantal exemplaren van het woord orange in de tekenreeks ProductDescription te berekenen.
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 |
De uitvoer van de functie SubStringCount geeft met succes het aantal keren dat elke subtekenreeks (apple, banana, orange) voorkomt in de productomschrijving. In de eerste beschrijving retourneert de functie bijvoorbeeld 2 terug omdat er twee exemplaren van het woord orange zijn. Het argument sub_string is hoofdlettergevoelig, dus in de tweede beschrijving telt de functie het woord Banana niet omdat het niet overeenkomt met de subtekenreeks banana in de metinguitdrukking.
Voorbeeld 5 – Scenario met SubStringCount voor het parseren van geneste gegevens
Overzicht
Een gegevensverzameling van IT-records bevat een lijst met id-nummers en categorieën van wijzigingen. In de gegevenstabel wordt het veld Categories afgeleid van een hiërarchie op meerdere niveaus die de hoogste bovenliggende categorie vermeldt, gevolgd door alle subcategorieën, bijvoorbeeld Software > Program > Patch. Dit scenario laat zien hoe u de laatste waarde, of bladwaarde, uit deze onregelmatige categoriehiërarchie kunt halen met behulp van een combinatie van de functies SubStringCount en SubField.
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
-
Een gegevensverzameling die wordt geladen in een tabel met de naam Example.
-
De volgende velden in de gegevenstabel:
-
ChangeID bevat de originele wijzigings-id die verwerkt moet worden.
-
Categories bevat een lijst met wijzigingscategorieën. De categorieën worden gescheiden door puntkomma's en in hiërarchische volgorde van links naar rechts vermeld, beginnend bij de bovenste bovenliggende categorie tot de meest gedetailleerde subcategorie.
-
Load-script
Example:
Load * inline [
ChangeID,Categories
CHG00100,Software;Program;Patch
CHG00101,Hardware;Server
CHG00102,Hardware;Network;Router
];
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
-
ChangeID
-
Categories
Maak de volgende berekende dimensies:
-
=SubStringCount(Categories,';')+1 om het aantal categorieniveaus in de wijzigingshiërarchie te berekenen.
-
=SubField(Categories, ';' ,SubStringCount(Categories,';')+1) om de meest rechtse categorie uit de wijzigingshiërarchie te extraheren.
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 |
In dit voorbeeld is de SubStringCount functie in de SubField functie genest. De eerste berekende dimensie, SubStringCount(), berekent het aantal geneste waarden in het veld Categories. Dit wordt bepaald door het aantal puntkomma's ';' te tellen en 1 bij het resultaat op te tellen. Deze uitvoer wordt dan geïnjecteerd als de derde parameter van de functie SubField om de meest rechtse categorie te extraheren die genest is in het veld Categories.
Bekijk bijvoorbeeld de resultaten voor de vermelding ChangeID CHG00100 . In de eerste berekende dimensie is SubStringCount 2. De uitdrukking voegt vervolgens 1 toe aan dat resultaat om te bepalen dat het veld Categories drie geneste categoriewaarden heeft, Software, Program, en Patch. De functie SubField gebruikt dit resultaat vervolgens in de tweede berekende dimensie om de derde categorie, Patch, te extraheren.