# Funzioni di espressione

Utilizza le funzioni per trasformare i valori delle righe, gestire i dati mancanti o recuperare valori correlati durante la creazione di espressioni. Per i dettagli, vedere [Generazione di espressioni](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Transformation/Building-expressions.htm).

Le funzioni seguenti descrivono le espressioni delle attività di movimento nelle attività di trasferimento gestite da SaaS, trasferimento lake e replica. Utilizza la firma della funzione visualizzata nel tuo editor. Le parentesi quadre nelle firme indicano argomenti facoltativi; non inserire le parentesi.

Per le funzioni CDC Storage e Streaming Transform, consultare [Funzioni di trasformazione](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Lakehouse/transformation-functions.htm). Per le espressioni di storage, trasformazione e data mart eseguite su una piattaforma dati cloud, utilizzare la sintassi delle funzioni di tale piattaforma.

## Funzioni di stringa

Le funzioni di prefisso e suffisso agiscono all'inizio o alla fine di una stringa. La sostituzione dei caratteri agisce sui singoli caratteri anziché trovare una corrispondenza con un intero prefisso o suffisso.

Argomenti, comportamento ed esempi delle funzioni stringa

| Funzione | Comportamento e argomenti | Esempio e risultato |
| --- | --- | --- |
| `$CONCAT(X, Y)` | Unisce le due stringhe `X` e `Y`, in questo ordine. Restituisce NULL se uno dei due argomenti è NULL. Nidifica le chiamate per unire più di due stringhe. | `$CONCAT('My', 'Picture')` restituisce `'MyPicture'`. `$CONCAT('My', NULL)` restituisce NULL. |
| `$INSTR(string, substring)` | Restituisce la posizione in base 1 della prima occorrenza di `substring` in `string`. Restituisce 0 se la sottostringa non viene trovata. | `$INSTR('mystring', 'ing')` restituisce `6`. `$INSTR('mystring', 'xyz')` restituisce `0`. |
| `$LENGTH(string)` | Restituisce il numero di caratteri in `string`, non la sua dimensione in byte. | `$LENGTH('mystring')` restituisce `8`. |
| `$LOWER(string)` | Restituisce una copia di `string` con le lettere ASCII convertite in minuscolo. | `$LOWER('ABC')` restituisce `'abc'`. |
| `$LTRIM(string[, characters])` | Rimuove i caratteri dall'inizio di `string`. L'argomento opzionale `characters` è un insieme di caratteri da rimuovere, non un prefisso. Se omesso, rimuove gli spazi. | `$LTRIM('  orders')` restituisce `'orders'`. `$LTRIM('@@orders', '@')` restituisce `'orders'`. |
| `$REMOVE_PREFIX(string, prefix)` | Restituisce una copia di `string` con il `prefix` iniziale specificato rimosso. | `$REMOVE_PREFIX('mystring', 'my')` restituisce `'string'`. |
| `$REMOVE_SUFFIX(string, suffix)` | Restituisce una copia di `string` con il finale specificato `suffix` rimosso. | `$REMOVE_SUFFIX('mystring', 'ing')` restituisce `'mystr'`. |
| `$REPLACE(string, pattern, replacement)` | Sostituisce ogni occorrenza di `pattern` in `string` con `replacement`. Tutti e tre gli argomenti sono obbligatori. Utilizzare una stringa di sostituzione vuota per rimuovere il testo corrispondente. | `$REPLACE('a-b-c', '-', '_')` restituisce `'a_b_c'`. `$REPLACE('a-b', '-', '')` restituisce `'ab'`. |
| `$REPLACE_CHARS(string, chars, replacement)` | Sostituisce ogni carattere elencato in `chars` con il carattere nella stessa posizione in `replacement`. I caratteri non elencati rimangono invariati. Se manca una posizione di sostituzione, viene utilizzato il primo carattere di sostituzione. | `$REPLACE_CHARS('mystring', 's', 'z')` restituisce `'myztring'`. `$REPLACE_CHARS('abcde', 'abcd', '123')` restituisce `'1231e'`. |
| `$REPLACE_PREFIX(string, prefix, replacement)` | Sostituisce `prefix` iniziale in `string` con `replacement` concentrati. | `$REPLACE_PREFIX('mystring', 'my', 'new')` restituisce `'newstring'`. |
| `$REPLACE_SUFFIX(string, suffix, replacement)` | Sostituisce `suffix` finale in `string` con `replacement`, anziché sostituire ogni occorrenza. | `$REPLACE_SUFFIX('mystring', 'ing', 'new')` restituisce `'mystrnew'`. |
| `$RTRIM(string[, characters])` | Rimuove caratteri dalla fine di `string`. L'argomento opzionale `characters` è un insieme di caratteri da rimuovere, non un suffisso. Se omesso, rimuove gli spazi. | `$RTRIM('orders  ')` restituisce `'orders'`. `$RTRIM('orders@@', '@')` restituisce `'orders'`. |
| `$SUBSTR(string, start[, length])` | Estrae testo da `string`, a partire dalla posizione in base 1 `start`. `length` specifica il numero di caratteri. Se omesso, restituisce i caratteri rimanenti. | `$SUBSTR('abcdef', 2, 3)` restituisce `'bcd'`. |
| `$TRIM(string[, characters])` | Rimuove i caratteri da entrambe le estremità di `string`. L'argomento opzionale `characters` è un insieme di caratteri da rimuovere, non una sottostringa. Se omesso, rimuove gli spazi. | `$TRIM('  orders  ')` restituisce `'orders'`. `$TRIM('@#orders#@', '@#')` restituisce `'orders'`. |
| `$UNICODE(string)` | Restituisce il code point Unicode numerico del primo carattere in `string`. L'argomento deve essere una stringa. | `$UNICODE('ABC')` restituisce `65`. |
| `$UPPER(string)` | Restituisce una copia di `string` con le lettere ASCII convertite in maiuscolo. | `$UPPER('abc')` restituisce `'ABC'`. |

## Funzioni numeriche

Utilizzare queste funzioni per calcolare i valori numerici per la riga corrente. `$MAX` e `$MIN` confrontano gli argomenti all'interno della riga, non i valori tra le righe.

Argomenti, comportamento ed esempi delle funzioni numeriche

| Funzione | Comportamento e argomenti | Esempio e risultato |
| --- | --- | --- |
| `$ABS(X)` | Restituisce il valore assoluto dell'argomento numerico `X`. | `$ABS(-20)` restituisce `20`. |
| `$MAX(arg1, arg2, ...)` | Restituisce il valore massimo tra gli argomenti numerici forniti. Fornire almeno due argomenti. | `$MAX(10, 4, 20, 9)` restituisce `20`. |
| `$MIN(arg1, arg2, ...)` | Restituisce il valore più piccolo tra gli argomenti numerici forniti. Fornire almeno due argomenti. | `$MIN(10, 4, 20, 9)` restituisce `4`. |
| `$RANDOM()` | Restituisce un intero con segno pseudocasuale. Non accetta argomenti. | `$RANDOM()` restituisce un intero che può essere negativo, zero o positivo. Il suo valore varia da una chiamata all'altra. |
| `$ROUND(value[, digits])` | Arrotonda `value` a `digits` cifre decimali e restituisce un valore a virgola mobile. Se `digits` viene omesso, arrotonda a zero cifre decimali. | `$ROUND(3.141592, 3)` restituisce `3.142`. |

## Funzioni LOB

Queste funzioni operano con oggetti binari di grandi dimensioni (BLOB). L'argomento size `N` specifica i byte, non i caratteri.

Funzioni per valori binari

| Funzione | Comportamento e argomenti | Esempio e risultato |
| --- | --- | --- |
| `$HEX(blob)` | Restituisce un testo esadecimale maiuscolo che rappresenta i byte di `blob`. L'input numerico viene prima convertito in testo; il risultato non è la rappresentazione macchina del numero. | `$HEX(X'4142')` restituisce `'4142'`. |
| `$RANDOM_BLOB(N)` | Restituisce `N` byte pseudocasuali. Se `N` è minore di 1, restituisce un byte. Non utilizzare questa funzione come garanzia di casualità crittografica. | `$RANDOM_BLOB(4)` restituisce un BLOB di quattro byte. Il suo valore varia da una chiamata all'altra. |
| `$ZERO_BLOB(N)` | Restituisce un BLOB contenente `N` byte pari a zero. | `$HEX($ZERO_BLOB(3))` restituisce `'000000'`. |

## Funzioni di controllo dei valori null

Argomenti, comportamento ed esempi della funzione di controllo null

| Funzione | Comportamento e argomenti | Esempio e risultato |
| --- | --- | --- |
| `$COALESCE(X, Y, ...)` | Restituisce il primo argomento non NULL, nell'ordine degli argomenti. Fornire almeno due argomenti. Se tutti gli argomenti sono NULL, il risultato è NULL. Una stringa vuota non è NULL. | `$COALESCE(NULL, 'Unknown')` restituisce `'Unknown'`. `$COALESCE('', 'Unknown')` restituisce una stringa vuota. |
| `$IFNULL(X, Y)` | Restituisce `X` se non è NULL; in caso contrario, restituisce `Y`. Restituisce NULL se entrambi gli argomenti sono NULL. Fornire esattamente due argomenti. | `$IFNULL(NULL, 'Unknown')` restituisce `'Unknown'`. `$IFNULL('Known', 'Unknown')` restituisce `'Known'`. |
| `$NULLIF(X, Y)` | Restituisce NULL se `X` e `Y` sono uguali; in caso contrario, restituisce `X`. Fornire esattamente due argomenti. | `$NULLIF('Unknown', 'Unknown')` restituisce NULL. `$NULLIF('Known', 'Unknown')` restituisce `'Known'`. |

## Funzioni data e ora

Fornire una stringa di data, ora o data/ora come `'2026-10-08'`, `'12:34:56'` o `'2026-10-08 12:34:56'`. Mantenere le costanti di data tra virgolette in modo che i trattini non vengano interpretati come una sottrazione.

Calcolo e formattazione delle date

| Funzione | Comportamento e argomenti | Esempio e risultato |
| --- | --- | --- |
| `$DATE(date_string)` | Restituisce la data da `date_string` come testo nel formato `YYYY-MM-DD`. | `$DATE('2026-10-08')` restituisce `'2026-10-08'`. |
| `$DATETIME(datetime_string)` | Restituisce la data e l'ora da `datetime_string` come testo nel formato `YYYY-MM-DD HH:MM:SS`." | `$DATETIME('2026-10-08 12:34:56')` restituisce `'2026-10-08 12:34:56'`. |
| `$JULIANDAY(datetime_string)` | Restituisce i giorni frazionari a partire dal mezzogiorno a Greenwich del 24 novembre 4714 a.C. Sottrarre due valori di giorno giuliano per calcolare il numero di giorni trascorsi. | `$JULIANDAY('2000-01-01 12:00:00')` restituisce `2451545.0`. `$JULIANDAY('2026-10-09') - $JULIANDAY('2026-10-08')` restituisce `1.0`. |
| `$STRFTIME(format, datetime_string)` | Restituisce il testo formattato utilizzando `format`. Il formato precede l'input di data o data e ora. | `$STRFTIME('%Y-%m', '2026-10-08')` restituisce `'2026-10'`. |
| `$TIME(time_string)` | Restituisce l'ora da `time_string` come testo nel formato `HH:MM:SS`. | `$TIME('12:34:56')` restituisce `'12:34:56'`. |

### Sostituzioni di formato

Combina le seguenti sostituzioni con separatori letterali in `$STRFTIME`. Ad esempio, `'%Y-%m-%d %H:%M:%S'` formatta sia la data che l'ora. Una sostituzione non supportata restituisce NULL.

Sostituzioni del formato di data e ora

| Sostituzione | Significato |
| --- | --- |
| `%d` | Giorno del mese, 01-31. |
| `%H` | Ora, 00-24. |
| `%f` | Secondi con parte frazionaria, SS.SSS. |
| `%j` | Giorno dell'anno, 001-366. |
| `%J` | Numero del giorno giuliano. |
| `%m` | Mese, 01-12. |
| `%M` | Minuto, 00-59. |
| `%s` | Secondi trascorsi dal 1° gennaio 1970, 00:00:00 UTC. |
| `%S` | Secondi, 00-59. |
| `%w` | Giorno della settimana, 0-6; la domenica è 0. |
| `%W` | Settimana dell'anno, 00-53; le settimane iniziano di lunedì. |
| `%Y` | Anno, 0000-9999. |
| `%%` | Un segno di percentuale letterale. |

## Funzioni di arricchimento dati

Utilizzare una ricerca per aggiungere un valore correlato, ad esempio il nome di un reparto, da una tabella nell'endpoint di origine o di destinazione.

Argomenti, comportamento ed esempi della funzione di arricchimento dati

| Funzione | Comportamento e argomenti | Esempio e risultato |
| --- | --- | --- |
| `$SOURCE_LOOKUP(time_to_live, schema, table, expression, condition, condition_params)` | Recupera il valore di `expression` da `table` dell'endpoint di origine, in `schema`, per il record che corrisponde a `condition`. I parametri della condizione forniscono i valori per i relativi segnaposto in ordine. | `$SOURCE_LOOKUP(60, 'HR', 'DEPARTMENTS', 'DEPARTMENT_NAME', 'DEPARTMENT_ID=:1', $DEPARTMENT_ID)` recupera il nome del dipartimento corrispondente dall'origine. |
| `$TARGET_LOOKUP(time_to_live, schema, table, expression, condition, condition_params)` | Recupera il valore di `expression` da `table` dell'endpoint di destinazione, in `schema`, per il record che corrisponde a `condition`. I parametri della condizione forniscono i valori per i relativi segnaposto in ordine. | `$TARGET_LOOKUP(60, 'dbo', 'DEPARTMENTS', 'DEPARTMENT_NAME', 'DEPARTMENT_ID=?', $DEPARTMENT_ID)` recupera il nome del dipartimento corrispondente dalla destinazione. |

`condition_params` rappresenta un elenco di argomenti separati da virgola, non un singolo argomento array. Entrambe le funzioni utilizzano i seguenti parametri:

Parametri di ricerca e le loro relazioni

| Parametro | Significato |
| --- | --- |
| `time_to_live` | Durata della cache obbligatoria, senza valore predefinito. Specificare la durata della cache in secondi, `'NO_CACHING'` per disabilitare la memorizzazione nella cache, o `'NO_EXPIRATION'` per mantenere i risultati memorizzati nella cache senza scadenza.<br><br>Le durate brevi aggiornano i dati che cambiano frequentemente. Durate più lunghe riducono le query all'endpoint, ma possono restituire valori memorizzati nella cache dopo la modifica dei dati di ricerca. Utilizzare nessuna scadenza solo per i dati che non cambiano. |
| `schema` | Schema contenente la tabella di ricerca, fornito come testo. |
| `table` | Tabella da interrogare all'interno di tale schema, fornita come testo. |
| `expression` | Espressione SQL che seleziona il valore di una colonna, come `'DEPARTMENT_NAME'` o `'PRICE * 1.2'`. Utilizzare il dialetto SQL dell'endpoint a cui si accede, non la sintassi della funzione dell'espressione esterna. |
| `condition` | Condizione SQL che identifica il record di ricerca. Utilizzare il dialetto e la sintassi dei segnaposto dell'endpoint a cui si accede: ad esempio, `:1` e `:2` per Oracle, o `?` per Microsoft SQL Server. |
| `condition_params` | Valori associati ai segnaposto della condizione, in ordine. I parametri di colonna come `$COMPANY_ID` e `$DEPARTMENT_ID` forniscono i valori della riga corrente. |

Indicizza i campi di ricerca per ridurre il costo delle query. Selezionare una condizione che identifichi il record desiderato e impostare il tipo di dati della colonna aggiunta in modo che corrisponda al valore selezionato.

Nota informaticaIl test delle chiamate a `$SOURCE_LOOKUP` e `$TARGET_LOOKUP` non è supportato. Vedere [Test delle espressioni](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Transformation/Building-expressions.htm#Testing).

### Esempio di ricerca del sorgente

Per un'origine Oracle, la seguente espressione recupera `DEPARTMENT_NAME` da `HR.DEPARTMENTS` e memorizza nella cache il risultato per 60 secondi:

```
$SOURCE_LOOKUP(60, 'HR', 'DEPARTMENTS', 'DEPARTMENT_NAME', 'DEPARTMENT_ID=:1', $DEPARTMENT_ID)
```

Se la riga corrente ha `DEPARTMENT_ID` 10 e il record di ricerca corrispondente contiene `'Sales'`, il risultato è `'Sales'`.

Per un'origine Microsoft SQL Server, utilizzare la relativa sintassi per i segnaposto di condizione. Questo esempio associa i valori di azienda e reparto in questo ordine:

```
$SOURCE_LOOKUP(60, 'dbo', 'DEPARTMENTS', 'DEPARTMENT_NAME', 'COMPANY_ID=? AND DEPARTMENT_ID=?', $COMPANY_ID, $DEPARTMENT_ID)
```

### Esempio di ricerca del target

Per una destinazione Microsoft SQL Server, interrogare la tabella di destinazione utilizzando il relativo dialetto SQL:

```
$TARGET_LOOKUP(60, 'dbo', 'DEPARTMENTS', 'DEPARTMENT_NAME', 'DEPARTMENT_ID=?', $DEPARTMENT_ID)
```

Se il record di ricerca di destinazione per il reparto 10 contiene `'Sales'`, il risultato per un valore di input pari a 10 è `'Sales'`.

## Funzioni di operazione

Argomenti, comportamento ed esempi della funzione di operazione

| Funzione | Comportamento e argomenti | Esempio e risultato |
| --- | --- | --- |
| `$OPERATION_INDICATOR(value_on_delete, value_on_update, value_on_insert)` | Restituisce il flag specificato per ciascuna operazione di origine. L'ordine degli argomenti è delete, update, quindi insert. Utilizzare una colonna dedicata per memorizzare i flag e fornire valori di flag corrispondenti al relativo tipo di dati. | `$OPERATION_INDICATOR('Deleted', 'Updated', 'Inserted')` restituisce `'Updated'` per un aggiornamento. |

In Qlik Replicate, questa funzione modifica anche la gestione delle eliminazioni: mantiene il record di destinazione corrispondente e lo contrassegna con `value_on_delete`. Questo comportamento di gestione delle eliminazioni richiede una conferma per Qlik Talend Cloud Data Integration.

## Funzioni logiche

Selezione condizionale del valore

| Funzione | Comportamento e argomenti | Esempio e risultato |
| --- | --- | --- |
| `$IFF(boolean_expression, true_value, false_value)` | Restituisce `true_value` se `boolean_expression` ha valore true; in caso contrario, restituisce `false_value`. Fornire prima la condizione, seguita dai due valori di risultato. | `$IFF(10 > 5, 'High', 'Low')` restituisce `'High'`. `$IFF(3 > 5, 'High', 'Low')` restituisce `'Low'`. |

## Altre funzioni

Pattern matching e tipi valore

| Funzione | Comportamento e argomenti | Esempio e risultato |
| --- | --- | --- |
| `$LIKE(pattern, string[, escape_character])` | Restituisce 1 in caso di corrispondenza o 0 in assenza di corrispondenza; un input NULL produce NULL. `%` corrisponde a zero o più caratteri; `_` corrisponde a uno. Per impostazione predefinita, la corrispondenza ignora la distinzione tra maiuscole e minuscole ASCII. L'escape opzionale è di un solo carattere. Il pattern viene prima, a differenza dell'operatore `LIKE`. | `$LIKE('A%', 'Alice')` restituisce `1`. `$LIKE('10!%', '10%', '!')` restituisce `1`. |
| `$TYPEOF(expression)` | Restituisce la classe di memorizzazione del valore: `'null'`, `'integer'`, `'real'`, `'text'` o `'blob'`. Questo non è il tipo di colonna di output configurato. | `$TYPEOF(12.5)` restituisce `'real'`. |

## Funzioni hash

Argomenti, comportamento ed esempi della funzione hash

| Funzione | Comportamento e argomenti | Esempio e risultato |
| --- | --- | --- |
| `$SHA256(string)` | Restituisce l'hash SHA-256 esadecimale della stringa di input. | `$SHA256('abc')` restituisce `ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad`. |

Un hash non è crittografia. I valori di input prevedibili possono comunque essere identificati confrontando i loro hash.