The strrep function repeats a string a specified number of times with an optional delimiter. Use this function to generate test data, create patterns for matching, or build formatted strings with repeated elements.

For users of other query languages

If you come from other query languages, this section explains how to adjust your existing queries to achieve the same results in APL.

In Splunk SPL, repeating strings typically requires custom functions or loops. APL's strrep provides this functionality natively.

```sql Splunk example | eval repeated=mvjoin(mvappend("text","text","text"), "") ```
['sample-http-logs']
| extend repeated = strrep('text', 3)

In ANSI SQL, you use REPEAT or REPLICATE depending on the database. APL's strrep provides standardized string repetition.

```sql SQL example SELECT REPEAT('text', 3) AS repeated FROM logs; ```
['sample-http-logs']
| extend repeated = strrep('text', 3)

Usage

Syntax

strrep(value, multiplier, delimiter)

Parameters

Name Type Required Description
value string Yes The string to repeat.
multiplier int Yes Number of repetitions (1 to 1024). Values over 1024 are capped at 1024.
delimiter string No Optional delimiter between repetitions (default: empty string).

Returns

Returns the string repeated the specified number of times with optional delimiters between repetitions.

Use case examples

Create visual separators or formatting patterns for log output visualization.

Query

['sample-http-logs']
| extend separator = strrep('=', 50)
| extend formatted_log = strcat(separator, '\n', method, ' ', uri, ' ', status, '\n', separator)
| project _time, formatted_log
| limit 5

Run in Playground

Output

_time formatted_log
2024-11-06T10:00:00Z ================================================== GET /api/users 200 ==================================================

This query creates visual separators using repeated equal signs, making log output more readable and organized.

Generate indentation patterns based on trace depth for hierarchical visualization.

Query

['otel-demo-traces']
| extend simulated_depth = 3
| extend indentation = strrep('  ', simulated_depth)
| extend formatted_span = strcat(indentation, ['service.name'], ': ', kind)
| project _time, formatted_span, trace_id
| limit 10

Run in Playground

Output

_time formatted_span trace_id
2024-11-06T10:00:00Z       frontend: server abc123
2024-11-06T10:01:00Z       checkout: client def456

This query creates hierarchical indentation for trace visualization by repeating spaces based on simulated span depth.

Generate test patterns for attack signature detection or create anonymization masks.

Query

['sample-http-logs']
| extend id_length = strlen(id)
| extend anonymized_id = strcat(substring(id, 0, 3), strrep('*', id_length - 6), substring(id, id_length - 3, 3))
| project _time, id, anonymized_id, status, uri
| limit 10

Run in Playground

Output

_time id anonymized_id status uri
2024-11-06T10:00:00Z user123456 use****456 403 /admin
2024-11-06T10:01:00Z admin12345 adm***345 401 /api

This query creates anonymized user IDs by replacing middle characters with repeated asterisks, maintaining partial visibility for analysis while protecting privacy.

  • strcat: Concatenates strings. Use this with strrep to build complex repeated patterns.
  • strcat_delim: Concatenates strings with delimiters. Use strrep's delimiter parameter as an alternative for repeated patterns.
  • strlen: Returns string length. Use this to calculate how many repetitions you need.
  • substring: Extracts parts of strings. Use this with strrep for complex pattern building.

Good morning

I'm here to help you with the docs.

I
AIBased on your context