Uso degli operatori di flusso dati
In Data Integration, gli operatori del flusso di dati rappresentano le origini di input, le destinazioni di output e le trasformazioni che possono essere utilizzate in un flusso di dati.
Nel pannello Operatori trascinare gli operatori sull'area di creazione per progettare un flusso di dati. Utilizzare quindi la scheda Details del pannello Properties per configurare le proprietà di base e necessarie per ciascun operatore. Se applicabile, utilizzare la scheda Opzioni avanzate per specificare altre proprietà.
In generale, un operatore di flusso dati può disporre di una o più porte in entrata e di una o più porte in uscita per il flusso dei dati. Ad esempio, è possibile connettere la stessa porta di origine in uscita alle porte in entrata in un filtro, un join e un operatore di destinazione. È inoltre possibile connettere un altro operatore di origine alla stessa porta di entrata di join.
Per essere valido, un flusso dati deve includere almeno un operatore di origine e un operatore di destinazione. Sebbene Data Integration supporti più operatori di destinazione in un flusso di dati, un operatore di destinazione può avere una sola porta in entrata.
Per collegare gli operatori, passare il puntatore del mouse su un operatore fino a visualizzare il connettore (piccolo cerchio) sul lato destro dell'operatore. Trascinare quindi il connettore sull'operatore successivo a cui si desidera connettersi. Una connessione è valida quando una linea connette gli operatori dopo l'eliminazione del connettore.
Una linea di connessione simboleggia il flusso di dati da un nodo all'altro. Sebbene sia possibile trascinare un connettore visibile da un oggetto a un altro, non è possibile avere più di una riga di connessione in entrata in un filtro, espressione, aggregazione, distinto, ordinamento e operatore di destinazione.
Per i tipi di dati complessi, fare riferimento alla sezione Tipi di dati gerarchici per informazioni sugli elementi supportati. È possibile che non sia possibile eseguire alcune configurazioni nella scheda Attributi e nella scheda Dati del pannello Proprietà.
Operatori dati
Data Integration fornisce l'operatore di origine e l'operatore di destinazione per l'aggiunta di entità dati di input e output da utilizzare come input per i flussi di dati e l'output per i dati trasformati.
Per configurare l'entità dati di input o di output per un operatore dati in un flusso di dati, iniziare selezionando un asset dati, una connessione e uno schema (o un bucket).
Per effettuare le selezioni solo nell'ordine visualizzato nella scheda Dettagli del pannello Proprietà, fare clic su Seleziona quando l'opzione è abilitata accanto al tipo di risorsa.
Ad esempio, quando si aggiunge per la prima volta un operatore di origine, per la selezione viene abilitato solo l'asset dati. L'opzione di selezione per il tipo di risorsa successivo, Connessione, viene abilitata solo dopo aver effettuato una selezione per l'oggetto precedente.
Quando si fa clic su Seleziona accanto a una risorsa, viene visualizzato un pannello che consente di selezionare l'oggetto desiderato. È possibile utilizzare il menu delle risorse per selezionare l'oggetto oppure fare clic su Visualizza tutto per utilizzare un altro pannello per sfogliare o cercare, quindi selezionare l'oggetto.
Quando si seleziona un oggetto risorsa, ogni selezione successiva si basa sulla relazione padre-figlio ereditata dalla selezione precedente. Un indicatore di percorso nella parte superiore del pannello di selezione mostra la gerarchia di selezione. Si supponga, ad esempio, di aver selezionato l'asset dati "Oracle Database Data Asset 1" e la connessione "Connessione predefinita". Quando si seleziona lo schema, l'indicatore di percorso viene visualizzato come "Dai dati di Oracle Database asset1 utilizzando la connessione predefinita".
Dopo aver selezionato un asset dati, una connessione e uno schema (o un bucket), selezionare un'entità dati dalla lista delle entità dati disponibili.
In generale, nel pannello Sfoglia entità dati è possibile effettuare le operazioni riportate di seguito.
-
Sfogliare le entità dati disponibili e selezionare un'entità in base al nome.
-
Filtrare l'elenco disponibile da cercare e quindi selezionare. Nel campo di ricerca immettere un nome di entità parziale o completo e premere Invio per avviare la ricerca. La ricerca distingue tra maiuscole e minuscole. Ad esempio, se le entità dati disponibili includono
BANK_US
eBANK_EU
, immettereBANK
, quindi effettuare la selezione dalla lista filtrata. -
Utilizzare uno o più parametri nella stringa di ricerca. Ad esempio:
CUSTOMERS_${COUNTRY}
Per utilizzare un nome di entità dati con parametri per selezionare la risorsa di input o di output, vedere Utilizzo dei parametri nei nomi delle entità dati.
A seconda del tipo di asset dati di una risorsa, dopo aver selezionato un'entità dati, potrebbe essere necessario eseguire ulteriori operazioni di configurazione nella scheda Dettagli o nella scheda Opzioni avanzate del pannello Proprietà.
Per evitare che un oggetto risorsa, ad esempio un asset dati o una connessione in un flusso di dati, venga associato in modo permanente a una risorsa specifica, è necessario assegnare un parametro a tale oggetto.
È possibile assegnare il parametro dopo o prima di selezionare l'oggetto risorsa.
-
Nel flusso di dati aggiungere l'operatore di origine o di destinazione. Dopo aver selezionato un tipo di risorsa, fare clic su Assegna parametro accanto al nome della risorsa per utilizzare un altro pannello per selezionare e assegnare un parametro per l'oggetto selezionato. Se non è disponibile un tipo di parametro appropriato, è possibile aggiungere un parametro e assegnarlo.
Nota
Il parametro Assegna non è disponibile per un'entità dati il cui nome include un parametro (ad esempioBANK_${REGION}
). Impossibile associare una risorsa entità con parametri a un altro parametro. -
In alternativa, aggiungere l'operatore di origine o di destinazione, quindi fare clic su Assegna parametro per utilizzare un pannello per assegnare un parametro e selezionare contemporaneamente la risorsa per l'oggetto. Nel pannello Aggiungi parametro è possibile selezionare una risorsa in base alla relazione padre-figlio ereditata dalla selezione precedente. L'indicatore di percorso nella parte superiore del pannello mostra la gerarchia di selezione.
Vedere anche Utilizzo dei parametri di flusso dati.
È possibile includere uno o più parametri del flusso dati nel nome della risorsa entità dati specificata per un operatore dati.
La sintassi da utilizzare per un parametro del flusso dati in un nome di entità dati è ${PARAMETER_NAME}
. Ad esempio: CUSTOMERS_${COUNTRY}
Il nome di un parametro fa distinzione tra maiuscole e minuscole e ogni parametro deve avere un valore predefinito.
Ad esempio, CUSTOMERS_${COUNTRY}
potrebbe restituire la tabella di database CUSTOMERS_USA
e BANK_${COUNTRY}/*
potrebbe restituire i file di storage degli oggetti in BANK_EU
.
Per utilizzare i parametri nei nomi delle entità dati quando si configura un operatore dati, è possibile effettuare le operazioni riportate di seguito.
- Aggiungere il parametro al flusso dati prima di aggiungere l'operatore dati
- Aggiungere il parametro al momento della configurazione dell'entità dati dell'operatore
Come aggiungere un parametro
In un flusso di dati, selezionare Parametri dal menu Visualizza nella barra degli strumenti dello sfondo per aprire il pannello Parametri.
Nel pannello Parametri fare clic su Config, quindi su Aggiungi.
Nel pannello Aggiungi parametro, configurare un parametro del tipo di dati appropriato, ad esempio VARCHAR o NUMERIC, quindi aggiungere un valore predefinito.
Durante la configurazione dell'entità dati in un flusso di dati, è possibile cercare le entità dati disponibili immettendo il nome del parametro nel pannello Sfoglia entità dati. Nel campo di ricerca, iniziare a digitare ${
seguito da qualsiasi carattere. Se la parte anteriore del nome del parametro corrisponde ai parametri esistenti nel flusso di dati, viene visualizzato un elenco di nomi suggeriti. Per selezionare un parametro dall'elenco, fare clic sul nome del parametro, completare la sintassi aggiungendo }
, quindi premere Invio.
Come aggiungere un parametro al momento della configurazione dell'entità dati
Nel pannello Sfoglia entità dati è possibile effettuare le operazioni riportate di seguito.
-
Nel menu Altre azioni, selezionare Aggiungi parametro flusso dati per utilizzare il pannello Aggiungi parametro flusso dati. Specificare il tipo di dati, il valore predefinito e altre proprietà per il parametro che si desidera aggiungere e utilizzare.
-
Nel campo di ricerca, iniziare a digitare
${
seguito da qualsiasi carattere. Se la parte anteriore del nome del parametro corrisponde ai parametri esistenti nel flusso di dati, viene visualizzato un elenco di nomi suggeriti. Per selezionare un parametro dall'elenco, fare clic sul nome del parametro, completare la sintassi aggiungendo}
, quindi premere Invio. -
Nel campo di ricerca, immettere il nome del parametro, ad esempio
${PARAMETER_NAME}
). Se il nome del parametro non esiste ancora nel flusso di dati e si fa clic su Invio, Integrazione dati visualizza il pannello Aggiungi parametro flusso di dati. In alternativa, dopo aver immesso il nome del parametro, selezionare Aggiungi parametro del flusso dati dal menu Altre azioni.Nel pannello Aggiungi parametro flusso dati specificare il tipo di dati, il valore predefinito e altre proprietà per il parametro che si desidera aggiungere e utilizzare.
Operatore di origine
Utilizzare l'operatore di origine per specificare le entità dati che fungono da input per il flusso di dati.
È possibile aggiungere più operatori di origine in un flusso di dati.
Se si utilizza un'entità dati gerarchica per un operatore di origine, fare riferimento alla sezione Tipi di dati gerarchici per informazioni sugli elementi supportati. È possibile che non sia possibile eseguire alcune configurazioni nella scheda Attributi o Dati nel pannello Proprietà.
Quando si configura lo storage degli oggetti OCI come origine dati, è possibile utilizzare un'espressione regolare per specificare un pattern di file per la selezione di una o più entità dati.
Un pattern di file è una regola che consente di trovare i file corrispondenti a una directory e a un nome di file e di gestire i file corrispondenti quando vengono trovati.
Sintassi da utilizzare
Data Integration supporta la sintassi del pattern glob per specificare un pattern di file.
- Un asterisco,
*
, corrisponde a un numero qualsiasi di caratteri (incluso nessuno). - Due asterischi,
**
, funzionano come*
, ma superano i limiti delle directory per trovare percorsi completi. - Un punto interrogativo,
?
, corrisponde esattamente a un carattere. - Le parentesi graffe specificano una raccolta di pattern secondari. Ad esempio:
{sun,moon,stars}
corrisponde a "sole", "luna" o "stelle".{temp*,tmp*}
corrisponde a tutte le stringhe che iniziano con "temp" o "tmp".
- Le parentesi quadre trasmettono un set di singoli caratteri oppure, quando si utilizza il carattere trattino (
-
), un intervallo di caratteri. Ad esempio:[aeiou]
corrisponde a qualsiasi vocale minuscola.[0-9]
corrisponde a qualsiasi cifra.[A-Z]
corrisponde a qualsiasi lettera maiuscola.[a-z,A-Z]
corrisponde a qualsiasi lettera maiuscola o minuscola.
All'interno delle parentesi quadre,
*
,?
e\
corrispondono. - Tutti gli altri personaggi corrispondono a se stessi.
- Per trovare la corrispondenza tra
*
,?
o gli altri caratteri speciali, è possibile utilizzare il carattere barra rovesciata\
. Ad esempio:\\
corrisponde a una singola barra rovesciata e\?
corrisponde al punto interrogativo.
Esempi
*.html | Corrisponde a tutte le stringhe che terminano in .html |
??? | Corrisponde a tutte le stringhe con esattamente tre lettere o cifre |
*[0-9]* | Corrisponde a tutte le stringhe contenenti un valore numerico |
*.{htm,html,pdf} | Corrisponde a qualsiasi stringa che termina con .htm , .html o .pdf |
a?*.java | Corrisponde a qualsiasi stringa che inizia con a , seguita da almeno una lettera o una cifra e termina con .java |
{foo*,*[0-9]*} | Corrisponde a qualsiasi stringa che inizia con foo o qualsiasi stringa contenente un valore numerico |
directory1/20200209/part-*[0-9]*json | Corrisponde a tutti i file nella cartella in cui il nome del file inizia con part- e ha un numero qualsiasi di numeri 0-9 e termina con json |
directory3/**.csv | Corrisponde a tutti i file con estensione csv che si trovano nella cartella directory3 e nelle relative sottocartelle |
directory3/*.csv | Corrisponde a tutti i file con estensione csv che si trovano solo nella cartella principale directory3 . I file nelle cartelle secondarie non sono inclusi. |
È possibile eseguire il test dell'espressione per assicurarsi che il pattern che si desidera utilizzare recupera i file di storage degli oggetti per una o più entità dati.
-
Nel pannello Seleziona entità dati fare clic su Sfoglia per pattern.
-
Nel pannello Sfoglia entità dati per pattern, selezionare Test pattern dal menu Altre azioni.
-
Nel pannello Pattern di test, nel campo Pattern di ricerca, immettere un'espressione di pattern da sottoporre a test prima di utilizzarla.
Ad esempio, immettere
department1/2020/*.json
per trovare tutti i file con estensione.json
che si trovano nella directorydepartment1/2020
. È possibile utilizzare la sintassi dei parametri${}
nel campo Pattern di ricerca. -
Per eseguire il test del pattern di ricerca, nel blocco Test dei nomi file fornire uno o più nomi file delimitati da una nuova riga. Ad esempio, per il pattern
BANK_C*/*
, i nomi dei file potrebbero essere:BANK_CITY/part-00002-0aaf87d57fbc-c000.csv BANK_COUNTRY/part-00000-a66df3ab02fd-c000.csv
-
Fare clic su Test pattern.
Verificare che i nomi dei file di test vengano restituiti nel blocco Nome file risultante.
-
Fare clic su Usa pattern per aggiungere l'espressione di pattern al pannello Sfoglia entità dati per pattern.
Viene nuovamente visualizzato il pannello Sfoglia entità dati per pattern. Nella tabella vengono visualizzati i file che corrispondono all'espressione del pattern.
-
Fare clic su Seleziona pattern.
Viene nuovamente visualizzato il pannello Seleziona entità dati. L'espressione del pattern viene visualizzata accanto a Entità dati.
Quando si utilizza un'espressione di pattern, si presume che tutti i file esistenti che corrispondono al pattern abbiano la stessa struttura. I file corrispondenti vengono trattati come una singola entità nel flusso di dati. Vengono elaborati anche eventuali nuovi file futuri che corrispondono al pattern.
Il caricamento incrementale sta caricando solo i dati nuovi o aggiornati da un'origine in una destinazione. In Data Integration, quando si configura BICC Oracle Fusion Applications come dati di origine, è possibile utilizzare la strategia di estrazione incrementale Gestita per eseguire il caricamento incrementale.
Quando si sceglie di utilizzare la strategia di estrazione incrementale, vengono estratti solo i record nuovi o aggiornati dell'origine in base a una data dell'ultima estrazione. In Data Integration sono disponibili due opzioni per la data dell'ultima estrazione:
-
Personalizzato: si fornisce una data dell'ultima estrazione per ogni esecuzione task.
-
Gestito: Data Integration gestisce automaticamente la data tracciando l'indicatore orario di esecuzione del task e memorizzando l'ultima data di caricamento riuscita come filigrana in esecuzioni consecutive.
Con l'opzione Data ultima estrazione gestita da Integrazione dati, non è necessario specificare in modo esplicito una data per l'esecuzione di un task. È tuttavia possibile eseguire l'override della data in runtime.
Esecuzioni task avviate da una pianificazione task
Integrazione dati tiene traccia di un'esecuzione di task indipendentemente da un'esecuzione di task avviata da una pianificazione di task. Pertanto, se si utilizza l'opzione Data ultima estrazione Gestita e si imposta anche una pianificazione task, Data Integration tiene automaticamente traccia dell'indicatore orario dell'ultima esecuzione task riuscita delle esecuzioni pianificate task separatamente dall'indicatore orario dell'ultima esecuzione task riuscita delle esecuzioni task non avviate da una pianificazione task. Ciò significa che l'ultima data gestita all'interno di una pianificazione task o l'ultima data gestita all'interno di un task non viene modificata dall'altra operazione di esecuzione.
Caricamento incrementale per entità dati diverse in un flusso dati
Si supponga di voler impostare il caricamento incrementale su entità dati diverse in un flusso di dati. È possibile ottenere questo risultato utilizzando i parametri e creando una pianificazione task per ogni entità dati. I passaggi generali sono:
- Nel flusso di dati, assegnare i parametri per lo schema di origine (offerta BICC) e l'entità dati (oggetto vista BICC).
- Crea e pubblica un task di integrazione per il flusso di dati con parametri.
- Creare una pianificazione task per il task di integrazione. Nella pagina Configura parametri specificare i valori dello schema e dell'entità dati per la pianificazione del task.
- Creare un'altra pianificazione task per lo stesso task di integrazione. Nella pagina Configura parametri impostare i valori dello schema e dell'entità dati per la pianificazione del task.
Caricamento incrementale più volte in un giorno
Per eseguire un caricamento incrementale più di una volta al giorno, aggiungere un operatore di filtro immediatamente dopo l'operatore di origine BICC nel flusso di dati. Creare quindi un'espressione di condizione per filtrare i dati già elaborati. Ad esempio, se la colonna last_update_date dell'oggetto vista BICC è LastUpdateDateField
, l'espressione potrebbe essere la seguente:
FILTER_1.MYSOURCE_1.LastUpdateDateField > ${SYS.LAST_LOAD_DATE}
Operatore di destinazione
Utilizzare l'operatore di destinazione per specificare le entità dati che fungono da output per la memorizzazione dei dati trasformati.
È possibile aggiungere più operatori di destinazione a un flusso di dati. Ogni destinazione può avere una sola porta in entrata.
Se si utilizza un'entità dati gerarchica per un operatore di destinazione, fare riferimento alla sezione Tipi di dati gerarchici per informazioni sulle funzionalità supportate. È possibile che alcune configurazioni non siano disponibili nelle schede Attributi, Mappa e Dati del pannello Proprietà.
Nella scheda Dati vengono visualizzati i dati trasformati in base agli operatori applicati nel flusso di dati.
Se si utilizza un'entità dati gerarchica per un operatore di destinazione, fare riferimento alla sezione Tipi di dati gerarchici per informazioni sulle funzionalità supportate.
È possibile filtrare i dati nell'entità di destinazione in base a un pattern di nomi o a un tipo di dati. Per filtrare i dati in base a un pattern di nomi, immettere un pattern di espressioni regolari o caratteri jolly semplici ? e * nel campo Filtra per pattern. Per filtrare i dati in base a un tipo, selezionare il tipo di dati dal menu accanto al campo del pattern.
Impossibile applicare le trasformazioni all'operatore di destinazione perché i dati sono di sola lettura.
La scheda Mappa è disponibile solo per un operatore di destinazione.
Se si utilizza un'entità dati gerarchica per un operatore di destinazione, fare riferimento alla sezione Tipi di dati gerarchici per informazioni sulle funzionalità supportate.
Quando si crea una nuova entità dati di destinazione, la scheda Mappa non è disponibile. Gli attributi in entrata vengono utilizzati per creare la struttura di tabella o file con un mapping da 1 a 1.
Quando si utilizza un'entità dati di destinazione esistente, mappare gli attributi in entrata agli attributi dell'entità dati di destinazione. Di seguito sono riportate le azioni che è possibile eseguire.
Mappa gli attributi in entrata agli attributi dell'entità di destinazione in base alla loro posizione negli elenchi.
Nel menu Azioni selezionare Mapping automatico per posizione. Viene aggiunta la regola Mappa automatica per posizione.
Mappa gli attributi in entrata agli attributi di destinazione con lo stesso nome.
Nel menu Azioni selezionare Mapping automatico per nome. Viene aggiunta la regola Mappa automatica per nome.
Mappa gli attributi in entrata agli attributi di destinazione in base a regole regex semplici e definite dall'utente.
Nel menu Azioni selezionare Mappa per pattern. Immettere un pattern di origine e un pattern di destinazione. Fare quindi clic sul mapping Anteprima per eseguire il test dei pattern di origine e destinazione.
Per definire un motivo, è possibile utilizzare i simboli asterisco (*) e punto interrogativo (?) Utilizzare un asterisco per indicare un carattere jolly di un numero qualsiasi di caratteri in un pattern stringa. Utilizzare un punto interrogativo per indicare un singolo carattere jolly. Ad esempio, *INPUT?
mappa qualsiasi attributo corrispondente che inizi con il numero di caratteri n che contiene la stringa INPUT
seguita da un singolo carattere, ad esempio NEWINPUTS
.
Per impostazione predefinita, la corrispondenza dei pattern non fa distinzione tra maiuscole e minuscole. Ad esempio, il pattern di origine *Name
corrisponde al nome di destinazione CUSTOMER_NAME
e Customer_Name
.
Per indicare gruppi di acquisizione diversi, utilizzare $n
. Si supponga, ad esempio, di voler mappare LAST_NAME
, FIRST_NAME
e USERNAME
da un operatore di origine o a monte a TGT_LAST_NAME
, TGT_FIRST_NAME
e TGT_USERNAME
nell'entità dati di destinazione. È possibile immettere *NAME
nel campo Modello di origine e TGT_$1
nel campo Modello di destinazione. L'asterisco (*) in *NAME
indica che la stringa di caratteri precedente a NAME
deve essere identica alla stringa di caratteri trovata in $1
del pattern di destinazione. $1
si riferisce al primo gruppo di acquisizione nel pattern di origine, che in questo caso è l'asterisco (*).
Se è necessaria una corrispondenza di pattern con distinzione tra maiuscole e minuscole, aggiungere il prefisso (?c)
al pattern di origine. Si supponga, ad esempio, di voler mappare l'attributo di origine CustomerName
, che utilizza il carattere di lettere maiuscole e minuscole del cammello nel nome, all'attributo di destinazione con il nome Customer_Name
. È possibile immettere (?c)([A-Z][a-z]+)([A-Z][a-z]+)
come pattern di origine e $1_$2
come pattern di destinazione. Quando il prefisso (?c)
viene aggiunto all'inizio di un pattern di origine, per il mapping viene attivata la corrispondenza del pattern con distinzione tra maiuscole e minuscole. Data Integration rileva che la "N" in CustomerName
è l'inizio di un nuovo pattern e tratta quindi ([A-Z][a-z]+)([A-Z][a-z]+)
come due parole diverse (gruppi di acquisizione) durante la corrispondenza.
Trascinare un attributo in entrata dalla lista di origine in un attributo della lista di destinazione per creare un mapping.
In alternativa, è possibile selezionare Mappa manuale dal menu Azioni. Utilizzare quindi la finestra di dialogo Mappa attributo per creare un mapping selezionando un attributo di origine e un attributo di destinazione.
Rimuove il mapping selezionato.
Selezionare Visualizza regole. Nel pannello Regole, selezionare una o più regole e fare clic su Rimuovi. In alternativa, è possibile selezionare Rimuovi dal menu Azioni della regola () per cancellare la regola.
Rimuove tutti i mapping.
Nel menu Azioni selezionare Reimposta mapping. Tutte le regole di mapping manuale e automatico vengono rimosse.
Operatori di modellazione
Per i tipi di dati complessi, fare riferimento alla sezione Tipi di dati gerarchici per informazioni sugli elementi supportati. È possibile che non sia possibile eseguire alcune configurazioni nella scheda Attributi e nella scheda Dati del pannello Proprietà.
Filtra operatore
Utilizzare l'operatore di filtro per selezionare un subset di dati dalla porta in entrata per continuare a valle fino alla porta in uscita in base a una condizione di filtro.
Utilizzare la Costruzione guidata condizione per selezionare visivamente gli elementi per creare una condizione di filtro. È inoltre possibile immettere manualmente una condizione di filtro nell'editor.
La creazione di una condizione di filtro consente di selezionare un subset di dati da un operatore a monte in base alla condizione.
Gli elementi che è possibile utilizzare in una condizione di filtro includono attributi, parametri e funzioni in entrata. È possibile fare doppio clic o trascinare un elemento dall'elenco per aggiungerlo all'editor per creare una condizione. È possibile convalidare la condizione prima di crearla.
In entrata: visualizza gli attributi dell'operatore a monte che entrano in questo operatore di filtro.
Ad esempio, per filtrare i dati in base al nome di una città, è possibile creare l'espressione di condizione come indicato di seguito.
FILTER_1.ADDRESSES.CITY='Redwood Shores'
I parametri sono i parametri di espressione che sono stati aggiunti al flusso di dati utilizzando il Builder delle condizioni (operatore filtro, join, lookup e split) o il Builder delle espressioni (operatore di espressione e aggregazione). Un parametro di espressione ha un nome, un tipo e un valore predefinito. Vedere Aggiunta di un parametro di espressione.
Si supponga di voler utilizzare un parametro per il nome della città nella condizione di filtro. È possibile creare un parametro VARCHAR
con il nome P_VARCHAR_CITY
e impostare il valore predefinito su Redwood Shores
. È quindi possibile creare l'espressione di filtro come indicato di seguito.
FILTER_1.ADDRESSES.CITY=$P_VARCHAR_CITY
Le funzioni sono le funzioni disponibili in Data Integration che è possibile utilizzare in una condizione. Le funzioni sono operazioni eseguite su argomenti passati alla funzione. Le funzioni calcolano, manipolano o estraggono i valori dei dati dagli argomenti.
Ad esempio, per filtrare i dati in base al nome di una città o alla popolazione, è possibile utilizzare la funzione OR
per creare l'espressione della condizione di filtro come indicato di seguito.
FILTER_1.COUNTRIES.CITY=$P_VARCHAR_CITY OR FILTER_1.COUNTRIES.POPULATION>100000000
FILTER_1.COUNTRIES.CITY=$P_VARCHAR_CITY OR FILTER_1.COUNTRIES.POPULATION>$P_NUMERIC
Di seguito è riportato un elenco di funzioni disponibili per l'aggiunta quando si creano le condizioni.
Funzione | descrizione; | Esempio |
---|---|---|
MD5(all data types) | Calcola un checksum MD5 del tipo di dati e restituisce un valore stringa. | MD5(column_name) |
SHA1(all data types) | Calcola un valore hash SHA-1 del tipo di dati e restituisce un valore stringa. | SHA1(column_name) |
SHA2(all data types, bitLength) | Calcola un valore hash SHA-2 del tipo di dati e restituisce un valore stringa. bitLength è un numero intero. | SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512) . |
ORA_HASH(expr, [max_bucket], [seed_value]) |
Calcola un valore hash per
Oracle applica la funzione hash alla combinazione di |
|
Funzione | descrizione; | Esempio |
---|---|---|
ABS(numeric) | Restituisce la potenza assoluta del valore numeric . | ABS(-1) |
CEIL(numeric) | Restituisce il numero intero minimo non maggiore del valore numeric | CEIL(-1,2) |
FLOOR(numeric) | Restituisce il numero intero più alto non maggiore del valore numeric . | FLOOR(-1,2) |
MOD(numeric1, numeric2) | Restituisce il resto dopo che numeric1 è diviso per numeric2 . | MOD(8,2) |
POWER(numeric1, numeric2) | Alza numeric1 alla potenza di numeric2 . | POWER(2,3) |
ROUND(numeric1, numeric2) | Restituisce numeric1 arrotondato alle posizioni decimali numeric2 . | ROUND(2.5,0) |
TRUNC(numeric1, numeric2) | Restituisce numeric1 troncato alle posizioni decimali numeric2 . | TRUNC(2.5,0) |
TO_NUMBER(expr[, format, locale]) | Converte un valore expr in un numero, in base al valore format e al valore locale facoltativo fornito. La versione locale predefinita è en-US . Tag lingua supportati.Pattern di formato supportati:
|
|
Funzione | descrizione; | Esempio |
---|---|---|
CURRENT_DATE |
Restituisce la data corrente. | CURRENT_DATE restituisce la data odierna, ad esempio 2023-05-26 |
CURRENT_TIMESTAMP |
Restituisce la data e l'ora correnti per il fuso orario della sessione. | CURRENT_TIMESTAMP restituisce la data odierna e l'ora corrente, ad esempio 2023-05-26 12:34:56
|
DATE_ADD(date, number_of_days) |
Restituisce la data number specificata dei giorni successivi al valore date specificato. |
DATE_ADD('2017-07-30', 1) restituisce 2017-07-31 |
DATE_FORMAT(expr, format[, locale]) |
Formatta un valore Pattern di formato data supportati:
|
|
DAYOFMONTH(date) |
Restituisce il giorno della data del mese. | DAYOFMONTH('2020-12-25') restituisce 25 |
DAYOFWEEK(date) |
Restituisce il giorno della data della settimana. | DAYOFWEEK('2020-12-25') restituisce 6 per venerdì. Negli Stati Uniti, la domenica è considerata 1, il lunedì è 2 e così via. |
DAYOFYEAR(date) |
Restituisce il giorno della data nell'anno. | DAYOFYEAR('2020-12-25') restituisce 360 |
WEEKOFYEAR(date) |
Restituisce la settimana della data nell'anno. |
|
HOUR(datetime) |
Restituisce il valore ora di dataora. | HOUR('2020-12-25 15:10:30') restituisce 15 |
LAST_DAY(date) |
Restituisce l'ultimo giorno del mese della data. | LAST_DAY('2020-12-25') restituisce 31 |
MINUTE(datetime) |
Restituisce il valore minuto della data/ora. | HOUR('2020-12-25 15:10:30') restituisce 10 |
MONTH(date) |
Restituisce il valore del mese della data. | MONTH('2020-06-25') restituisce 6 |
QUARTER(date) |
Restituisce il trimestre dell'anno in cui si trova la data. | QUARTER('2020-12-25') restituisce 4 |
SECOND(datetime) |
Restituisce il secondo valore della data/ora. | SECOND('2020-12-25 15:10:30') restituisce 30 |
TO_DATE(string, format_string[, localeStr]) |
Analizza l'espressione di stringa con l'espressione format_string in una data. Le impostazioni nazionali sono facoltative. L'impostazione predefinita è en-US . Tag lingua supportati.Nelle espressioni della pipeline,
|
|
TO_TIMESTAMP(expr, format_string[, localeStr]) |
Converte un valore expr di VARCHAR in un valore di TIMESTAMP, in base al valore format_string e al valore localeStr facoltativo fornito.Nelle espressioni della pipeline,
|
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') restituisce un oggetto TIMESTAMP che rappresenta 11am 10:10 Oct 11th, 2020 |
WEEK(date) |
Restituisce il valore della settimana della data. |
WEEK('2020-06-25') restituisce 4 |
YEAR(date) |
Restituisce il valore dell'anno della data. | YEAR('2020-06-25') restituisce 2020 |
ADD_MONTHS(date_expr, number_months) |
Restituisce la data successiva all'aggiunta del numero di mesi specificato alla data, all'indicatore orario o alla stringa specificata con un formato quale yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS . |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Restituisce il numero di mesi compresi tra Viene restituito un numero intero se entrambe le date sono lo stesso giorno del mese o se entrambe sono l'ultimo giorno dei rispettivi mesi. In caso contrario, la differenza viene calcolata in base a 31 giorni al mese. |
|
FROM_UTC_TIMESTAMP(time_stamp, time_zone) |
Interpreta una data, un indicatore orario o una stringa come ora UTC e la converte in un indicatore orario nel fuso orario specificato. Per la stringa, utilizzare un formato quale: Il formato del fuso orario è un ID di zona basato sull'area (ad esempio, 'area/città' come 'Asia/Seoul' o un offset del fuso orario (ad esempio, UTC+02). |
FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') restituisce 2017-07-14 03:40:00.0 |
TO_UTC_TIMESTAMP(time_stamp, time_zone) |
Converte una data, un indicatore orario o una stringa nel fuso orario specificato in un indicatore orario UTC. Per la stringa, utilizzare un formato quale: Il formato del fuso orario è un ID di zona basato sull'area (ad esempio, 'area/città' come 'Asia/Seoul') o un offset del fuso orario (ad esempio, UTC+02). |
TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') restituisce 2017-07-14 01:40:00.0
|
FROM_UNIXTIME(unix_time[, fmt]) |
Converte l'ora o l'epoca Unix specificata in una stringa che rappresenta l'indicatore orario di quel momento nel fuso orario di sistema corrente e nel formato specificato. Nota: l'ora Unix è il numero di secondi trascorsi dal 1° gennaio 1970 alle 00:00:00 UTC. Se |
Il fuso orario predefinito è PST negli esempi |
UNIX_TIMESTAMP([time_expr[, fmt]]) |
Converte l'ora corrente o specificata in un indicatore orario Unix in secondi.
Se Se |
Il fuso orario predefinito è PST in questo esempio |
INTERVAL 'year' YEAR[(year_precision)] |
Restituisce un periodo di tempo in anni. year_precision è il numero di cifre nel campo anno. È compreso tra 0 e 9. Se year_precision viene omesso, l'impostazione predefinita è 2 (deve essere inferiore a 100 anni). |
|
INTERVAL 'year month' YEAR[(year_precision)] TO MONTH |
Restituisce un periodo di tempo in anni e mesi. Consente di memorizzare un periodo di tempo utilizzando i campi anno e mese. year_precision è il numero di cifre nel campo anno. È compreso tra 0 e 9. Se year_precision viene omesso, l'impostazione predefinita è 2 (deve essere inferiore a 100 anni). |
INTERVAL '100-5' YEAR(3) TO MONTH restituisce un intervallo di 100 anni, 5 mesi. È necessario specificare la precisione dell'anno iniziale pari a 3. |
INTERVAL 'month' MONTH[(month_precision)] |
Restituisce un periodo di tempo in mesi. month_precision è il numero di cifre nel campo mese. È compreso tra 0 e 9. Se month_precision viene omesso, l'impostazione predefinita è 2 (deve essere inferiore a 100 anni). |
INTERVAL '200' MONTH(3) restituisce un intervallo di 200 mesi. È necessario specificare la precisione del mese pari a 3. |
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)] |
Restituisce un periodo di tempo in termini di giorni, ore, minuti e secondi. day_precision è il numero di cifre nel campo giorno. È compreso tra 0 e 9. Il valore predefinito è 2. fractional_seconds_precision è il numero di cifre nella parte frazionaria del secondo valore nel campo time; è compreso tra 0 e 9. |
INTERVAL '11 10:09:08.555' DAY TO SECOND(3) restituisce un intervallo di 11 giorni, 10 ore, 09 minuti, 08 secondi e 555 millesimi di secondo |
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)] |
Restituisce un periodo di tempo in termini di giorni, ore e minuti. day_precision è il numero di cifre nel campo giorno. È compreso tra 0 e 9. Il valore predefinito è 2. minute_precision è il numero di cifre nel campo minuto, con un intervallo compreso tra 0 e 2. Il valore predefinito è 2. |
INTERVAL '11 10:09' DAY TO MINUTE restituisce un intervallo di 11 giorni, 10 ore e 09 minuti |
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)] |
Restituisce un periodo di tempo in termini di giorni e ore. day_precision è il numero di cifre nel campo giorno. È compreso tra 0 e 9. Il valore predefinito è 2. hour_precision è il numero di cifre nel campo ora; è compreso tra 0 e 2. Il valore predefinito è 2. |
INTERVAL '100 10' DAY(3) TO HOUR restituisce un intervallo di 100 giorni e 10 ore |
INTERVAL 'day' DAY[(day_precision)] |
Restituisce un periodo di tempo in termini di giorni. day_precision è il numero di cifre nel campo giorno. È compreso tra 0 e 9. Il valore predefinito è 2. |
INTERVAL '999' DAY(3) restituisce un intervallo di 999 giorni |
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)] |
Restituisce un periodo di tempo in termini di ore, minuti e secondi. hour_precision è il numero di cifre nel campo ora; è compreso tra 0 e 2. Il valore predefinito è 2. fractional_seconds_precision è il numero di cifre nella parte frazionaria del secondo valore nel campo time; è compreso tra 0 e 9. |
INTERVAL '09:08:07.6666666' HOUR TO SECOND(7) restituisce un intervallo di 9 ore, 08 minuti e 7,66666666 secondi |
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)] |
Restituisce un periodo di tempo in termini di ore e minuti. hour_precision è il numero di cifre nel campo ora; è compreso tra 0 e 2. Il valore predefinito è 2. minute_precision è il numero di cifre nel campo minuto, con un intervallo compreso tra 0 e 2. Il valore predefinito è 2. |
INTERVAL '09:30' HOUR TO MINUTE restituisce un intervallo di 9 ore e 30 minuti |
INTERVAL 'hour' HOUR[(hour_precision)] |
Restituisce un periodo di tempo in termini di ore. hour_precision è il numero di cifre nel campo ora; è compreso tra 0 e 2. Il valore predefinito è 2. |
INTERVAL '40' HOUR restituisce un intervallo di 40 ore |
INTERVAL 'minute' MINUTE[(minute_precision)] |
Restituisce un periodo di tempo in termini di minuti. minute_precision è il numero di cifre nel campo minuto, con un intervallo compreso tra 0 e 2. Il valore predefinito è 2. |
INTERVAL '15' MINUTE restituisce un intervallo di 15 minuti |
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)] |
Restituisce un periodo di tempo in termini di minuti e secondi. minute_precision è il numero di cifre nel campo minuto, con un intervallo compreso tra 0 e 2. Il valore predefinito è 2. fractional_seconds_precision è il numero di cifre nella parte frazionaria del secondo valore nel campo time; è compreso tra 0 e 9. |
INTERVAL '15:30' MINUTE TO SECOND restituisce un intervallo di 15 minuti e 30 secondi |
INTERVAL 'second' SECOND[(fractional_seconds_precision)] |
Restituisce un periodo di tempo in termini di secondi. fractional_seconds_precision è il numero di cifre nella parte frazionaria del campo secondo; è compreso tra 0 e 9. Il valore predefinito è 3. |
INTERVAL '15.678' SECOND restituisce un intervallo di 15,678 secondi |
Funzione | descrizione; | Esempio |
---|---|---|
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) |
Restituisce il valore valutato nella riga corrispondente alla prima riga del frame della finestra. | FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) restituisce il primo valore di BANK_ID in una finestra in cui le righe vengono calcolate come riga corrente e 1 riga dopo tale riga, partizionata per BANK_ID e in ordine crescente per BANK_NAME . |
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Restituisce il valore valutato alla riga in corrispondenza di un determinato offset prima della riga corrente all'interno della partizione. In assenza di tale riga, viene restituito il valore predefinito. L'offset e il valore predefinito vengono valutati rispetto alla riga corrente. Se omesso, l'offset viene impostato su 1 per impostazione predefinita e su NULL. | LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) restituisce il valore di BANK_ID dalla seconda riga prima della riga corrente, partizionato da BANK_ID e in ordine decrescente di BANK_NAME . In assenza di tale valore, viene restituito hello . |
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) |
Restituisce il valore valutato nella riga che corrisponde all'ultima riga del frame della finestra. | LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) restituisce l'ultimo valore di BANK_ID in una finestra in cui le righe vengono calcolate come riga corrente e 1 riga dopo tale riga, partizionata per BANK_ID e in ordine crescente per BANK_NAME . |
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Restituisce il valore valutato alla riga in corrispondenza di un determinato offset dopo la riga corrente all'interno della partizione. In assenza di tale riga, viene restituito il valore predefinito. L'offset e il valore predefinito vengono valutati rispetto alla riga corrente. Se omesso, l'offset viene impostato su 1 per impostazione predefinita e su NULL. | LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) restituisce il valore di BANK_ID dalla seconda riga dopo la riga corrente, partizionato da BANK_ID e in ordine crescente da BANK_NAME . In assenza di tale valore, viene restituito hello . |
RANK() OVER([ partition_clause ] order_by_clause) |
Restituisce la classificazione della riga corrente con interruzioni, contando da 1. | RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) restituisce la classificazione di ogni riga all'interno del gruppo di partizioni di BANK_ID , in ordine crescente di BANK_NAME . |
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) |
Restituisce il numero univoco della riga corrente all'interno della partizione, contando da 1. | ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) restituisce il numero di riga univoco di ogni riga all'interno del gruppo di partizioni di BANK_ID , in ordine crescente di BANK_NAME . |
Funzioni | descrizione; | Esempio |
---|---|---|
CAST(value AS type) | Restituisce il valore specificato nel tipo specificato. | CAST("10" AS INT) restituisce 10 |
CONCAT(string, string) | Restituisce i valori combinati di stringhe o colonne. | CONCAT('Oracle','SQL') restituisce OracleSQL |
CONCAT_WS(separator, expression1, expression2, expression3,...) |
Restituisce i valori combinati di stringhe o colonne utilizzando il separatore specificato tra le stringhe o le colonne. È necessario un separatore e deve essere una stringa. È necessario fornire almeno un'espressione dopo il separatore. Ad esempio: |
CONCAT_WS('-', 'Hello', 'Oracle') restituisce Hello-Oracle
Se un elemento figlio della funzione è un array, l'array viene appiattito:
|
INITCAP(string) | Restituisce la stringa con la prima lettera in ogni parola maiuscola, mentre tutte le altre lettere sono minuscole e ogni parola è delimitata da uno spazio vuoto. | INITCAP('oRACLE sql') restituisce Oracle Sql |
INSTR(string, substring[start_position]) | Restituisce l'indice (basato su 1) della prima occorrenza di substring in string . | INSTR('OracleSQL', 'SQL') restituisce 7 |
LOWER(string) | Restituisce la stringa con tutte le lettere modificate in minuscolo. | LOWER('ORACLE') restituisce oracle |
LENGTH(string) | Restituisce la lunghezza del carattere della stringa o il numero di byte di dati binari. La lunghezza della stringa include gli spazi finali. | LENGTH('Oracle') restituisce 6 |
LTRIM(string) | Restituisce la stringa con gli spazi iniziali rimossi da sinistra. | LTRIM(' Oracle') |
NVL(expr1, epxr2) | Restituisce l'argomento non nullo. | NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID()) |
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx]) | Cerca ed estrae la stringa che corrisponde a un pattern di espressione regolare dalla stringa di input. Se viene fornito l'indice di gruppo di acquisizione facoltativo, la funzione estrae il gruppo specifico. |
REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) restituisce 22 |
REPLACE(string, search, replacement) | Sostituisce tutte le occorrenze di search con replacement .Se Se | REPLACE('ABCabc', 'abc', 'DEF') restituisce ABCDEF |
RTRIM(string) | Restituisce la stringa con gli spazi iniziali rimossi da destra. | RTRIM('Oracle ') |
SUBSTRING(string, position[, substring_length]) | Restituisce la sottostringa che inizia in posizione. | SUBSTRING('Oracle SQL' FROM 2 FOR 3) restituisce rac |
Per i numeri, TO_CHAR(expr) e per le date TO_CHAR(expr, format[, locale]) | Converte numeri e date in stringhe. Per i numeri non è richiesto alcun formato. Per le date, utilizzare lo stesso formato di DATE_FORMAT descritto in Funzioni di data e ora. La versione locale predefinita è en-US . Vedere i tag di lingua supportati.Nelle espressioni della pipeline,
| Esempio numerico: Esempio di data: |
UPPER(string) | Restituisce una stringa con tutte le lettere modificate in maiuscolo. | UPPER('oracle') restituisce ORACLE |
LPAD(str, len[, pad]) | Restituisce una stringa riempita a sinistra con caratteri specificati fino a una certa lunghezza. Se il carattere pad viene omesso, il valore predefinito è uno spazio. | LPAD('ABC', 5, '*') restituisce '**ABC' |
RPAD(str, len[, pad]) | Restituisce una stringa riempita a destra con i caratteri specificati fino a una certa lunghezza. Se il carattere pad viene omesso, il valore predefinito è uno spazio. | RPAD('XYZ', 6, '+' ) returns 'XYZ+++' |
Funzione | descrizione; | Esempio |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Restituisce il valore per il quale viene soddisfatta una condizione. | CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END restituisce ABC se 1> 0 , altrimenti restituisce XYZ |
AND | L'operatore AND logico. Restituisce true se entrambi gli operandi sono true, altrimenti restituisce false. | (x = 10 AND y = 20) restituisce "true" se x è uguale a 10 e y è uguale a 20. Se uno dei due non è vero, restituisce "falso" |
OR | Operatore OR logico. Restituisce true se uno degli operandi è true o entrambi sono true, altrimenti restituisce false. | (x = 10 OR y = 20) restituisce "false" se x non è uguale a 10 e anche y non è uguale a 20. Se uno dei due è vero, allora restituisce "vero" |
NOT | L'operatore NOT logico. | |
LIKE | Esegue la corrispondenza dei pattern di stringa, indipendentemente dal fatto che string1 corrisponda al pattern in string2. | |
= | Test per l'uguaglianza. Restituisce true se expr1 è uguale a expr2, altrimenti restituisce false. | x = 10 restituisce "true" quando il valore di x è 10, altrimenti restituisce "false" |
!= | Test per la disuguaglianza. Restituisce true se expr1 non è uguale a expr2, altrimenti restituisce false. | x != 10 restituisce "false" se il valore di x è 10, altrimenti restituisce "true" |
> | Test per un'espressione maggiore di. Restituisce true se expr1 è maggiore di expr2. | x > 10 restituisce "true" se il valore di x è maggiore di 10, altrimenti restituisce "false" |
>= | Test per un'espressione maggiore o uguale a. Restituisce true se expr1 è maggiore o uguale a expr2. | x > =10 restituisce "true" se il valore di x è maggiore o uguale a 10, altrimenti restituisce "false" |
< | Test per un'espressione minore di. Restituisce true se expr1 è minore di expr2. | x < 10 restituisce "true" se il valore di x è minore di 10, altrimenti restituisce "false" |
<= | Test per un'espressione minore o uguale a. Restituisce true se expr1 è minore o uguale a expr2. | x <= 10 restituisce "true" se il valore di x è minore di 10, altrimenti restituisce "false" |
|| | Concatena due stringhe. | 'XYZ' || 'hello' restituisce 'XYZhello' |
BETWEEN | Valuta un intervallo. | FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007 |
IN | Verifica se un'espressione corrisponde a una lista di valori. | FILTER_2.ORDERS.ORDER_ID IN (1003, 1007) |
Funzione | descrizione; | Esempio |
---|---|---|
NUMERIC_ID() | Genera un identificativo univoco universale che è un numero a 64 bit per ogni riga. | NUMERIC_ID() restituisce, ad esempio, 3458761969522180096 e 3458762008176885761 |
ROWID() | Genera numeri a 64 bit in aumento monotono. | ROWID() restituisce, ad esempio, 0 , 1 , 2 e così via |
UUID() | Genera un identificativo univoco universale che è una stringa a 128 bit per ogni riga. | UUID() restituisce, ad esempio, 20d45c2f-0d56-4356-8910-162f4f40fb6d |
MONOTONICALLY_INCREASING_ID() |
Genera numeri interi a 64 bit univoci e monotoni che non sono numeri consecutivi. | MONOTONICALLY_INCREASING_ID() restituisce, ad esempio, 8589934592 e 25769803776 |
Funzione | descrizione; | Esempio |
---|---|---|
COALESCE(value, value [, value]*) | Restituisce il primo argomento non nullo, se esistente, altrimenti restituisce un valore nullo. | COALESCE(NULL, 1, NULL) restituisce 1 |
NULLIF(value, value) | Restituisce un valore nullo se i due valori sono uguali, altrimenti restituisce il primo valore. | NULLIF('ABC','XYZ') restituisce ABC |
Funzione | descrizione; | Esempio |
---|---|---|
SCHEMA_OF_JSON(string) | Analizza una stringa JSON e inserisce lo schema in formato DDL. |
|
FROM_JSON(column, string) | Analizza una colonna contenente una stringa JSON in uno dei tipi seguenti, con lo schema specificato.
|
|
TO_JSON(column) | Converte una colonna contenente un tipo Struct o Array of Structs o Map o Array of Map in una stringa JSON. | TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) restituisce una stringa JSON {"s1":[1,2,3],"s2":{"key":"value"}} |
TO_MAP(string,column[,string,column]*) | Crea una nuova colonna di tipo Mappa. Le colonne di input devono essere raggruppate come coppie chiave-valore. Le colonne chiave di input non possono essere nulle e devono avere tutti lo stesso tipo di dati. Le colonne dei valori di input devono avere tutti lo stesso tipo di dati. |
|
TO_STRUCT(string,column[,string,column]*) | Crea una nuova colonna di tipo Struttura. Le colonne di input devono essere raggruppate come coppie chiave-valore. |
|
TO_ARRAY(column[,column]*) | Crea una nuova colonna come tipo di array. Le colonne di input devono avere tutte lo stesso tipo di dati. |
|
Gli operatori di flusso dati che supportano la creazione di espressioni e tipi di dati gerarchici possono utilizzare funzioni di ordine superiore.
Gli operatori supportati sono:
-
aggregato
-
Espressione
-
Filtro
-
Join
-
Cerca
-
Dividi
-
Pivot
Funzione | descrizione; | Esempio |
---|---|---|
TRANSFORM(column, lambda_function) | Prende un array e una funzione anonima e imposta un nuovo array applicando la funzione a ciascun elemento e assegnando il risultato all'array di output. | Per un array di input di numeri interi [1, 2, 3] , TRANSFORM(array, x -> x + 1) restituisce un nuovo array di valori [2, 3, 4] . |
TRANSFORM_KEYS(column, lambda_function) | Prende una mappa e una funzione con 2 argomenti (chiave e valore) e restituisce una mappa in cui le chiavi hanno il tipo del risultato della funzione lambda e i valori hanno il tipo dei valori della mappa delle colonne. | Per una mappa di input con chiavi interi e valori stringa di {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'} , TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) restituisce una nuova mappa di {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'} . |
TRANSFORM_VALUES(column, lambda_function) | Prende una mappa e una funzione con 2 argomenti (chiave e valore) e restituisce una mappa in cui i valori hanno il tipo del risultato delle funzioni lambda e i tasti hanno il tipo delle chiavi della mappa delle colonne. | Per una mappa di input con chiavi stringa e valori stringa {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'} , TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) restituisce una nuova mappa di {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'} . |
ARRAY_SORT(array(...), lambda_function) |
Solo l'operatore Espressione supporta Prende un array e ordina in base alla funzione specificata che accetta 2 argomenti. La funzione deve restituire -1, 0 o 1 a seconda che il primo elemento sia minore, uguale o maggiore del secondo elemento. Se la funzione viene omessa, l'array viene ordinato in ordine crescente. |
L'array restituito è: [1,5,6] |
Operatore di join
Utilizzare l'operatore join per collegare i dati provenienti da più origini in entrata.
Utilizzare la Costruzione guidata condizione per selezionare visivamente gli elementi per creare una condizione di join. È inoltre possibile immettere manualmente una condizione di join nell'editor.
La creazione di una condizione di join consente di selezionare i dati da due origini in entrata in base alla condizione.
Gli elementi che è possibile utilizzare in una condizione di join includono attributi, parametri e funzioni in entrata. È possibile fare doppio clic o trascinare un elemento dall'elenco per aggiungerlo all'editor per creare una condizione. È possibile convalidare la condizione prima di crearla.
In entrata visualizza gli attributi delle porte a monte connesse all'operatore di JOIN come due cartelle JOIN separate. Visualizzare gli attributi da ciascuna porta espandendo o comprimendo la cartella JOIN appropriata. Ad esempio, JOIN_1_1 e JOIN_1_2.
JOIN_1_1.BANK_CUSTOMER.ADDRESS_ID = JOIN_1_2.BANK_ADDRESS.ADDRESS_ID
I parametri sono i parametri di espressione che sono stati aggiunti al flusso di dati utilizzando il Builder delle condizioni (operatore filtro, join, lookup e split) o il Builder delle espressioni (operatore di espressione e aggregazione). Un parametro di espressione ha un nome, un tipo e un valore predefinito. Vedere Aggiunta di un parametro di espressione.
Si supponga di voler unire due origini e conservare solo le righe in cui BANK_NAME='ABC Bank'
. È possibile creare un parametro VARCHAR
con il nome P_VARCHAR
e impostare il valore predefinito su ABC BANK
. È quindi possibile creare l'espressione join come indicato di seguito.
JOIN_1_1.ADDRESSES.BANK_ID = JOIN_1_2.BANK.BANK_ID AND JOIN_1_2.BANK.BANK_NAME = $P_VARCHAR
Le funzioni sono le funzioni disponibili in Data Integration che è possibile utilizzare in una condizione. Le funzioni sono operazioni eseguite su argomenti passati alla funzione. Le funzioni calcolano, manipolano o estraggono i valori dei dati dagli argomenti.
Di seguito è riportato un elenco di funzioni disponibili per l'aggiunta quando si creano le condizioni.
Funzione | descrizione; | Esempio |
---|---|---|
MD5(all data types) | Calcola un checksum MD5 del tipo di dati e restituisce un valore stringa. | MD5(column_name) |
SHA1(all data types) | Calcola un valore hash SHA-1 del tipo di dati e restituisce un valore stringa. | SHA1(column_name) |
SHA2(all data types, bitLength) | Calcola un valore hash SHA-2 del tipo di dati e restituisce un valore stringa. bitLength è un numero intero. | SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512) . |
ORA_HASH(expr, [max_bucket], [seed_value]) |
Calcola un valore hash per
Oracle applica la funzione hash alla combinazione di |
|
Funzione | descrizione; | Esempio |
---|---|---|
ABS(numeric) | Restituisce la potenza assoluta del valore numeric . | ABS(-1) |
CEIL(numeric) | Restituisce il numero intero minimo non maggiore del valore numeric | CEIL(-1,2) |
FLOOR(numeric) | Restituisce il numero intero più alto non maggiore del valore numeric . | FLOOR(-1,2) |
MOD(numeric1, numeric2) | Restituisce il resto dopo che numeric1 è diviso per numeric2 . | MOD(8,2) |
POWER(numeric1, numeric2) | Alza numeric1 alla potenza di numeric2 . | POWER(2,3) |
ROUND(numeric1, numeric2) | Restituisce numeric1 arrotondato alle posizioni decimali numeric2 . | ROUND(2.5,0) |
TRUNC(numeric1, numeric2) | Restituisce numeric1 troncato alle posizioni decimali numeric2 . | TRUNC(2.5,0) |
TO_NUMBER(expr[, format, locale]) | Converte un valore expr in un numero, in base al valore format e al valore locale facoltativo fornito. La versione locale predefinita è en-US . Tag lingua supportati.Pattern di formato supportati:
|
|
Funzione | descrizione; | Esempio |
---|---|---|
CURRENT_DATE |
Restituisce la data corrente. | CURRENT_DATE restituisce la data odierna, ad esempio 2023-05-26 |
CURRENT_TIMESTAMP |
Restituisce la data e l'ora correnti per il fuso orario della sessione. | CURRENT_TIMESTAMP restituisce la data odierna e l'ora corrente, ad esempio 2023-05-26 12:34:56
|
DATE_ADD(date, number_of_days) |
Restituisce la data number specificata dei giorni successivi al valore date specificato. |
DATE_ADD('2017-07-30', 1) restituisce 2017-07-31 |
DATE_FORMAT(expr, format[, locale]) |
Formatta un valore Pattern di formato data supportati:
|
|
DAYOFMONTH(date) |
Restituisce il giorno della data del mese. | DAYOFMONTH('2020-12-25') restituisce 25 |
DAYOFWEEK(date) |
Restituisce il giorno della data della settimana. | DAYOFWEEK('2020-12-25') restituisce 6 per venerdì. Negli Stati Uniti, la domenica è considerata 1, il lunedì è 2 e così via. |
DAYOFYEAR(date) |
Restituisce il giorno della data nell'anno. | DAYOFYEAR('2020-12-25') restituisce 360 |
WEEKOFYEAR(date) |
Restituisce la settimana della data nell'anno. |
|
HOUR(datetime) |
Restituisce il valore ora di dataora. | HOUR('2020-12-25 15:10:30') restituisce 15 |
LAST_DAY(date) |
Restituisce l'ultimo giorno del mese della data. | LAST_DAY('2020-12-25') restituisce 31 |
MINUTE(datetime) |
Restituisce il valore minuto della data/ora. | HOUR('2020-12-25 15:10:30') restituisce 10 |
MONTH(date) |
Restituisce il valore del mese della data. | MONTH('2020-06-25') restituisce 6 |
QUARTER(date) |
Restituisce il trimestre dell'anno in cui si trova la data. | QUARTER('2020-12-25') restituisce 4 |
SECOND(datetime) |
Restituisce il secondo valore della data/ora. | SECOND('2020-12-25 15:10:30') restituisce 30 |
TO_DATE(string, format_string[, localeStr]) |
Analizza l'espressione di stringa con l'espressione format_string in una data. Le impostazioni nazionali sono facoltative. L'impostazione predefinita è en-US . Tag lingua supportati.Nelle espressioni della pipeline,
|
|
TO_TIMESTAMP(expr, format_string[, localeStr]) |
Converte un valore expr di VARCHAR in un valore di TIMESTAMP, in base al valore format_string e al valore localeStr facoltativo fornito.Nelle espressioni della pipeline,
|
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') restituisce un oggetto TIMESTAMP che rappresenta 11am 10:10 Oct 11th, 2020 |
WEEK(date) |
Restituisce il valore della settimana della data. |
WEEK('2020-06-25') restituisce 4 |
YEAR(date) |
Restituisce il valore dell'anno della data. | YEAR('2020-06-25') restituisce 2020 |
ADD_MONTHS(date_expr, number_months) |
Restituisce la data successiva all'aggiunta del numero di mesi specificato alla data, all'indicatore orario o alla stringa specificata con un formato quale yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS . |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Restituisce il numero di mesi compresi tra Viene restituito un numero intero se entrambe le date sono lo stesso giorno del mese o se entrambe sono l'ultimo giorno dei rispettivi mesi. In caso contrario, la differenza viene calcolata in base a 31 giorni al mese. |
|
FROM_UTC_TIMESTAMP(time_stamp, time_zone) |
Interpreta una data, un indicatore orario o una stringa come ora UTC e la converte in un indicatore orario nel fuso orario specificato. Per la stringa, utilizzare un formato quale: Il formato del fuso orario è un ID di zona basato sull'area (ad esempio, 'area/città' come 'Asia/Seoul' o un offset del fuso orario (ad esempio, UTC+02). |
FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') restituisce 2017-07-14 03:40:00.0 |
TO_UTC_TIMESTAMP(time_stamp, time_zone) |
Converte una data, un indicatore orario o una stringa nel fuso orario specificato in un indicatore orario UTC. Per la stringa, utilizzare un formato quale: Il formato del fuso orario è un ID di zona basato sull'area (ad esempio, 'area/città' come 'Asia/Seoul') o un offset del fuso orario (ad esempio, UTC+02). |
TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') restituisce 2017-07-14 01:40:00.0
|
FROM_UNIXTIME(unix_time[, fmt]) |
Converte l'ora o l'epoca Unix specificata in una stringa che rappresenta l'indicatore orario di quel momento nel fuso orario di sistema corrente e nel formato specificato. Nota: l'ora Unix è il numero di secondi trascorsi dal 1° gennaio 1970 alle 00:00:00 UTC. Se |
Il fuso orario predefinito è PST negli esempi |
UNIX_TIMESTAMP([time_expr[, fmt]]) |
Converte l'ora corrente o specificata in un indicatore orario Unix in secondi.
Se Se |
Il fuso orario predefinito è PST in questo esempio |
INTERVAL 'year' YEAR[(year_precision)] |
Restituisce un periodo di tempo in anni. year_precision è il numero di cifre nel campo anno. È compreso tra 0 e 9. Se year_precision viene omesso, l'impostazione predefinita è 2 (deve essere inferiore a 100 anni). |
|
INTERVAL 'year month' YEAR[(year_precision)] TO MONTH |
Restituisce un periodo di tempo in anni e mesi. Consente di memorizzare un periodo di tempo utilizzando i campi anno e mese. year_precision è il numero di cifre nel campo anno. È compreso tra 0 e 9. Se year_precision viene omesso, l'impostazione predefinita è 2 (deve essere inferiore a 100 anni). |
INTERVAL '100-5' YEAR(3) TO MONTH restituisce un intervallo di 100 anni, 5 mesi. È necessario specificare la precisione dell'anno iniziale pari a 3. |
INTERVAL 'month' MONTH[(month_precision)] |
Restituisce un periodo di tempo in mesi. month_precision è il numero di cifre nel campo mese. È compreso tra 0 e 9. Se month_precision viene omesso, l'impostazione predefinita è 2 (deve essere inferiore a 100 anni). |
INTERVAL '200' MONTH(3) restituisce un intervallo di 200 mesi. È necessario specificare la precisione del mese pari a 3. |
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)] |
Restituisce un periodo di tempo in termini di giorni, ore, minuti e secondi. day_precision è il numero di cifre nel campo giorno. È compreso tra 0 e 9. Il valore predefinito è 2. fractional_seconds_precision è il numero di cifre nella parte frazionaria del secondo valore nel campo time; è compreso tra 0 e 9. |
INTERVAL '11 10:09:08.555' DAY TO SECOND(3) restituisce un intervallo di 11 giorni, 10 ore, 09 minuti, 08 secondi e 555 millesimi di secondo |
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)] |
Restituisce un periodo di tempo in termini di giorni, ore e minuti. day_precision è il numero di cifre nel campo giorno. È compreso tra 0 e 9. Il valore predefinito è 2. minute_precision è il numero di cifre nel campo minuto, con un intervallo compreso tra 0 e 2. Il valore predefinito è 2. |
INTERVAL '11 10:09' DAY TO MINUTE restituisce un intervallo di 11 giorni, 10 ore e 09 minuti |
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)] |
Restituisce un periodo di tempo in termini di giorni e ore. day_precision è il numero di cifre nel campo giorno. È compreso tra 0 e 9. Il valore predefinito è 2. hour_precision è il numero di cifre nel campo ora; è compreso tra 0 e 2. Il valore predefinito è 2. |
INTERVAL '100 10' DAY(3) TO HOUR restituisce un intervallo di 100 giorni e 10 ore |
INTERVAL 'day' DAY[(day_precision)] |
Restituisce un periodo di tempo in termini di giorni. day_precision è il numero di cifre nel campo giorno. È compreso tra 0 e 9. Il valore predefinito è 2. |
INTERVAL '999' DAY(3) restituisce un intervallo di 999 giorni |
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)] |
Restituisce un periodo di tempo in termini di ore, minuti e secondi. hour_precision è il numero di cifre nel campo ora; è compreso tra 0 e 2. Il valore predefinito è 2. fractional_seconds_precision è il numero di cifre nella parte frazionaria del secondo valore nel campo time; è compreso tra 0 e 9. |
INTERVAL '09:08:07.6666666' HOUR TO SECOND(7) restituisce un intervallo di 9 ore, 08 minuti e 7,66666666 secondi |
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)] |
Restituisce un periodo di tempo in termini di ore e minuti. hour_precision è il numero di cifre nel campo ora; è compreso tra 0 e 2. Il valore predefinito è 2. minute_precision è il numero di cifre nel campo minuto, con un intervallo compreso tra 0 e 2. Il valore predefinito è 2. |
INTERVAL '09:30' HOUR TO MINUTE restituisce un intervallo di 9 ore e 30 minuti |
INTERVAL 'hour' HOUR[(hour_precision)] |
Restituisce un periodo di tempo in termini di ore. hour_precision è il numero di cifre nel campo ora; è compreso tra 0 e 2. Il valore predefinito è 2. |
INTERVAL '40' HOUR restituisce un intervallo di 40 ore |
INTERVAL 'minute' MINUTE[(minute_precision)] |
Restituisce un periodo di tempo in termini di minuti. minute_precision è il numero di cifre nel campo minuto, con un intervallo compreso tra 0 e 2. Il valore predefinito è 2. |
INTERVAL '15' MINUTE restituisce un intervallo di 15 minuti |
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)] |
Restituisce un periodo di tempo in termini di minuti e secondi. minute_precision è il numero di cifre nel campo minuto, con un intervallo compreso tra 0 e 2. Il valore predefinito è 2. fractional_seconds_precision è il numero di cifre nella parte frazionaria del secondo valore nel campo time; è compreso tra 0 e 9. |
INTERVAL '15:30' MINUTE TO SECOND restituisce un intervallo di 15 minuti e 30 secondi |
INTERVAL 'second' SECOND[(fractional_seconds_precision)] |
Restituisce un periodo di tempo in termini di secondi. fractional_seconds_precision è il numero di cifre nella parte frazionaria del campo secondo; è compreso tra 0 e 9. Il valore predefinito è 3. |
INTERVAL '15.678' SECOND restituisce un intervallo di 15,678 secondi |
Funzione | descrizione; | Esempio |
---|---|---|
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) |
Restituisce il valore valutato nella riga corrispondente alla prima riga del frame della finestra. | FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) restituisce il primo valore di BANK_ID in una finestra in cui le righe vengono calcolate come riga corrente e 1 riga dopo tale riga, partizionata per BANK_ID e in ordine crescente per BANK_NAME . |
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Restituisce il valore valutato alla riga in corrispondenza di un determinato offset prima della riga corrente all'interno della partizione. In assenza di tale riga, viene restituito il valore predefinito. L'offset e il valore predefinito vengono valutati rispetto alla riga corrente. Se omesso, l'offset viene impostato su 1 per impostazione predefinita e su NULL. | LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) restituisce il valore di BANK_ID dalla seconda riga prima della riga corrente, partizionato da BANK_ID e in ordine decrescente di BANK_NAME . In assenza di tale valore, viene restituito hello . |
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) |
Restituisce il valore valutato nella riga che corrisponde all'ultima riga del frame della finestra. | LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) restituisce l'ultimo valore di BANK_ID in una finestra in cui le righe vengono calcolate come riga corrente e 1 riga dopo tale riga, partizionata per BANK_ID e in ordine crescente per BANK_NAME . |
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Restituisce il valore valutato alla riga in corrispondenza di un determinato offset dopo la riga corrente all'interno della partizione. In assenza di tale riga, viene restituito il valore predefinito. L'offset e il valore predefinito vengono valutati rispetto alla riga corrente. Se omesso, l'offset viene impostato su 1 per impostazione predefinita e su NULL. | LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) restituisce il valore di BANK_ID dalla seconda riga dopo la riga corrente, partizionato da BANK_ID e in ordine crescente da BANK_NAME . In assenza di tale valore, viene restituito hello . |
RANK() OVER([ partition_clause ] order_by_clause) |
Restituisce la classificazione della riga corrente con interruzioni, contando da 1. | RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) restituisce la classificazione di ogni riga all'interno del gruppo di partizioni di BANK_ID , in ordine crescente di BANK_NAME . |
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) |
Restituisce il numero univoco della riga corrente all'interno della partizione, contando da 1. | ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) restituisce il numero di riga univoco di ogni riga all'interno del gruppo di partizioni di BANK_ID , in ordine crescente di BANK_NAME . |
Funzioni | descrizione; | Esempio |
---|---|---|
CAST(value AS type) | Restituisce il valore specificato nel tipo specificato. | CAST("10" AS INT) restituisce 10 |
CONCAT(string, string) | Restituisce i valori combinati di stringhe o colonne. | CONCAT('Oracle','SQL') restituisce OracleSQL |
CONCAT_WS(separator, expression1, expression2, expression3,...) |
Restituisce i valori combinati di stringhe o colonne utilizzando il separatore specificato tra le stringhe o le colonne. È necessario un separatore e deve essere una stringa. È necessario fornire almeno un'espressione dopo il separatore. Ad esempio: |
CONCAT_WS('-', 'Hello', 'Oracle') restituisce Hello-Oracle
Se un elemento figlio della funzione è un array, l'array viene appiattito:
|
INITCAP(string) | Restituisce la stringa con la prima lettera in ogni parola maiuscola, mentre tutte le altre lettere sono minuscole e ogni parola è delimitata da uno spazio vuoto. | INITCAP('oRACLE sql') restituisce Oracle Sql |
INSTR(string, substring[start_position]) | Restituisce l'indice (basato su 1) della prima occorrenza di substring in string . | INSTR('OracleSQL', 'SQL') restituisce 7 |
LOWER(string) | Restituisce la stringa con tutte le lettere modificate in minuscolo. | LOWER('ORACLE') restituisce oracle |
LENGTH(string) | Restituisce la lunghezza del carattere della stringa o il numero di byte di dati binari. La lunghezza della stringa include gli spazi finali. | LENGTH('Oracle') restituisce 6 |
LTRIM(string) | Restituisce la stringa con gli spazi iniziali rimossi da sinistra. | LTRIM(' Oracle') |
NVL(expr1, epxr2) | Restituisce l'argomento non nullo. | NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID()) |
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx]) | Cerca ed estrae la stringa che corrisponde a un pattern di espressione regolare dalla stringa di input. Se viene fornito l'indice di gruppo di acquisizione facoltativo, la funzione estrae il gruppo specifico. |
REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) restituisce 22 |
REPLACE(string, search, replacement) | Sostituisce tutte le occorrenze di search con replacement .Se Se | REPLACE('ABCabc', 'abc', 'DEF') restituisce ABCDEF |
RTRIM(string) | Restituisce la stringa con gli spazi iniziali rimossi da destra. | RTRIM('Oracle ') |
SUBSTRING(string, position[, substring_length]) | Restituisce la sottostringa che inizia in posizione. | SUBSTRING('Oracle SQL' FROM 2 FOR 3) restituisce rac |
Per i numeri, TO_CHAR(expr) e per le date TO_CHAR(expr, format[, locale]) | Converte numeri e date in stringhe. Per i numeri non è richiesto alcun formato. Per le date, utilizzare lo stesso formato di DATE_FORMAT descritto in Funzioni di data e ora. La versione locale predefinita è en-US . Vedere i tag di lingua supportati.Nelle espressioni della pipeline,
| Esempio numerico: Esempio di data: |
UPPER(string) | Restituisce una stringa con tutte le lettere modificate in maiuscolo. | UPPER('oracle') restituisce ORACLE |
LPAD(str, len[, pad]) | Restituisce una stringa riempita a sinistra con caratteri specificati fino a una certa lunghezza. Se il carattere pad viene omesso, il valore predefinito è uno spazio. | LPAD('ABC', 5, '*') restituisce '**ABC' |
RPAD(str, len[, pad]) | Restituisce una stringa riempita a destra con i caratteri specificati fino a una certa lunghezza. Se il carattere pad viene omesso, il valore predefinito è uno spazio. | RPAD('XYZ', 6, '+' ) returns 'XYZ+++' |
Funzione | descrizione; | Esempio |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Restituisce il valore per il quale viene soddisfatta una condizione. | CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END restituisce ABC se 1> 0 , altrimenti restituisce XYZ |
AND | L'operatore AND logico. Restituisce true se entrambi gli operandi sono true, altrimenti restituisce false. | (x = 10 AND y = 20) restituisce "true" se x è uguale a 10 e y è uguale a 20. Se uno dei due non è vero, restituisce "falso" |
OR | Operatore OR logico. Restituisce true se uno degli operandi è true o entrambi sono true, altrimenti restituisce false. | (x = 10 OR y = 20) restituisce "false" se x non è uguale a 10 e anche y non è uguale a 20. Se uno dei due è vero, allora restituisce "vero" |
NOT | L'operatore NOT logico. | |
LIKE | Esegue la corrispondenza dei pattern di stringa, indipendentemente dal fatto che string1 corrisponda al pattern in string2. | |
= | Test per l'uguaglianza. Restituisce true se expr1 è uguale a expr2, altrimenti restituisce false. | x = 10 restituisce "true" quando il valore di x è 10, altrimenti restituisce "false" |
!= | Test per la disuguaglianza. Restituisce true se expr1 non è uguale a expr2, altrimenti restituisce false. | x != 10 restituisce "false" se il valore di x è 10, altrimenti restituisce "true" |
> | Test per un'espressione maggiore di. Restituisce true se expr1 è maggiore di expr2. | x > 10 restituisce "true" se il valore di x è maggiore di 10, altrimenti restituisce "false" |
>= | Test per un'espressione maggiore o uguale a. Restituisce true se expr1 è maggiore o uguale a expr2. | x > =10 restituisce "true" se il valore di x è maggiore o uguale a 10, altrimenti restituisce "false" |
< | Test per un'espressione minore di. Restituisce true se expr1 è minore di expr2. | x < 10 restituisce "true" se il valore di x è minore di 10, altrimenti restituisce "false" |
<= | Test per un'espressione minore o uguale a. Restituisce true se expr1 è minore o uguale a expr2. | x <= 10 restituisce "true" se il valore di x è minore di 10, altrimenti restituisce "false" |
|| | Concatena due stringhe. | 'XYZ' || 'hello' restituisce 'XYZhello' |
BETWEEN | Valuta un intervallo. | FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007 |
IN | Verifica se un'espressione corrisponde a una lista di valori. | FILTER_2.ORDERS.ORDER_ID IN (1003, 1007) |
Funzione | descrizione; | Esempio |
---|---|---|
NUMERIC_ID() | Genera un identificativo univoco universale che è un numero a 64 bit per ogni riga. | NUMERIC_ID() restituisce, ad esempio, 3458761969522180096 e 3458762008176885761 |
ROWID() | Genera numeri a 64 bit in aumento monotono. | ROWID() restituisce, ad esempio, 0 , 1 , 2 e così via |
UUID() | Genera un identificativo univoco universale che è una stringa a 128 bit per ogni riga. | UUID() restituisce, ad esempio, 20d45c2f-0d56-4356-8910-162f4f40fb6d |
MONOTONICALLY_INCREASING_ID() |
Genera numeri interi a 64 bit univoci e monotoni che non sono numeri consecutivi. | MONOTONICALLY_INCREASING_ID() restituisce, ad esempio, 8589934592 e 25769803776 |
Funzione | descrizione; | Esempio |
---|---|---|
COALESCE(value, value [, value]*) | Restituisce il primo argomento non nullo, se esistente, altrimenti restituisce un valore nullo. | COALESCE(NULL, 1, NULL) restituisce 1 |
NULLIF(value, value) | Restituisce un valore nullo se i due valori sono uguali, altrimenti restituisce il primo valore. | NULLIF('ABC','XYZ') restituisce ABC |
Funzione | descrizione; | Esempio |
---|---|---|
SCHEMA_OF_JSON(string) | Analizza una stringa JSON e inserisce lo schema in formato DDL. |
|
FROM_JSON(column, string) | Analizza una colonna contenente una stringa JSON in uno dei tipi seguenti, con lo schema specificato.
|
|
TO_JSON(column) | Converte una colonna contenente un tipo Struct o Array of Structs o Map o Array of Map in una stringa JSON. | TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) restituisce una stringa JSON {"s1":[1,2,3],"s2":{"key":"value"}} |
TO_MAP(string,column[,string,column]*) | Crea una nuova colonna di tipo Mappa. Le colonne di input devono essere raggruppate come coppie chiave-valore. Le colonne chiave di input non possono essere nulle e devono avere tutti lo stesso tipo di dati. Le colonne dei valori di input devono avere tutti lo stesso tipo di dati. |
|
TO_STRUCT(string,column[,string,column]*) | Crea una nuova colonna di tipo Struttura. Le colonne di input devono essere raggruppate come coppie chiave-valore. |
|
TO_ARRAY(column[,column]*) | Crea una nuova colonna come tipo di array. Le colonne di input devono avere tutte lo stesso tipo di dati. |
|
Gli operatori di flusso dati che supportano la creazione di espressioni e tipi di dati gerarchici possono utilizzare funzioni di ordine superiore.
Gli operatori supportati sono:
-
aggregato
-
Espressione
-
Filtro
-
Join
-
Cerca
-
Dividi
-
Pivot
Funzione | descrizione; | Esempio |
---|---|---|
TRANSFORM(column, lambda_function) | Prende un array e una funzione anonima e imposta un nuovo array applicando la funzione a ciascun elemento e assegnando il risultato all'array di output. | Per un array di input di numeri interi [1, 2, 3] , TRANSFORM(array, x -> x + 1) restituisce un nuovo array di valori [2, 3, 4] . |
TRANSFORM_KEYS(column, lambda_function) | Prende una mappa e una funzione con 2 argomenti (chiave e valore) e restituisce una mappa in cui le chiavi hanno il tipo del risultato della funzione lambda e i valori hanno il tipo dei valori della mappa delle colonne. | Per una mappa di input con chiavi interi e valori stringa di {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'} , TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) restituisce una nuova mappa di {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'} . |
TRANSFORM_VALUES(column, lambda_function) | Prende una mappa e una funzione con 2 argomenti (chiave e valore) e restituisce una mappa in cui i valori hanno il tipo del risultato delle funzioni lambda e i tasti hanno il tipo delle chiavi della mappa delle colonne. | Per una mappa di input con chiavi stringa e valori stringa {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'} , TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) restituisce una nuova mappa di {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'} . |
ARRAY_SORT(array(...), lambda_function) |
Solo l'operatore Espressione supporta Prende un array e ordina in base alla funzione specificata che accetta 2 argomenti. La funzione deve restituire -1, 0 o 1 a seconda che il primo elemento sia minore, uguale o maggiore del secondo elemento. Se la funzione viene omessa, l'array viene ordinato in ordine crescente. |
L'array restituito è: [1,5,6] |
Operatore espressione
Utilizzare l'operatore di espressione per eseguire una o più trasformazioni su una singola riga di dati e creare nuovi campi derivati.
Per utilizzare l'operatore Espressione per modificare il tipo di dati di un gruppo di attributi, vedere Modifica del tipo di dati di un gruppo di attributi.
È possibile utilizzare l'operatore Espressione per modificare il tipo di dati degli attributi utilizzando un'azione di trasformazione di massa.
Utilizzare il Builder delle espressioni per selezionare visivamente gli elementi per creare un'espressione nell'editor. È inoltre possibile scrivere manualmente un'espressione.
Quando si creano espressioni, tenere presente quanto riportato di seguito.
Racchiudere un valore stringa tra virgolette singole. Ad esempio:
CONCAT('We ', 'like')
eUPPER('oracle')
.Racchiudere un nome attributo tra virgolette doppie. Ad esempio:
UPPER("Sales")
eCONCAT(CONCAT("EXPRESSION_1.EMP_UTF8_EN_COL_CSV.EN_NAME", ' '), "EXPRESSION_1.EMP_UTF8_EN_COL_CSV.NAME")
.L'uso di virgolette doppie sui nomi degli attributi è obbligatorio per i caratteri multibyte e per i nomi che contengono caratteri speciali nel nome completamente qualificato.
Il pannello Aggiungi espressione contiene due sezioni: Informazioni sull'espressione e Costruzione guidata espressione. I campi Informazioni sull'espressione consentono di specificare un nome e un tipo di dati per l'espressione. È inoltre possibile creare l'espressione da applicare a due o più attributi. Quando si utilizzano tipi di dati complessi, quali Mappa, Array e Struttura, che potrebbero avere livelli di tipi nidificati, è possibile scegliere di consentire al builder di rilevare il tipo di dati dall'espressione immessa. Quando si consente al builder di derivare il tipo di dati, è possibile visualizzare in anteprima e aggiornare il tipo di dati e convalidare l'espressione.
La sezione Costruzione guidata espressione elenca gli elementi per la creazione di un'espressione. Gli elementi che è possibile utilizzare in un'espressione includono attributi, parametri e funzioni in entrata. Fare doppio clic o trascinare un elemento dall'elenco per aggiungerlo all'editor per creare l'espressione oppure scrivere manualmente l'espressione. È possibile convalidare l'espressione prima di crearla.
Nel campo In entrata vengono visualizzati gli attributi dell'operatore a monte che entrano in questo operatore di espressione. Sotto l'elenco degli attributi è disponibile una casella di controllo che consente di applicare le regole di esclusione. Per escludere uno o più attributi in entrata dall'output di questa espressione, selezionare la casella di controllo Escludi attributi in entrata. Quindi utilizzare il menu per aggiungere gli attributi in entrata che si desidera escludere dall'output. A ogni attributo selezionato per l'esclusione viene applicata una regola di esclusione. È possibile escludere gli attributi solo quando si aggiunge l'espressione la prima volta. Quando si modifica l'espressione, la casella di controllo Escludi attributi in entrata non è disponibile.
I parametri includono parametri definiti dall'utente e parametri generati dal sistema.
I parametri definiti dall'utente sono i parametri di espressione aggiunti nel flusso di dati mediante il Generatore condizioni (operatori filtro, join, lookup e split) o il Builder delle espressioni (operatori di espressione e aggregazione). Vedere Aggiunta di un parametro di espressione. La sintassi è $PARAMETER_NAME
. Ad esempio: EXPRESSION_1.ADDRESSES.POSTAL_CODE=$P_CODE
Integrazione dati genera parametri di sistema, ad esempio SYS.TASK_START_TIME
. I valori dei parametri di sistema possono essere utilizzati nelle espressioni per registrare le informazioni di sistema. La sintassi è ${SYSTEM_PARAMETER}
. Ad esempio: ${SYS.TASK_RUN_NAME}
Funzioni sono le funzioni disponibili in Integrazione dati che è possibile utilizzare in un'espressione. Le funzioni sono operazioni eseguite su argomenti passati alla funzione. Le funzioni calcolano, manipolano o estraggono i valori dei dati dagli argomenti. È inoltre possibile aggiungere funzioni definite dall'utente create nell'area di lavoro. Ad esempio: MYLIBRARY.MYFUNCTION
Di seguito è riportato l'elenco delle funzioni disponibili in Data Integration da utilizzare.
Funzione | descrizione; | Esempio |
---|---|---|
MD5(all data types) | Calcola un checksum MD5 del tipo di dati e restituisce un valore stringa. | MD5(column_name) |
SHA1(all data types) | Calcola un valore hash SHA-1 del tipo di dati e restituisce un valore stringa. | SHA1(column_name) |
SHA2(all data types, bitLength) | Calcola un valore hash SHA-2 del tipo di dati e restituisce un valore stringa. bitLength è un numero intero. | SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512) . |
ORA_HASH(expr, [max_bucket], [seed_value]) |
Calcola un valore hash per
Oracle applica la funzione hash alla combinazione di |
|
Funzione | descrizione; | Esempio |
---|---|---|
ABS(numeric) | Restituisce la potenza assoluta del valore numeric . | ABS(-1) |
CEIL(numeric) | Restituisce il numero intero minimo non maggiore del valore numeric | CEIL(-1,2) |
FLOOR(numeric) | Restituisce il numero intero più alto non maggiore del valore numeric . | FLOOR(-1,2) |
MOD(numeric1, numeric2) | Restituisce il resto dopo che numeric1 è diviso per numeric2 . | MOD(8,2) |
POWER(numeric1, numeric2) | Alza numeric1 alla potenza di numeric2 . | POWER(2,3) |
ROUND(numeric1, numeric2) | Restituisce numeric1 arrotondato alle posizioni decimali numeric2 . | ROUND(2.5,0) |
TRUNC(numeric1, numeric2) | Restituisce numeric1 troncato alle posizioni decimali numeric2 . | TRUNC(2.5,0) |
TO_NUMBER(expr[, format, locale]) | Converte un valore expr in un numero, in base al valore format e al valore locale facoltativo fornito. La versione locale predefinita è en-US . Tag lingua supportati.Pattern di formato supportati:
|
|
Solo l'operatore Expression supporta le funzioni array.
Funzione | descrizione; | Esempio |
---|---|---|
ARRAY_POSITION(array(...), element) | Restituisce la posizione della prima occorrenza dell'elemento specificato nell'array specificato. La posizione non è basata su zero, ma inizia con 1. | ARRAY_POSITION(array(3, 2, 1, 4, 1), 1) restituisce 3 |
REVERSE(array(...)) |
Restituisce l'array di elementi specificato in ordine inverso. | REVERSE(array(2, 1, 4, 3)) restituisce [3,4,1,2] |
ELEMENT_AT(array(...), index) |
Restituisce l'elemento dell'array specificato nella posizione di indice specificata. L'indice non è basato su zero, ma inizia con 1. Se |
ELEMENT_AT(array(1, 2, 3), 2) restituisce 2 |
Funzione | descrizione; | Esempio |
---|---|---|
CURRENT_DATE |
Restituisce la data corrente. | CURRENT_DATE restituisce la data odierna, ad esempio 2023-05-26 |
CURRENT_TIMESTAMP |
Restituisce la data e l'ora correnti per il fuso orario della sessione. | CURRENT_TIMESTAMP restituisce la data odierna e l'ora corrente, ad esempio 2023-05-26 12:34:56
|
DATE_ADD(date, number_of_days) |
Restituisce la data number specificata dei giorni successivi al valore date specificato. |
DATE_ADD('2017-07-30', 1) restituisce 2017-07-31 |
DATE_FORMAT(expr, format[, locale]) |
Formatta un valore Pattern di formato data supportati:
|
|
DAYOFMONTH(date) |
Restituisce il giorno della data del mese. | DAYOFMONTH('2020-12-25') restituisce 25 |
DAYOFWEEK(date) |
Restituisce il giorno della data della settimana. | DAYOFWEEK('2020-12-25') restituisce 6 per venerdì. Negli Stati Uniti, la domenica è considerata 1, il lunedì è 2 e così via. |
DAYOFYEAR(date) |
Restituisce il giorno della data nell'anno. | DAYOFYEAR('2020-12-25') restituisce 360 |
WEEKOFYEAR(date) |
Restituisce la settimana della data nell'anno. |
|
HOUR(datetime) |
Restituisce il valore ora di dataora. | HOUR('2020-12-25 15:10:30') restituisce 15 |
LAST_DAY(date) |
Restituisce l'ultimo giorno del mese della data. | LAST_DAY('2020-12-25') restituisce 31 |
MINUTE(datetime) |
Restituisce il valore minuto della data/ora. | HOUR('2020-12-25 15:10:30') restituisce 10 |
MONTH(date) |
Restituisce il valore del mese della data. | MONTH('2020-06-25') restituisce 6 |
QUARTER(date) |
Restituisce il trimestre dell'anno in cui si trova la data. | QUARTER('2020-12-25') restituisce 4 |
SECOND(datetime) |
Restituisce il secondo valore della data/ora. | SECOND('2020-12-25 15:10:30') restituisce 30 |
TO_DATE(string, format_string[, localeStr]) |
Analizza l'espressione di stringa con l'espressione format_string in una data. Le impostazioni nazionali sono facoltative. L'impostazione predefinita è en-US . Tag lingua supportati.Nelle espressioni della pipeline,
|
|
TO_TIMESTAMP(expr, format_string[, localeStr]) |
Converte un valore expr di VARCHAR in un valore di TIMESTAMP, in base al valore format_string e al valore localeStr facoltativo fornito.Nelle espressioni della pipeline,
|
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') restituisce un oggetto TIMESTAMP che rappresenta 11am 10:10 Oct 11th, 2020 |
WEEK(date) |
Restituisce il valore della settimana della data. |
WEEK('2020-06-25') restituisce 4 |
YEAR(date) |
Restituisce il valore dell'anno della data. | YEAR('2020-06-25') restituisce 2020 |
ADD_MONTHS(date_expr, number_months) |
Restituisce la data successiva all'aggiunta del numero di mesi specificato alla data, all'indicatore orario o alla stringa specificata con un formato quale yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS . |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Restituisce il numero di mesi compresi tra Viene restituito un numero intero se entrambe le date sono lo stesso giorno del mese o se entrambe sono l'ultimo giorno dei rispettivi mesi. In caso contrario, la differenza viene calcolata in base a 31 giorni al mese. |
|
FROM_UTC_TIMESTAMP(time_stamp, time_zone) |
Interpreta una data, un indicatore orario o una stringa come ora UTC e la converte in un indicatore orario nel fuso orario specificato. Per la stringa, utilizzare un formato quale: Il formato del fuso orario è un ID di zona basato sull'area (ad esempio, 'area/città' come 'Asia/Seoul' o un offset del fuso orario (ad esempio, UTC+02). |
FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') restituisce 2017-07-14 03:40:00.0 |
TO_UTC_TIMESTAMP(time_stamp, time_zone) |
Converte una data, un indicatore orario o una stringa nel fuso orario specificato in un indicatore orario UTC. Per la stringa, utilizzare un formato quale: Il formato del fuso orario è un ID di zona basato sull'area (ad esempio, 'area/città' come 'Asia/Seoul') o un offset del fuso orario (ad esempio, UTC+02). |
TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') restituisce 2017-07-14 01:40:00.0
|
FROM_UNIXTIME(unix_time[, fmt]) |
Converte l'ora o l'epoca Unix specificata in una stringa che rappresenta l'indicatore orario di quel momento nel fuso orario di sistema corrente e nel formato specificato. Nota: l'ora Unix è il numero di secondi trascorsi dal 1° gennaio 1970 alle 00:00:00 UTC. Se |
Il fuso orario predefinito è PST negli esempi |
UNIX_TIMESTAMP([time_expr[, fmt]]) |
Converte l'ora corrente o specificata in un indicatore orario Unix in secondi.
Se Se |
Il fuso orario predefinito è PST in questo esempio |
INTERVAL 'year' YEAR[(year_precision)] |
Restituisce un periodo di tempo in anni. year_precision è il numero di cifre nel campo anno. È compreso tra 0 e 9. Se year_precision viene omesso, l'impostazione predefinita è 2 (deve essere inferiore a 100 anni). |
|
INTERVAL 'year month' YEAR[(year_precision)] TO MONTH |
Restituisce un periodo di tempo in anni e mesi. Consente di memorizzare un periodo di tempo utilizzando i campi anno e mese. year_precision è il numero di cifre nel campo anno. È compreso tra 0 e 9. Se year_precision viene omesso, l'impostazione predefinita è 2 (deve essere inferiore a 100 anni). |
INTERVAL '100-5' YEAR(3) TO MONTH restituisce un intervallo di 100 anni, 5 mesi. È necessario specificare la precisione dell'anno iniziale pari a 3. |
INTERVAL 'month' MONTH[(month_precision)] |
Restituisce un periodo di tempo in mesi. month_precision è il numero di cifre nel campo mese. È compreso tra 0 e 9. Se month_precision viene omesso, l'impostazione predefinita è 2 (deve essere inferiore a 100 anni). |
INTERVAL '200' MONTH(3) restituisce un intervallo di 200 mesi. È necessario specificare la precisione del mese pari a 3. |
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)] |
Restituisce un periodo di tempo in termini di giorni, ore, minuti e secondi. day_precision è il numero di cifre nel campo giorno. È compreso tra 0 e 9. Il valore predefinito è 2. fractional_seconds_precision è il numero di cifre nella parte frazionaria del secondo valore nel campo time; è compreso tra 0 e 9. |
INTERVAL '11 10:09:08.555' DAY TO SECOND(3) restituisce un intervallo di 11 giorni, 10 ore, 09 minuti, 08 secondi e 555 millesimi di secondo |
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)] |
Restituisce un periodo di tempo in termini di giorni, ore e minuti. day_precision è il numero di cifre nel campo giorno. È compreso tra 0 e 9. Il valore predefinito è 2. minute_precision è il numero di cifre nel campo minuto, con un intervallo compreso tra 0 e 2. Il valore predefinito è 2. |
INTERVAL '11 10:09' DAY TO MINUTE restituisce un intervallo di 11 giorni, 10 ore e 09 minuti |
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)] |
Restituisce un periodo di tempo in termini di giorni e ore. day_precision è il numero di cifre nel campo giorno. È compreso tra 0 e 9. Il valore predefinito è 2. hour_precision è il numero di cifre nel campo ora; è compreso tra 0 e 2. Il valore predefinito è 2. |
INTERVAL '100 10' DAY(3) TO HOUR restituisce un intervallo di 100 giorni e 10 ore |
INTERVAL 'day' DAY[(day_precision)] |
Restituisce un periodo di tempo in termini di giorni. day_precision è il numero di cifre nel campo giorno. È compreso tra 0 e 9. Il valore predefinito è 2. |
INTERVAL '999' DAY(3) restituisce un intervallo di 999 giorni |
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)] |
Restituisce un periodo di tempo in termini di ore, minuti e secondi. hour_precision è il numero di cifre nel campo ora; è compreso tra 0 e 2. Il valore predefinito è 2. fractional_seconds_precision è il numero di cifre nella parte frazionaria del secondo valore nel campo time; è compreso tra 0 e 9. |
INTERVAL '09:08:07.6666666' HOUR TO SECOND(7) restituisce un intervallo di 9 ore, 08 minuti e 7,66666666 secondi |
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)] |
Restituisce un periodo di tempo in termini di ore e minuti. hour_precision è il numero di cifre nel campo ora; è compreso tra 0 e 2. Il valore predefinito è 2. minute_precision è il numero di cifre nel campo minuto, con un intervallo compreso tra 0 e 2. Il valore predefinito è 2. |
INTERVAL '09:30' HOUR TO MINUTE restituisce un intervallo di 9 ore e 30 minuti |
INTERVAL 'hour' HOUR[(hour_precision)] |
Restituisce un periodo di tempo in termini di ore. hour_precision è il numero di cifre nel campo ora; è compreso tra 0 e 2. Il valore predefinito è 2. |
INTERVAL '40' HOUR restituisce un intervallo di 40 ore |
INTERVAL 'minute' MINUTE[(minute_precision)] |
Restituisce un periodo di tempo in termini di minuti. minute_precision è il numero di cifre nel campo minuto, con un intervallo compreso tra 0 e 2. Il valore predefinito è 2. |
INTERVAL '15' MINUTE restituisce un intervallo di 15 minuti |
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)] |
Restituisce un periodo di tempo in termini di minuti e secondi. minute_precision è il numero di cifre nel campo minuto, con un intervallo compreso tra 0 e 2. Il valore predefinito è 2. fractional_seconds_precision è il numero di cifre nella parte frazionaria del secondo valore nel campo time; è compreso tra 0 e 9. |
INTERVAL '15:30' MINUTE TO SECOND restituisce un intervallo di 15 minuti e 30 secondi |
INTERVAL 'second' SECOND[(fractional_seconds_precision)] |
Restituisce un periodo di tempo in termini di secondi. fractional_seconds_precision è il numero di cifre nella parte frazionaria del campo secondo; è compreso tra 0 e 9. Il valore predefinito è 3. |
INTERVAL '15.678' SECOND restituisce un intervallo di 15,678 secondi |
Funzione | descrizione; | Esempio |
---|---|---|
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) |
Restituisce il valore valutato nella riga corrispondente alla prima riga del frame della finestra. | FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) restituisce il primo valore di BANK_ID in una finestra in cui le righe vengono calcolate come riga corrente e 1 riga dopo tale riga, partizionata per BANK_ID e in ordine crescente per BANK_NAME . |
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Restituisce il valore valutato alla riga in corrispondenza di un determinato offset prima della riga corrente all'interno della partizione. In assenza di tale riga, viene restituito il valore predefinito. L'offset e il valore predefinito vengono valutati rispetto alla riga corrente. Se omesso, l'offset viene impostato su 1 per impostazione predefinita e su NULL. | LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) restituisce il valore di BANK_ID dalla seconda riga prima della riga corrente, partizionato da BANK_ID e in ordine decrescente di BANK_NAME . In assenza di tale valore, viene restituito hello . |
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) |
Restituisce il valore valutato nella riga che corrisponde all'ultima riga del frame della finestra. | LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) restituisce l'ultimo valore di BANK_ID in una finestra in cui le righe vengono calcolate come riga corrente e 1 riga dopo tale riga, partizionata per BANK_ID e in ordine crescente per BANK_NAME . |
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Restituisce il valore valutato alla riga in corrispondenza di un determinato offset dopo la riga corrente all'interno della partizione. In assenza di tale riga, viene restituito il valore predefinito. L'offset e il valore predefinito vengono valutati rispetto alla riga corrente. Se omesso, l'offset viene impostato su 1 per impostazione predefinita e su NULL. | LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) restituisce il valore di BANK_ID dalla seconda riga dopo la riga corrente, partizionato da BANK_ID e in ordine crescente da BANK_NAME . In assenza di tale valore, viene restituito hello . |
RANK() OVER([ partition_clause ] order_by_clause) |
Restituisce la classificazione della riga corrente con interruzioni, contando da 1. | RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) restituisce la classificazione di ogni riga all'interno del gruppo di partizioni di BANK_ID , in ordine crescente di BANK_NAME . |
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) |
Restituisce il numero univoco della riga corrente all'interno della partizione, contando da 1. | ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) restituisce il numero di riga univoco di ogni riga all'interno del gruppo di partizioni di BANK_ID , in ordine crescente di BANK_NAME . |
Funzioni | descrizione; | Esempio |
---|---|---|
CAST(value AS type) | Restituisce il valore specificato nel tipo specificato. | CAST("10" AS INT) restituisce 10 |
CONCAT(string, string) | Restituisce i valori combinati di stringhe o colonne. | CONCAT('Oracle','SQL') restituisce OracleSQL |
CONCAT_WS(separator, expression1, expression2, expression3,...) |
Restituisce i valori combinati di stringhe o colonne utilizzando il separatore specificato tra le stringhe o le colonne. È necessario un separatore e deve essere una stringa. È necessario fornire almeno un'espressione dopo il separatore. Ad esempio: |
CONCAT_WS('-', 'Hello', 'Oracle') restituisce Hello-Oracle
Se un elemento figlio della funzione è un array, l'array viene appiattito:
|
INITCAP(string) | Restituisce la stringa con la prima lettera in ogni parola maiuscola, mentre tutte le altre lettere sono minuscole e ogni parola è delimitata da uno spazio vuoto. | INITCAP('oRACLE sql') restituisce Oracle Sql |
INSTR(string, substring[start_position]) | Restituisce l'indice (basato su 1) della prima occorrenza di substring in string . | INSTR('OracleSQL', 'SQL') restituisce 7 |
LOWER(string) | Restituisce la stringa con tutte le lettere modificate in minuscolo. | LOWER('ORACLE') restituisce oracle |
LENGTH(string) | Restituisce la lunghezza del carattere della stringa o il numero di byte di dati binari. La lunghezza della stringa include gli spazi finali. | LENGTH('Oracle') restituisce 6 |
LTRIM(string) | Restituisce la stringa con gli spazi iniziali rimossi da sinistra. | LTRIM(' Oracle') |
NVL(expr1, epxr2) | Restituisce l'argomento non nullo. | NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID()) |
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx]) | Cerca ed estrae la stringa che corrisponde a un pattern di espressione regolare dalla stringa di input. Se viene fornito l'indice di gruppo di acquisizione facoltativo, la funzione estrae il gruppo specifico. |
REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) restituisce 22 |
REPLACE(string, search, replacement) | Sostituisce tutte le occorrenze di search con replacement .Se Se | REPLACE('ABCabc', 'abc', 'DEF') restituisce ABCDEF |
RTRIM(string) | Restituisce la stringa con gli spazi iniziali rimossi da destra. | RTRIM('Oracle ') |
SUBSTRING(string, position[, substring_length]) | Restituisce la sottostringa che inizia in posizione. | SUBSTRING('Oracle SQL' FROM 2 FOR 3) restituisce rac |
Per i numeri, TO_CHAR(expr) e per le date TO_CHAR(expr, format[, locale]) | Converte numeri e date in stringhe. Per i numeri non è richiesto alcun formato. Per le date, utilizzare lo stesso formato di DATE_FORMAT descritto in Funzioni di data e ora. La versione locale predefinita è en-US . Vedere i tag di lingua supportati.Nelle espressioni della pipeline,
| Esempio numerico: Esempio di data: |
UPPER(string) | Restituisce una stringa con tutte le lettere modificate in maiuscolo. | UPPER('oracle') restituisce ORACLE |
LPAD(str, len[, pad]) | Restituisce una stringa riempita a sinistra con caratteri specificati fino a una certa lunghezza. Se il carattere pad viene omesso, il valore predefinito è uno spazio. | LPAD('ABC', 5, '*') restituisce '**ABC' |
RPAD(str, len[, pad]) | Restituisce una stringa riempita a destra con i caratteri specificati fino a una certa lunghezza. Se il carattere pad viene omesso, il valore predefinito è uno spazio. | RPAD('XYZ', 6, '+' ) returns 'XYZ+++' |
Funzione | descrizione; | Esempio |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Restituisce il valore per il quale viene soddisfatta una condizione. | CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END restituisce ABC se 1> 0 , altrimenti restituisce XYZ |
AND | L'operatore AND logico. Restituisce true se entrambi gli operandi sono true, altrimenti restituisce false. | (x = 10 AND y = 20) restituisce "true" se x è uguale a 10 e y è uguale a 20. Se uno dei due non è vero, restituisce "falso" |
OR | Operatore OR logico. Restituisce true se uno degli operandi è true o entrambi sono true, altrimenti restituisce false. | (x = 10 OR y = 20) restituisce "false" se x non è uguale a 10 e anche y non è uguale a 20. Se uno dei due è vero, allora restituisce "vero" |
NOT | L'operatore NOT logico. | |
LIKE | Esegue la corrispondenza dei pattern di stringa, indipendentemente dal fatto che string1 corrisponda al pattern in string2. | |
= | Test per l'uguaglianza. Restituisce true se expr1 è uguale a expr2, altrimenti restituisce false. | x = 10 restituisce "true" quando il valore di x è 10, altrimenti restituisce "false" |
!= | Test per la disuguaglianza. Restituisce true se expr1 non è uguale a expr2, altrimenti restituisce false. | x != 10 restituisce "false" se il valore di x è 10, altrimenti restituisce "true" |
> | Test per un'espressione maggiore di. Restituisce true se expr1 è maggiore di expr2. | x > 10 restituisce "true" se il valore di x è maggiore di 10, altrimenti restituisce "false" |
>= | Test per un'espressione maggiore o uguale a. Restituisce true se expr1 è maggiore o uguale a expr2. | x > =10 restituisce "true" se il valore di x è maggiore o uguale a 10, altrimenti restituisce "false" |
< | Test per un'espressione minore di. Restituisce true se expr1 è minore di expr2. | x < 10 restituisce "true" se il valore di x è minore di 10, altrimenti restituisce "false" |
<= | Test per un'espressione minore o uguale a. Restituisce true se expr1 è minore o uguale a expr2. | x <= 10 restituisce "true" se il valore di x è minore di 10, altrimenti restituisce "false" |
|| | Concatena due stringhe. | 'XYZ' || 'hello' restituisce 'XYZhello' |
BETWEEN | Valuta un intervallo. | FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007 |
IN | Verifica se un'espressione corrisponde a una lista di valori. | FILTER_2.ORDERS.ORDER_ID IN (1003, 1007) |
Funzione | descrizione; | Esempio |
---|---|---|
NUMERIC_ID() | Genera un identificativo univoco universale che è un numero a 64 bit per ogni riga. | NUMERIC_ID() restituisce, ad esempio, 3458761969522180096 e 3458762008176885761 |
ROWID() | Genera numeri a 64 bit in aumento monotono. | ROWID() restituisce, ad esempio, 0 , 1 , 2 e così via |
UUID() | Genera un identificativo univoco universale che è una stringa a 128 bit per ogni riga. | UUID() restituisce, ad esempio, 20d45c2f-0d56-4356-8910-162f4f40fb6d |
MONOTONICALLY_INCREASING_ID() |
Genera numeri interi a 64 bit univoci e monotoni che non sono numeri consecutivi. | MONOTONICALLY_INCREASING_ID() restituisce, ad esempio, 8589934592 e 25769803776 |
Funzione | descrizione; | Esempio |
---|---|---|
COALESCE(value, value [, value]*) | Restituisce il primo argomento non nullo, se esistente, altrimenti restituisce un valore nullo. | COALESCE(NULL, 1, NULL) restituisce 1 |
NULLIF(value, value) | Restituisce un valore nullo se i due valori sono uguali, altrimenti restituisce il primo valore. | NULLIF('ABC','XYZ') restituisce ABC |
Funzione | descrizione; | Esempio |
---|---|---|
SCHEMA_OF_JSON(string) | Analizza una stringa JSON e inserisce lo schema in formato DDL. |
|
FROM_JSON(column, string) | Analizza una colonna contenente una stringa JSON in uno dei tipi seguenti, con lo schema specificato.
|
|
TO_JSON(column) | Converte una colonna contenente un tipo Struct o Array of Structs o Map o Array of Map in una stringa JSON. | TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) restituisce una stringa JSON {"s1":[1,2,3],"s2":{"key":"value"}} |
TO_MAP(string,column[,string,column]*) | Crea una nuova colonna di tipo Mappa. Le colonne di input devono essere raggruppate come coppie chiave-valore. Le colonne chiave di input non possono essere nulle e devono avere tutti lo stesso tipo di dati. Le colonne dei valori di input devono avere tutti lo stesso tipo di dati. |
|
TO_STRUCT(string,column[,string,column]*) | Crea una nuova colonna di tipo Struttura. Le colonne di input devono essere raggruppate come coppie chiave-valore. |
|
TO_ARRAY(column[,column]*) | Crea una nuova colonna come tipo di array. Le colonne di input devono avere tutte lo stesso tipo di dati. |
|
Gli operatori di flusso dati che supportano la creazione di espressioni e tipi di dati gerarchici possono utilizzare funzioni di ordine superiore.
Gli operatori supportati sono:
-
aggregato
-
Espressione
-
Filtro
-
Join
-
Cerca
-
Dividi
-
Pivot
Funzione | descrizione; | Esempio |
---|---|---|
TRANSFORM(column, lambda_function) | Prende un array e una funzione anonima e imposta un nuovo array applicando la funzione a ciascun elemento e assegnando il risultato all'array di output. | Per un array di input di numeri interi [1, 2, 3] , TRANSFORM(array, x -> x + 1) restituisce un nuovo array di valori [2, 3, 4] . |
TRANSFORM_KEYS(column, lambda_function) | Prende una mappa e una funzione con 2 argomenti (chiave e valore) e restituisce una mappa in cui le chiavi hanno il tipo del risultato della funzione lambda e i valori hanno il tipo dei valori della mappa delle colonne. | Per una mappa di input con chiavi interi e valori stringa di {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'} , TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) restituisce una nuova mappa di {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'} . |
TRANSFORM_VALUES(column, lambda_function) | Prende una mappa e una funzione con 2 argomenti (chiave e valore) e restituisce una mappa in cui i valori hanno il tipo del risultato delle funzioni lambda e i tasti hanno il tipo delle chiavi della mappa delle colonne. | Per una mappa di input con chiavi stringa e valori stringa {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'} , TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) restituisce una nuova mappa di {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'} . |
ARRAY_SORT(array(...), lambda_function) |
Solo l'operatore Espressione supporta Prende un array e ordina in base alla funzione specificata che accetta 2 argomenti. La funzione deve restituire -1, 0 o 1 a seconda che il primo elemento sia minore, uguale o maggiore del secondo elemento. Se la funzione viene omessa, l'array viene ordinato in ordine crescente. |
L'array restituito è: [1,5,6] |
È possibile duplicare le espressioni aggiunte a un operatore di espressione.
È possibile modificare l'ordine delle espressioni aggiunte a un operatore di espressione.
Operatore aggregato
Utilizzare l'operatore di aggregazione per eseguire calcoli quali la somma o il conteggio, su tutte le righe o su un gruppo di righe per creare nuovi attributi derivati.
Utilizzare il Builder delle espressioni per selezionare visivamente gli elementi per creare un'espressione nell'editor. È inoltre possibile scrivere manualmente un'espressione.
Il pannello Aggiungi espressione contiene due sezioni: Informazioni sull'espressione e Costruzione guidata espressione. I campi Informazioni sull'espressione consentono di specificare un nome e un tipo di dati per l'espressione. È inoltre possibile creare l'espressione da applicare a due o più attributi. Quando si utilizzano tipi di dati complessi, quali Mappa, Array e Struttura, che potrebbero avere livelli di tipi nidificati, è possibile scegliere di consentire al builder di rilevare il tipo di dati dall'espressione immessa. Quando si consente al builder di derivare il tipo di dati, è possibile visualizzare in anteprima e aggiornare il tipo di dati e convalidare l'espressione.
La sezione Costruzione guidata espressione elenca gli elementi per la creazione di un'espressione. Gli elementi che è possibile utilizzare in un'espressione includono attributi, parametri e funzioni in entrata. Fare doppio clic o trascinare un elemento dall'elenco per aggiungerlo all'editor per creare l'espressione oppure scrivere manualmente l'espressione. È possibile convalidare l'espressione prima di crearla.
Nel campo In entrata vengono visualizzati gli attributi dell'operatore a monte che entrano in questo operatore di espressione. Sotto l'elenco degli attributi è disponibile una casella di controllo che consente di applicare le regole di esclusione. Per escludere uno o più attributi in entrata dall'output di questa espressione, selezionare la casella di controllo Escludi attributi in entrata. Quindi utilizzare il menu per aggiungere gli attributi in entrata che si desidera escludere dall'output. A ogni attributo selezionato per l'esclusione viene applicata una regola di esclusione. È possibile escludere gli attributi solo quando si aggiunge l'espressione la prima volta. Quando si modifica l'espressione, la casella di controllo Escludi attributi in entrata non è disponibile.
I parametri sono i parametri di espressione che sono stati aggiunti al flusso di dati utilizzando il Builder delle condizioni (operatore filtro, join, lookup e split) o il Builder delle espressioni (operatore di espressione e aggregazione). Un parametro di espressione ha un nome, un tipo e un valore predefinito. Vedere Aggiunta di un parametro di espressione.
Le funzioni sono operazioni eseguite su argomenti passati alla funzione. Le funzioni calcolano, manipolano o estraggono i valori dei dati dagli argomenti. Di seguito è riportata una lista di funzioni disponibili per la creazione delle espressioni.
Funzione | descrizione; | Esempio |
---|---|---|
COUNT(value[, value]*) | Restituisce il numero di righe per le quali una o più espressioni fornite sono tutte non nulle. | COUNT(expr1) |
COUNT(*) | Restituisce il numero totale di righe recuperate, incluse le righe contenenti valori nulli. | COUNT(*) |
MAX(value) | Restituisce il valore massimo dell'argomento. | MAX(expr) |
MIN(value) | Restituisce il valore minimo dell'argomento. | MIN(expr) |
SUM(numeric) | Restituisce la somma calcolata in base ai valori di un gruppo. | SUM(expr1) |
AVG(numeric) | Restituisce la media dei valori numerici in un'espressione. | AVG(AGGREGATE_1.src1.attribute1) |
LISTAGG(column[, delimiter]) WITHIN GROUP (order_by_clause) | Concatena i valori della colonna di input con il delimitatore specificato per ogni gruppo in base alla clausola order. La colonna contiene i valori che si desidera concatenare insieme nel risultato. Il delimitatore separa i valori della colonna nel risultato. Se non viene fornito un delimitatore, viene utilizzato un carattere vuoto. order_by_clause determina l'ordine di restituzione dei valori concatenati. Questa funzione può essere utilizzata solo come aggregatore e può essere utilizzata con il raggruppamento o senza raggruppamento. Se si utilizza senza raggruppamento, il risultato è una singola riga. Se si utilizza un raggruppamento, la funzione restituisce una riga per ogni gruppo. | Si consideri una tabella con due colonne,
Esempio 1: senza raggruppamento
Esempio 2: Raggruppa per
|
Gli operatori di flusso dati che supportano la creazione di espressioni e tipi di dati gerarchici possono utilizzare funzioni di ordine superiore.
Gli operatori supportati sono:
-
aggregato
-
Espressione
-
Filtro
-
Join
-
Cerca
-
Dividi
-
Pivot
Funzione | descrizione; | Esempio |
---|---|---|
TRANSFORM(column, lambda_function) | Prende un array e una funzione anonima e imposta un nuovo array applicando la funzione a ciascun elemento e assegnando il risultato all'array di output. | Per un array di input di numeri interi [1, 2, 3] , TRANSFORM(array, x -> x + 1) restituisce un nuovo array di valori [2, 3, 4] . |
TRANSFORM_KEYS(column, lambda_function) | Prende una mappa e una funzione con 2 argomenti (chiave e valore) e restituisce una mappa in cui le chiavi hanno il tipo del risultato della funzione lambda e i valori hanno il tipo dei valori della mappa delle colonne. | Per una mappa di input con chiavi interi e valori stringa di {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'} , TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) restituisce una nuova mappa di {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'} . |
TRANSFORM_VALUES(column, lambda_function) | Prende una mappa e una funzione con 2 argomenti (chiave e valore) e restituisce una mappa in cui i valori hanno il tipo del risultato delle funzioni lambda e i tasti hanno il tipo delle chiavi della mappa delle colonne. | Per una mappa di input con chiavi stringa e valori stringa {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'} , TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) restituisce una nuova mappa di {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'} . |
ARRAY_SORT(array(...), lambda_function) |
Solo l'operatore Espressione supporta Prende un array e ordina in base alla funzione specificata che accetta 2 argomenti. La funzione deve restituire -1, 0 o 1 a seconda che il primo elemento sia minore, uguale o maggiore del secondo elemento. Se la funzione viene omessa, l'array viene ordinato in ordine crescente. |
L'array restituito è: [1,5,6] |
Operatore DISTINCT
Utilizzare l'operatore distinto per restituire righe distinte con valori univoci.
Operatore di ordinamento
Utilizzare l'operatore di ordinamento per eseguire l'ordinamento dei dati in ordine crescente o decrescente.
Quando si utilizza un operatore di ordinamento, si consiglia di applicare l'operatore di ordinamento dopo aver applicato altri operatori. Ciò garantisce che l'operatore di ordinamento rimanga immediatamente prima dell'operatore di destinazione, consentendo quindi l'inserimento dei dati nella destinazione in un ordine specifico.
Quando si utilizza un operatore di ordinamento, applicare l'operatore di ordinamento dopo altri operatori di modellazione e prima dell'operatore che richiede l'ordinamento dei dati.
Ad esempio, applicare l'operatore di ordinamento prima di un operatore di destinazione per inserire i dati nella destinazione in un ordinamento specifico.
Dopo aver aggiunto un operatore di ordinamento nell'area di creazione e averla collegata a un altro operatore, è possibile aggiungere una condizione di ordinamento.
Nel pannello Aggiungi condizione di ordinamento è possibile selezionare gli attributi da ordinare dai campi elencati oppure filtrare i nomi degli attributi utilizzando i pattern. Per i tipi di dati stringa, l'operazione di ordinamento si basa sull'ordine lessicografico.
Per aggiungere condizioni di ordinamento, procedere come segue.
- Nella scheda Dettagli, andare alla sezione Condizioni di ordinamento e fare clic su Aggiungi.
Nel pannello Aggiungi condizione di ordinamento vengono visualizzati tutti i campi degli attributi recuperati dalla tabella di origine.
- Nel pannello Aggiungi condizione di ordinamento selezionare l'attributo in base al quale ordinare i dati.
- Per filtrare gli attributi utilizzando pattern di nomi, immettere un pattern di nomi, ad esempio *CITY*.
- Per l'ordine di ordinamento, selezionare Crescente o Decrescente, quindi fare clic su Aggiungi.
Ogni condizione aggiunta viene visualizzata nell'elenco delle condizioni di ordinamento.
Nota
È possibile aggiungere più condizioni di ordinamento una alla volta. L'ordinamento viene eseguito in base all'ordine delle condizioni di ordinamento nell'elenco. Ad esempio, l'ordinamento viene eseguito in primo luogo in base alla prima condizione nell'elenco, quindi i dati ordinati vengono riordinati in base alla seconda condizione e così via.
Spostare le condizioni di ordinamento verso l'alto o verso il basso nell'elenco per assegnare la priorità all'ordinamento.
Lo spostamento delle condizioni di ordinamento verso l'alto o verso il basso consente di eseguire l'ordinamento in base a una condizione di ordinamento con priorità alta, quindi di riordinare i dati ordinati in base alla condizione successiva nell'elenco. Ad esempio, per ordinare prima per indirizzo e poi per codice postale, spostare la condizione di ordinamento con l'indirizzo in alto.
Per assegnare la priorità alle condizioni di ordinamento, procedere come segue.
Per modificare le condizioni di ordinamento:
È possibile eliminare le condizioni di ordinamento una per una oppure eseguire un'eliminazione di massa.
Per eliminare le condizioni di ordinamento:
- Nella scheda Dettagli, andare alla sezione Condizioni di ordinamento.
-
Per eliminare le condizioni di ordinamento una per una, fare clic sul menu Azioni (
) corrispondente alla condizione di ordinamento che si desidera eliminare.
- Per eliminare più condizioni di ordinamento, selezionare le caselle di controllo corrispondenti a ciascuna, quindi fare clic su Elimina nella parte superiore dell'elenco.
Operatore sindacale
Utilizzare l'operatore Union per eseguire un'operazione di unione tra due o più set di dati.
È possibile eseguire un'operazione di unione su un massimo di dieci operatori di origine. È necessario configurare almeno due input di origine. È possibile scegliere di eseguire l'operazione di unione abbinando i nomi degli attributi tra gli attributi di input di origine oppure abbinare gli attributi in base alla posizione degli attributi.
Considerare i due esempi di entità dati riportati di seguito. L'entità dati 1 è impostata come input principale. L'entità dati risultante mostra la modalità di combinazione dei dati dei due input durante un'operazione di unione per nome. L'entità dati risultante utilizza il nome attributo, l'ordine e il tipo di dati dell'entità dati di input principale.
Entità dati 1, input principale
Dipartimento | UBICAZIONE-ID | Magazzino |
---|---|---|
IT | 1.400 | San Francisco |
Spedizione | 1.500 | Southlake |
Contabilità | 1.700 | New Jersey |
Entità dati 2
Magazzino | UBICAZIONE-ID | Dipartimento |
---|---|---|
Denver | 1.600 | Vantaggi |
New York | 1.400 | Costruzione |
Entità dati risultante
Dipartimento | UBICAZIONE-ID | Magazzino |
---|---|---|
IT | 1.400 | San Francisco |
Spedizione | 1.500 | Southlake |
Contabilità | 1.700 | New Jersey |
Vantaggi | 1.600 | Denver |
Costruzione | 1.400 | New York |
Considerare i due esempi di entità dati riportati di seguito. L'entità dati 2 è impostata come input principale. L'entità dati risultante mostra come i dati dei due input vengono combinati durante un'operazione di unione per posizione. L'entità dati risultante utilizza il nome attributo, l'ordine e il tipo di dati dell'entità dati di input principale.
Entità dati 1
Dipartimento | UBICAZIONE-ID | Magazzino |
---|---|---|
IT | 1.400 | San Francisco |
Spedizione | 1.500 | Southlake |
Contabilità | 1.700 | New Jersey |
Entità dati 2, input principale
Magazzino | UBICAZIONE-ID | Dipartimento |
---|---|---|
Denver | 1.600 | Vantaggi |
New York | 1.400 | Costruzione |
Entità dati risultante
Magazzino | UBICAZIONE-ID | Dipartimento |
---|---|---|
Denver | 1.600 | Vantaggi |
New York | 1.400 | Costruzione |
IT | 1.400 | San Francisco |
Spedizione | 1.500 | Southlake |
Contabilità | 1.700 | New Jersey |
Operatore meno
Utilizzare l'operatore meno per confrontare due entità dati e restituire le righe presenti in un'entità ma non presenti nell'altra entità.
È possibile scegliere di conservare o eliminare le righe duplicate nei dati risultanti.
È possibile eseguire un'operazione meno solo su due operatori di origine. È possibile scegliere di eseguire l'operazione meno abbinando i nomi degli attributi tra gli attributi di input di origine oppure abbinare gli attributi in base alla loro posizione.
Considerare i due esempi di entità dati riportati di seguito. L'entità dati 1 è impostata come input principale. L'entità dati risultante mostra come i dati dei due input vengono sottratti durante un'operazione meno per nome. L'entità dati risultante utilizza il nome attributo, l'ordine e il tipo di dati dell'entità dati di input principale.
Entità dati 1, input principale
Dipartimento | UBICAZIONE-ID | Magazzino |
---|---|---|
IT | 1.400 | San Francisco |
Spedizione | 1.500 | Austin |
Contabilità | 1.700 | New Jersey |
Entità dati 2
Dipartimento | Magazzino | UBICAZIONE-ID |
---|---|---|
Vantaggi | Denver | 1.600 |
IT | San Francisco | 1.400 |
Entità dati risultante
Dipartimento | UBICAZIONE-ID | Magazzino |
---|---|---|
Spedizione | 1.500 | Austin |
Contabilità | 1.700 | New Jersey |
Considerare i due esempi di entità dati riportati di seguito. L'entità dati 2 è impostata come input principale. L'entità dati risultante mostra come i dati dei due input vengono sottratti durante un'operazione meno per posizione. L'entità dati risultante utilizza il nome attributo, l'ordine e il tipo di dati dell'entità dati di input principale.
Entità dati 1
Dipartimento | UBICAZIONE-ID | Magazzino |
---|---|---|
IT | 1.400 | San Francisco |
Spedizione | 1.500 | Austin |
Contabilità | 1.700 | New Jersey |
Entità dati 2, input principale
Nome-reparto | Posizione | Warehouse - Città |
---|---|---|
Vantaggi | 1.600 | Denver |
IT | 1.400 | San Francisco |
Entità dati risultante
Nome-reparto | Posizione | Warehouse - Città |
---|---|---|
Vantaggi | 1.600 | Denver |
Operatore intersezione
Utilizzare l'operatore di intersezione per confrontare due o più entità dati e restituire le righe presenti nelle entità connesse.
È possibile scegliere di conservare o eliminare le righe duplicate nei dati risultanti.
È possibile eseguire un'operazione di intersezione su due o più operatori di origine. È possibile scegliere di eseguire l'operazione abbinando i nomi degli attributi tra gli attributi di input di origine oppure abbinare gli attributi in base alla posizione degli attributi.
Considerare i due esempi di entità dati riportati di seguito. L'entità dati 1 è impostata come input principale. L'entità dati risultante mostra in che modo i dati dei due input vengono intersecati per nome attributo. L'entità dati risultante utilizza il nome attributo, l'ordine e il tipo di dati dell'entità dati di input principale.
Entità dati 1, input principale
Dipartimento | UBICAZIONE-ID | Magazzino |
---|---|---|
IT | 1.400 | San Francisco |
Spedizione | 1.500 | Austin |
Contabilità | 1.700 | New Jersey |
Entità dati 2
Dipartimento | Magazzino | UBICAZIONE-ID |
---|---|---|
Vantaggi | Denver | 1.600 |
IT | San Francisco | 1.400 |
Entità dati risultante
Dipartimento | UBICAZIONE-ID | Magazzino |
---|---|---|
IT | 1.400 | San Francisco |
Considerare i due esempi di entità dati riportati di seguito. L'entità dati 2 è impostata come input principale. L'entità dati risultante mostra in che modo i dati dei due input vengono intersecati in base alla posizione dell'attributo. L'entità dati risultante utilizza il nome attributo, l'ordine e il tipo di dati dell'entità dati di input principale.
Entità dati 1
Dipartimento | UBICAZIONE-ID | Magazzino |
---|---|---|
IT | 1.400 | San Francisco |
Spedizione | 1.500 | Austin |
Contabilità | 1.700 | New Jersey |
Entità dati 2, input principale
Nome-reparto | Posizione | Warehouse - Città |
---|---|---|
Vantaggi | 1.600 | Denver |
IT | 1.400 | San Francisco |
Entità dati risultante
Nome-reparto | Posizione | Warehouse - Città |
---|---|---|
IT | 1.400 | San Francisco |
Operatore frazionamento
Utilizzare l'operatore di divisione per dividere un'origine di dati di input in due o più porte di output in base a condizioni di divisione valutate in una sequenza.
Ogni condizione di divisione dispone di una porta di output. I dati che soddisfano una condizione vengono indirizzati alla porta di output corrispondente.
Per impostazione predefinita, un operatore frazionato viene configurato con la condizione Non abbinato, che è sempre disponibile nella sequenza come ultima condizione. Impossibile aggiungere la propria condizione alla condizione Senza corrispondenza. Non è inoltre possibile eliminare la condizione Non abbinata.
L'operatore valuta le condizioni una alla volta. Dopo che tutte le condizioni della sequenza sono state valutate, i dati che non soddisfano una condizione vengono indirizzati alla porta di output Senza corrispondenza.
Si supponga di disporre dell'entità dati BANK con gli attributi BANK_ID e BANK_NAME.
È possibile impostare due condizioni di divisione. La sequenza completa, inclusa la condizione Unmatched, è la seguente:
Porta di output condizione | Condizione |
---|---|
CONDITION1 | SPLIT_1.BANK.BANK_ID<102 |
CONDITION2 | SPLIT_1.BANK.BANK_ID<104 |
NON CORRISPONDENTI | La condizione UNMATCHED predefinita indirizza tutti i dati che non soddisfano le altre condizioni della sequenza alla porta di output UNMATCHED. |
Entità dati banca
L'entità dati ha quattro righe.
BANK_ID | BANK_NAME |
---|---|
101 | Una banca 101 |
102 | Banca B 102 |
103 | Banca C 103 |
104 | Banca D 104 |
Condition1 Output, prima condizione di corrispondenza
CONDITION1 restituisce una riga corrispondente.
BANK_ID | BANK_NAME |
---|---|
101 | Una banca 101 |
Condition2 Output, prima condizione di corrispondenza
CONDITION2 restituisce due righe corrispondenti (dalle righe non corrispondenti dopo CONDITION1).
BANK_ID | BANK_NAME |
---|---|
102 | Banca B 102 |
103 | Banca C 103 |
Output condizione non corrispondente, prima condizione corrispondente
La condizione UNMATCHED restituisce la riga rimanente.
BANK_ID | BANK_NAME |
---|---|
104 | Banca D 104 |
Condition1 Output, Tutte le condizioni di corrispondenza
CONDITION1 restituisce una riga corrispondente.
BANK_ID | BANK_NAME |
---|---|
101 | Una banca 101 |
Condition2 Output, Tutte le condizioni di corrispondenza
Tutti i dati vengono valutati da CONDITION2, restituendo tre righe corrispondenti.
BANK_ID | BANK_NAME |
---|---|
101 | Una banca 101 |
102 | Banca B 102 |
103 | Banca C 103 |
Output condizione non corrispondente, tutte le condizioni corrispondenti
La condizione UNMATCHED restituisce le righe che non soddisfano i criteri CONDITION1 e CONDITION2.
BANK_ID | BANK_NAME |
---|---|
104 | Banca D 104 |
Quando si aggiunge un operatore di divisione nell'area di creazione, per impostazione predefinita l'icona dell'operatore di divisione viene visualizzata come espansa, con la condizione di divisione Senza corrispondenza. La condizione Senza corrispondenza indirizza tutti i dati che non soddisfano le altre condizioni aggiunte alla sequenza.
Utilizzare la Costruzione guidata condizione per selezionare visivamente gli elementi da creare e aggiungere una condizione di divisione. È inoltre possibile immettere manualmente una condizione di divisione nell'editor.
È possibile aggiungere condizioni di frazionamento a una sequenza di condizioni esistente. Le condizioni di divisione vengono aggiunte alla fine della sequenza, prima della condizione Non corrispondente. Impossibile aggiungere la propria condizione alla condizione Senza corrispondenza.
Gli elementi che è possibile utilizzare in una condizione di divisione includono attributi, parametri e funzioni in entrata. È possibile fare doppio clic o trascinare un elemento dall'elenco per aggiungerlo all'editor per creare una condizione. È possibile convalidare la condizione prima di crearla.
Nel campo In entrata vengono visualizzati gli attributi della porta a monte. Ad esempio:
SPLIT_1.BANK.BANK_NAME='ABC Bank'
I parametri sono i parametri di espressione che sono stati aggiunti al flusso di dati utilizzando il Builder delle condizioni (operatore filtro, join, lookup e split) o il Builder delle espressioni (operatore di espressione e aggregazione). Un parametro di espressione ha un nome, un tipo e un valore predefinito. Vedere Aggiunta di un parametro di espressione.
Si supponga di creare un parametro VARCHAR
con il nome P_VARCHAR_NAME
e di impostare il valore predefinito su ABC BANK
. È quindi possibile utilizzare il parametro in una condizione di divisione come indicato di seguito.
SPLIT_1.BANK.BANK_NAME=$P_VARCHAR_NAME
Le funzioni sono le funzioni disponibili in Data Integration che è possibile utilizzare in una condizione. Le funzioni sono operazioni eseguite su argomenti passati alla funzione. Le funzioni calcolano, manipolano o estraggono i valori dei dati dagli argomenti.
Si supponga di creare un parametro VARCHAR
con il nome P_VARCHAR_LIKE
e di impostare il valore predefinito su B%
. È quindi possibile utilizzare il parametro in una condizione di divisione come indicato di seguito.
SPLIT_1.BANK.BANK_NAME LIKE $P_VARCHAR_LIKE
Di seguito è riportato un elenco di funzioni disponibili per l'aggiunta quando si creano le condizioni.
Funzione | descrizione; | Esempio |
---|---|---|
MD5(all data types) | Calcola un checksum MD5 del tipo di dati e restituisce un valore stringa. | MD5(column_name) |
SHA1(all data types) | Calcola un valore hash SHA-1 del tipo di dati e restituisce un valore stringa. | SHA1(column_name) |
SHA2(all data types, bitLength) | Calcola un valore hash SHA-2 del tipo di dati e restituisce un valore stringa. bitLength è un numero intero. | SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512) . |
ORA_HASH(expr, [max_bucket], [seed_value]) |
Calcola un valore hash per
Oracle applica la funzione hash alla combinazione di |
|
Funzione | descrizione; | Esempio |
---|---|---|
ABS(numeric) | Restituisce la potenza assoluta del valore numeric . | ABS(-1) |
CEIL(numeric) | Restituisce il numero intero minimo non maggiore del valore numeric | CEIL(-1,2) |
FLOOR(numeric) | Restituisce il numero intero più alto non maggiore del valore numeric . | FLOOR(-1,2) |
MOD(numeric1, numeric2) | Restituisce il resto dopo che numeric1 è diviso per numeric2 . | MOD(8,2) |
POWER(numeric1, numeric2) | Alza numeric1 alla potenza di numeric2 . | POWER(2,3) |
ROUND(numeric1, numeric2) | Restituisce numeric1 arrotondato alle posizioni decimali numeric2 . | ROUND(2.5,0) |
TRUNC(numeric1, numeric2) | Restituisce numeric1 troncato alle posizioni decimali numeric2 . | TRUNC(2.5,0) |
TO_NUMBER(expr[, format, locale]) | Converte un valore expr in un numero, in base al valore format e al valore locale facoltativo fornito. La versione locale predefinita è en-US . Tag lingua supportati.Pattern di formato supportati:
|
|
Funzione | descrizione; | Esempio |
---|---|---|
CURRENT_DATE |
Restituisce la data corrente. | CURRENT_DATE restituisce la data odierna, ad esempio 2023-05-26 |
CURRENT_TIMESTAMP |
Restituisce la data e l'ora correnti per il fuso orario della sessione. | CURRENT_TIMESTAMP restituisce la data odierna e l'ora corrente, ad esempio 2023-05-26 12:34:56
|
DATE_ADD(date, number_of_days) |
Restituisce la data number specificata dei giorni successivi al valore date specificato. |
DATE_ADD('2017-07-30', 1) restituisce 2017-07-31 |
DATE_FORMAT(expr, format[, locale]) |
Formatta un valore Pattern di formato data supportati:
|
|
DAYOFMONTH(date) |
Restituisce il giorno della data del mese. | DAYOFMONTH('2020-12-25') restituisce 25 |
DAYOFWEEK(date) |
Restituisce il giorno della data della settimana. | DAYOFWEEK('2020-12-25') restituisce 6 per venerdì. Negli Stati Uniti, la domenica è considerata 1, il lunedì è 2 e così via. |
DAYOFYEAR(date) |
Restituisce il giorno della data nell'anno. | DAYOFYEAR('2020-12-25') restituisce 360 |
WEEKOFYEAR(date) |
Restituisce la settimana della data nell'anno. |
|
HOUR(datetime) |
Restituisce il valore ora di dataora. | HOUR('2020-12-25 15:10:30') restituisce 15 |
LAST_DAY(date) |
Restituisce l'ultimo giorno del mese della data. | LAST_DAY('2020-12-25') restituisce 31 |
MINUTE(datetime) |
Restituisce il valore minuto della data/ora. | HOUR('2020-12-25 15:10:30') restituisce 10 |
MONTH(date) |
Restituisce il valore del mese della data. | MONTH('2020-06-25') restituisce 6 |
QUARTER(date) |
Restituisce il trimestre dell'anno in cui si trova la data. | QUARTER('2020-12-25') restituisce 4 |
SECOND(datetime) |
Restituisce il secondo valore della data/ora. | SECOND('2020-12-25 15:10:30') restituisce 30 |
TO_DATE(string, format_string[, localeStr]) |
Analizza l'espressione di stringa con l'espressione format_string in una data. Le impostazioni nazionali sono facoltative. L'impostazione predefinita è en-US . Tag lingua supportati.Nelle espressioni della pipeline,
|
|
TO_TIMESTAMP(expr, format_string[, localeStr]) |
Converte un valore expr di VARCHAR in un valore di TIMESTAMP, in base al valore format_string e al valore localeStr facoltativo fornito.Nelle espressioni della pipeline,
|
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') restituisce un oggetto TIMESTAMP che rappresenta 11am 10:10 Oct 11th, 2020 |
WEEK(date) |
Restituisce il valore della settimana della data. |
WEEK('2020-06-25') restituisce 4 |
YEAR(date) |
Restituisce il valore dell'anno della data. | YEAR('2020-06-25') restituisce 2020 |
ADD_MONTHS(date_expr, number_months) |
Restituisce la data successiva all'aggiunta del numero di mesi specificato alla data, all'indicatore orario o alla stringa specificata con un formato quale yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS . |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Restituisce il numero di mesi compresi tra Viene restituito un numero intero se entrambe le date sono lo stesso giorno del mese o se entrambe sono l'ultimo giorno dei rispettivi mesi. In caso contrario, la differenza viene calcolata in base a 31 giorni al mese. |
|
FROM_UTC_TIMESTAMP(time_stamp, time_zone) |
Interpreta una data, un indicatore orario o una stringa come ora UTC e la converte in un indicatore orario nel fuso orario specificato. Per la stringa, utilizzare un formato quale: Il formato del fuso orario è un ID di zona basato sull'area (ad esempio, 'area/città' come 'Asia/Seoul' o un offset del fuso orario (ad esempio, UTC+02). |
FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') restituisce 2017-07-14 03:40:00.0 |
TO_UTC_TIMESTAMP(time_stamp, time_zone) |
Converte una data, un indicatore orario o una stringa nel fuso orario specificato in un indicatore orario UTC. Per la stringa, utilizzare un formato quale: Il formato del fuso orario è un ID di zona basato sull'area (ad esempio, 'area/città' come 'Asia/Seoul') o un offset del fuso orario (ad esempio, UTC+02). |
TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') restituisce 2017-07-14 01:40:00.0
|
FROM_UNIXTIME(unix_time[, fmt]) |
Converte l'ora o l'epoca Unix specificata in una stringa che rappresenta l'indicatore orario di quel momento nel fuso orario di sistema corrente e nel formato specificato. Nota: l'ora Unix è il numero di secondi trascorsi dal 1° gennaio 1970 alle 00:00:00 UTC. Se |
Il fuso orario predefinito è PST negli esempi |
UNIX_TIMESTAMP([time_expr[, fmt]]) |
Converte l'ora corrente o specificata in un indicatore orario Unix in secondi.
Se Se |
Il fuso orario predefinito è PST in questo esempio |
INTERVAL 'year' YEAR[(year_precision)] |
Restituisce un periodo di tempo in anni. year_precision è il numero di cifre nel campo anno. È compreso tra 0 e 9. Se year_precision viene omesso, l'impostazione predefinita è 2 (deve essere inferiore a 100 anni). |
|
INTERVAL 'year month' YEAR[(year_precision)] TO MONTH |
Restituisce un periodo di tempo in anni e mesi. Consente di memorizzare un periodo di tempo utilizzando i campi anno e mese. year_precision è il numero di cifre nel campo anno. È compreso tra 0 e 9. Se year_precision viene omesso, l'impostazione predefinita è 2 (deve essere inferiore a 100 anni). |
INTERVAL '100-5' YEAR(3) TO MONTH restituisce un intervallo di 100 anni, 5 mesi. È necessario specificare la precisione dell'anno iniziale pari a 3. |
INTERVAL 'month' MONTH[(month_precision)] |
Restituisce un periodo di tempo in mesi. month_precision è il numero di cifre nel campo mese. È compreso tra 0 e 9. Se month_precision viene omesso, l'impostazione predefinita è 2 (deve essere inferiore a 100 anni). |
INTERVAL '200' MONTH(3) restituisce un intervallo di 200 mesi. È necessario specificare la precisione del mese pari a 3. |
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)] |
Restituisce un periodo di tempo in termini di giorni, ore, minuti e secondi. day_precision è il numero di cifre nel campo giorno. È compreso tra 0 e 9. Il valore predefinito è 2. fractional_seconds_precision è il numero di cifre nella parte frazionaria del secondo valore nel campo time; è compreso tra 0 e 9. |
INTERVAL '11 10:09:08.555' DAY TO SECOND(3) restituisce un intervallo di 11 giorni, 10 ore, 09 minuti, 08 secondi e 555 millesimi di secondo |
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)] |
Restituisce un periodo di tempo in termini di giorni, ore e minuti. day_precision è il numero di cifre nel campo giorno. È compreso tra 0 e 9. Il valore predefinito è 2. minute_precision è il numero di cifre nel campo minuto, con un intervallo compreso tra 0 e 2. Il valore predefinito è 2. |
INTERVAL '11 10:09' DAY TO MINUTE restituisce un intervallo di 11 giorni, 10 ore e 09 minuti |
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)] |
Restituisce un periodo di tempo in termini di giorni e ore. day_precision è il numero di cifre nel campo giorno. È compreso tra 0 e 9. Il valore predefinito è 2. hour_precision è il numero di cifre nel campo ora; è compreso tra 0 e 2. Il valore predefinito è 2. |
INTERVAL '100 10' DAY(3) TO HOUR restituisce un intervallo di 100 giorni e 10 ore |
INTERVAL 'day' DAY[(day_precision)] |
Restituisce un periodo di tempo in termini di giorni. day_precision è il numero di cifre nel campo giorno. È compreso tra 0 e 9. Il valore predefinito è 2. |
INTERVAL '999' DAY(3) restituisce un intervallo di 999 giorni |
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)] |
Restituisce un periodo di tempo in termini di ore, minuti e secondi. hour_precision è il numero di cifre nel campo ora; è compreso tra 0 e 2. Il valore predefinito è 2. fractional_seconds_precision è il numero di cifre nella parte frazionaria del secondo valore nel campo time; è compreso tra 0 e 9. |
INTERVAL '09:08:07.6666666' HOUR TO SECOND(7) restituisce un intervallo di 9 ore, 08 minuti e 7,66666666 secondi |
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)] |
Restituisce un periodo di tempo in termini di ore e minuti. hour_precision è il numero di cifre nel campo ora; è compreso tra 0 e 2. Il valore predefinito è 2. minute_precision è il numero di cifre nel campo minuto, con un intervallo compreso tra 0 e 2. Il valore predefinito è 2. |
INTERVAL '09:30' HOUR TO MINUTE restituisce un intervallo di 9 ore e 30 minuti |
INTERVAL 'hour' HOUR[(hour_precision)] |
Restituisce un periodo di tempo in termini di ore. hour_precision è il numero di cifre nel campo ora; è compreso tra 0 e 2. Il valore predefinito è 2. |
INTERVAL '40' HOUR restituisce un intervallo di 40 ore |
INTERVAL 'minute' MINUTE[(minute_precision)] |
Restituisce un periodo di tempo in termini di minuti. minute_precision è il numero di cifre nel campo minuto, con un intervallo compreso tra 0 e 2. Il valore predefinito è 2. |
INTERVAL '15' MINUTE restituisce un intervallo di 15 minuti |
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)] |
Restituisce un periodo di tempo in termini di minuti e secondi. minute_precision è il numero di cifre nel campo minuto, con un intervallo compreso tra 0 e 2. Il valore predefinito è 2. fractional_seconds_precision è il numero di cifre nella parte frazionaria del secondo valore nel campo time; è compreso tra 0 e 9. |
INTERVAL '15:30' MINUTE TO SECOND restituisce un intervallo di 15 minuti e 30 secondi |
INTERVAL 'second' SECOND[(fractional_seconds_precision)] |
Restituisce un periodo di tempo in termini di secondi. fractional_seconds_precision è il numero di cifre nella parte frazionaria del campo secondo; è compreso tra 0 e 9. Il valore predefinito è 3. |
INTERVAL '15.678' SECOND restituisce un intervallo di 15,678 secondi |
Funzione | descrizione; | Esempio |
---|---|---|
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) |
Restituisce il valore valutato nella riga corrispondente alla prima riga del frame della finestra. | FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) restituisce il primo valore di BANK_ID in una finestra in cui le righe vengono calcolate come riga corrente e 1 riga dopo tale riga, partizionata per BANK_ID e in ordine crescente per BANK_NAME . |
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Restituisce il valore valutato alla riga in corrispondenza di un determinato offset prima della riga corrente all'interno della partizione. In assenza di tale riga, viene restituito il valore predefinito. L'offset e il valore predefinito vengono valutati rispetto alla riga corrente. Se omesso, l'offset viene impostato su 1 per impostazione predefinita e su NULL. | LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) restituisce il valore di BANK_ID dalla seconda riga prima della riga corrente, partizionato da BANK_ID e in ordine decrescente di BANK_NAME . In assenza di tale valore, viene restituito hello . |
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) |
Restituisce il valore valutato nella riga che corrisponde all'ultima riga del frame della finestra. | LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) restituisce l'ultimo valore di BANK_ID in una finestra in cui le righe vengono calcolate come riga corrente e 1 riga dopo tale riga, partizionata per BANK_ID e in ordine crescente per BANK_NAME . |
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Restituisce il valore valutato alla riga in corrispondenza di un determinato offset dopo la riga corrente all'interno della partizione. In assenza di tale riga, viene restituito il valore predefinito. L'offset e il valore predefinito vengono valutati rispetto alla riga corrente. Se omesso, l'offset viene impostato su 1 per impostazione predefinita e su NULL. | LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) restituisce il valore di BANK_ID dalla seconda riga dopo la riga corrente, partizionato da BANK_ID e in ordine crescente da BANK_NAME . In assenza di tale valore, viene restituito hello . |
RANK() OVER([ partition_clause ] order_by_clause) |
Restituisce la classificazione della riga corrente con interruzioni, contando da 1. | RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) restituisce la classificazione di ogni riga all'interno del gruppo di partizioni di BANK_ID , in ordine crescente di BANK_NAME . |
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) |
Restituisce il numero univoco della riga corrente all'interno della partizione, contando da 1. | ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) restituisce il numero di riga univoco di ogni riga all'interno del gruppo di partizioni di BANK_ID , in ordine crescente di BANK_NAME . |
Funzioni | descrizione; | Esempio |
---|---|---|
CAST(value AS type) | Restituisce il valore specificato nel tipo specificato. | CAST("10" AS INT) restituisce 10 |
CONCAT(string, string) | Restituisce i valori combinati di stringhe o colonne. | CONCAT('Oracle','SQL') restituisce OracleSQL |
CONCAT_WS(separator, expression1, expression2, expression3,...) |
Restituisce i valori combinati di stringhe o colonne utilizzando il separatore specificato tra le stringhe o le colonne. È necessario un separatore e deve essere una stringa. È necessario fornire almeno un'espressione dopo il separatore. Ad esempio: |
CONCAT_WS('-', 'Hello', 'Oracle') restituisce Hello-Oracle
Se un elemento figlio della funzione è un array, l'array viene appiattito:
|
INITCAP(string) | Restituisce la stringa con la prima lettera in ogni parola maiuscola, mentre tutte le altre lettere sono minuscole e ogni parola è delimitata da uno spazio vuoto. | INITCAP('oRACLE sql') restituisce Oracle Sql |
INSTR(string, substring[start_position]) | Restituisce l'indice (basato su 1) della prima occorrenza di substring in string . | INSTR('OracleSQL', 'SQL') restituisce 7 |
LOWER(string) | Restituisce la stringa con tutte le lettere modificate in minuscolo. | LOWER('ORACLE') restituisce oracle |
LENGTH(string) | Restituisce la lunghezza del carattere della stringa o il numero di byte di dati binari. La lunghezza della stringa include gli spazi finali. | LENGTH('Oracle') restituisce 6 |
LTRIM(string) | Restituisce la stringa con gli spazi iniziali rimossi da sinistra. | LTRIM(' Oracle') |
NVL(expr1, epxr2) | Restituisce l'argomento non nullo. | NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID()) |
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx]) | Cerca ed estrae la stringa che corrisponde a un pattern di espressione regolare dalla stringa di input. Se viene fornito l'indice di gruppo di acquisizione facoltativo, la funzione estrae il gruppo specifico. |
REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) restituisce 22 |
REPLACE(string, search, replacement) | Sostituisce tutte le occorrenze di search con replacement .Se Se | REPLACE('ABCabc', 'abc', 'DEF') restituisce ABCDEF |
RTRIM(string) | Restituisce la stringa con gli spazi iniziali rimossi da destra. | RTRIM('Oracle ') |
SUBSTRING(string, position[, substring_length]) | Restituisce la sottostringa che inizia in posizione. | SUBSTRING('Oracle SQL' FROM 2 FOR 3) restituisce rac |
Per i numeri, TO_CHAR(expr) e per le date TO_CHAR(expr, format[, locale]) | Converte numeri e date in stringhe. Per i numeri non è richiesto alcun formato. Per le date, utilizzare lo stesso formato di DATE_FORMAT descritto in Funzioni di data e ora. La versione locale predefinita è en-US . Vedere i tag di lingua supportati.Nelle espressioni della pipeline,
| Esempio numerico: Esempio di data: |
UPPER(string) | Restituisce una stringa con tutte le lettere modificate in maiuscolo. | UPPER('oracle') restituisce ORACLE |
LPAD(str, len[, pad]) | Restituisce una stringa riempita a sinistra con caratteri specificati fino a una certa lunghezza. Se il carattere pad viene omesso, il valore predefinito è uno spazio. | LPAD('ABC', 5, '*') restituisce '**ABC' |
RPAD(str, len[, pad]) | Restituisce una stringa riempita a destra con i caratteri specificati fino a una certa lunghezza. Se il carattere pad viene omesso, il valore predefinito è uno spazio. | RPAD('XYZ', 6, '+' ) returns 'XYZ+++' |
Funzione | descrizione; | Esempio |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Restituisce il valore per il quale viene soddisfatta una condizione. | CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END restituisce ABC se 1> 0 , altrimenti restituisce XYZ |
AND | L'operatore AND logico. Restituisce true se entrambi gli operandi sono true, altrimenti restituisce false. | (x = 10 AND y = 20) restituisce "true" se x è uguale a 10 e y è uguale a 20. Se uno dei due non è vero, restituisce "falso" |
OR | Operatore OR logico. Restituisce true se uno degli operandi è true o entrambi sono true, altrimenti restituisce false. | (x = 10 OR y = 20) restituisce "false" se x non è uguale a 10 e anche y non è uguale a 20. Se uno dei due è vero, allora restituisce "vero" |
NOT | L'operatore NOT logico. | |
LIKE | Esegue la corrispondenza dei pattern di stringa, indipendentemente dal fatto che string1 corrisponda al pattern in string2. | |
= | Test per l'uguaglianza. Restituisce true se expr1 è uguale a expr2, altrimenti restituisce false. | x = 10 restituisce "true" quando il valore di x è 10, altrimenti restituisce "false" |
!= | Test per la disuguaglianza. Restituisce true se expr1 non è uguale a expr2, altrimenti restituisce false. | x != 10 restituisce "false" se il valore di x è 10, altrimenti restituisce "true" |
> | Test per un'espressione maggiore di. Restituisce true se expr1 è maggiore di expr2. | x > 10 restituisce "true" se il valore di x è maggiore di 10, altrimenti restituisce "false" |
>= | Test per un'espressione maggiore o uguale a. Restituisce true se expr1 è maggiore o uguale a expr2. | x > =10 restituisce "true" se il valore di x è maggiore o uguale a 10, altrimenti restituisce "false" |
< | Test per un'espressione minore di. Restituisce true se expr1 è minore di expr2. | x < 10 restituisce "true" se il valore di x è minore di 10, altrimenti restituisce "false" |
<= | Test per un'espressione minore o uguale a. Restituisce true se expr1 è minore o uguale a expr2. | x <= 10 restituisce "true" se il valore di x è minore di 10, altrimenti restituisce "false" |
|| | Concatena due stringhe. | 'XYZ' || 'hello' restituisce 'XYZhello' |
BETWEEN | Valuta un intervallo. | FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007 |
IN | Verifica se un'espressione corrisponde a una lista di valori. | FILTER_2.ORDERS.ORDER_ID IN (1003, 1007) |
Funzione | descrizione; | Esempio |
---|---|---|
NUMERIC_ID() | Genera un identificativo univoco universale che è un numero a 64 bit per ogni riga. | NUMERIC_ID() restituisce, ad esempio, 3458761969522180096 e 3458762008176885761 |
ROWID() | Genera numeri a 64 bit in aumento monotono. | ROWID() restituisce, ad esempio, 0 , 1 , 2 e così via |
UUID() | Genera un identificativo univoco universale che è una stringa a 128 bit per ogni riga. | UUID() restituisce, ad esempio, 20d45c2f-0d56-4356-8910-162f4f40fb6d |
MONOTONICALLY_INCREASING_ID() |
Genera numeri interi a 64 bit univoci e monotoni che non sono numeri consecutivi. | MONOTONICALLY_INCREASING_ID() restituisce, ad esempio, 8589934592 e 25769803776 |
Funzione | descrizione; | Esempio |
---|---|---|
COALESCE(value, value [, value]*) | Restituisce il primo argomento non nullo, se esistente, altrimenti restituisce un valore nullo. | COALESCE(NULL, 1, NULL) restituisce 1 |
NULLIF(value, value) | Restituisce un valore nullo se i due valori sono uguali, altrimenti restituisce il primo valore. | NULLIF('ABC','XYZ') restituisce ABC |
Funzione | descrizione; | Esempio |
---|---|---|
SCHEMA_OF_JSON(string) | Analizza una stringa JSON e inserisce lo schema in formato DDL. |
|
FROM_JSON(column, string) | Analizza una colonna contenente una stringa JSON in uno dei tipi seguenti, con lo schema specificato.
|
|
TO_JSON(column) | Converte una colonna contenente un tipo Struct o Array of Structs o Map o Array of Map in una stringa JSON. | TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) restituisce una stringa JSON {"s1":[1,2,3],"s2":{"key":"value"}} |
TO_MAP(string,column[,string,column]*) | Crea una nuova colonna di tipo Mappa. Le colonne di input devono essere raggruppate come coppie chiave-valore. Le colonne chiave di input non possono essere nulle e devono avere tutti lo stesso tipo di dati. Le colonne dei valori di input devono avere tutti lo stesso tipo di dati. |
|
TO_STRUCT(string,column[,string,column]*) | Crea una nuova colonna di tipo Struttura. Le colonne di input devono essere raggruppate come coppie chiave-valore. |
|
TO_ARRAY(column[,column]*) | Crea una nuova colonna come tipo di array. Le colonne di input devono avere tutte lo stesso tipo di dati. |
|
Gli operatori di flusso dati che supportano la creazione di espressioni e tipi di dati gerarchici possono utilizzare funzioni di ordine superiore.
Gli operatori supportati sono:
-
aggregato
-
Espressione
-
Filtro
-
Join
-
Cerca
-
Dividi
-
Pivot
Funzione | descrizione; | Esempio |
---|---|---|
TRANSFORM(column, lambda_function) | Prende un array e una funzione anonima e imposta un nuovo array applicando la funzione a ciascun elemento e assegnando il risultato all'array di output. | Per un array di input di numeri interi [1, 2, 3] , TRANSFORM(array, x -> x + 1) restituisce un nuovo array di valori [2, 3, 4] . |
TRANSFORM_KEYS(column, lambda_function) | Prende una mappa e una funzione con 2 argomenti (chiave e valore) e restituisce una mappa in cui le chiavi hanno il tipo del risultato della funzione lambda e i valori hanno il tipo dei valori della mappa delle colonne. | Per una mappa di input con chiavi interi e valori stringa di {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'} , TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) restituisce una nuova mappa di {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'} . |
TRANSFORM_VALUES(column, lambda_function) | Prende una mappa e una funzione con 2 argomenti (chiave e valore) e restituisce una mappa in cui i valori hanno il tipo del risultato delle funzioni lambda e i tasti hanno il tipo delle chiavi della mappa delle colonne. | Per una mappa di input con chiavi stringa e valori stringa {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'} , TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) restituisce una nuova mappa di {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'} . |
ARRAY_SORT(array(...), lambda_function) |
Solo l'operatore Espressione supporta Prende un array e ordina in base alla funzione specificata che accetta 2 argomenti. La funzione deve restituire -1, 0 o 1 a seconda che il primo elemento sia minore, uguale o maggiore del secondo elemento. Se la funzione viene omessa, l'array viene ordinato in ordine crescente. |
L'array restituito è: [1,5,6] |
È possibile modificare qualsiasi condizione di frazionamento ad eccezione della condizione Non corrispondente.
È possibile spostare una condizione di divisione verso l'alto o verso il basso nella sequenza. Impossibile spostare solo la condizione Non abbinata.
È possibile eliminare qualsiasi condizione di frazionamento ad eccezione della condizione Non corrispondente.
Operatore pivot
L'operatore pivot consente di acquisire valori di riga univoci da un attributo in un'origine di input e di eseguire il pivot dei valori in più attributi nell'output.
Utilizzando l'input di più righe, l'operazione pivot esegue una trasformazione basata su espressioni di funzione di aggregazione e sui valori di un attributo specificato come chiave pivot. Il risultato di un'operazione pivot è un output con pivot o riordinamento di righe e attributi.
Il numero di righe nell'output si basa sulla selezione degli attributi in base ai quali eseguire il raggruppamento.
- Se si specificano uno o più attributi per i quali eseguire il raggruppamento, le righe in entrata con lo stesso valore di raggruppamento per attributo vengono raggruppate in una riga. Ad esempio, se si specifica un attributo group by con quattro valori univoci, i dati in entrata vengono trasformati e raggruppati in quattro righe nell'output.
- Se non si specifica alcun attributo in base al quale eseguire il raggruppamento, tutti i dati in entrata vengono trasformati in una singola riga di output.
Il numero di attributi nell'output è:
- In base al numero di attributi selezionati per il raggruppamento
- Un multiplo del numero di valori selezionati nella chiave pivot
- Risultato del numero di attributi trasformati dalle espressioni della funzione di aggregazione
Ad esempio, se si seleziona un attributo Group By e tre valori di chiave pivot e si aggiunge un'espressione che trasforma due attributi, il numero di attributi nell'output è:
1 + (3 * 2)
Il numero totale di attributi nell'output pivot risultante viene calcolato come segue:
Number of group by attributes + (Number of pivot key values * Number of attributes that are transformed from expressions)
I nomi dei nuovi attributi nell'output derivano da un pattern aggiunto per gli attributi di destinazione quando si creano le espressioni.
Le funzioni di aggregazione utilizzate con un operatore pivot determinano i valori pivot nell'output. Se non vengono trovati dati, viene inserito un valore nullo dove è previsto un valore con pivot.
Si consideri l'entità dati PRODUCT_SALES con gli attributi STORE, PRODUCT e SALES. L'entità dati ha cinque righe. Si desidera creare un pivot sull'attributo PRODUCT con una funzione SUM aggregata in SALES.
Si specifica di raggruppare le righe con pivot in base all'attributo STORE. Ogni valore STORE univoco diventa una riga nell'output risultante. Le righe di input con lo stesso valore Group By vengono raggruppate nella stessa riga nell'output con pivot. Se non si specifica un attributo Group By, tutte le righe di input vengono trasformate in una singola riga nell'output risultante.
È possibile specificare PRODUCT come chiave pivot e selezionare tutti e tre i valori per eseguire il pivot nei nuovi attributi nell'output risultante.
L'espressione della funzione SUM aggregata in SALES è:
SUM(PIVOT_1_1.PRODUCT_SALES.SALES)
Il pattern per gli attributi di destinazione è:
%PIVOT_KEY_VALUE%
Entità dati PRODUCT_SALES
STORE | PRODOTTO | SALES |
---|---|---|
Negozio AB | Televisione | 2 |
Negozio AB | Televisione | 4 |
Paese - Negozio | Televisione | 6 |
Paese - Negozio | Frigorifero | 8 |
Negozio elettronico | Macchina per il caffè | 10 |
Output pivot: Raggruppa per negozio, prodotto chiave pivot
STORE | TELEVISIONE | FRIGORIFERO | MACCHINA PER IL CAFFÈ |
---|---|---|---|
Negozio AB | 6 | - | - |
Paese - Negozio | 6 | 8 | - |
Negozio elettronico | - | - | 10 |
Output pivot: senza raggruppamento per, prodotto chiave pivot
TELEVISIONE | FRIGORIFERO | MACCHINA PER IL CAFFÈ |
---|---|---|
12 | 8 | 10 |
L'operatore pivot esegue una trasformazione utilizzando una o più espressioni di funzione di aggregazione su uno o più valori di un attributo specificato come chiave pivot.
È possibile scegliere di raggruppare le righe con pivot in una singola riga o selezionare gli attributi per creare più righe di output in base allo stesso valore di raggruppamento.
Per un operatore pivot sono necessarie una o più espressioni di funzione di aggregazione.
Con l'operatore pivot selezionato nello sfondo del flusso di dati, in Espressioni nel pannello delle proprietà, fare clic su Aggiungi espressione.
Nel pannello Aggiungi espressione, immettere un nome per l'espressione nel campo Identificativo oppure lasciare il nome così com'è.
(Facoltativo) Per utilizzare un pattern per applicare un'espressione a più attributi di origine, selezionare Consenti selezione in blocco.
Si supponga, ad esempio, di disporre di due attributi DISCOUNT_ nel set di dati (DISCOUNT_VALUE e DISCOUNT_RATE) e di voler applicare la funzione
MAX
a entrambi.In Attributi di origine, selezionare Pattern e fare clic su Aggiungi pattern.
Nel pannello Aggiungi pattern di origine aggiungere un pattern per selezionare un gruppo di attributi di origine con nomi che iniziano con DISCOUNT_. Ad esempio, immettere
DISCOUNT*
e fare clic su Aggiungi. Quindi, selezionare il tipo di dati.In Attributi di destinazione utilizzare un pattern per i nomi degli attributi di output risultanti.
Per impostazione predefinita, il pattern
%MACRO_INPUT%_%PIVOT_KEY_VALUE%
è già stato inserito automaticamente.%MACRO_INPUT%
corrisponde ai nomi degli attributi delle origini selezionati dal pattern aggiunto.%PIVOT_KEY_VALUE%
corrisponde ai valori selezionati nella chiave pivot.Ad esempio, se
%PIVOT_KEY_VALUE%
indica TELEVISION e%MACRO_INPUT%
indica DISCOUNT_VALUE e DISCOUNT_RATE, nell'output gli attributi pivot sono<pivot_name>.<expression_name>.DISCOUNT_VALUE_TELEVISION
e<pivot_name>.<expression_name>.DISCOUNT_RATE_TELEVISION
.- È possibile mantenere la selezione Usa tipi di dati attributo di origine. In caso contrario, in Tipo di dati espressione, selezionare il Tipo di dati e completare i campi corrispondenti al tipo selezionato.
Se non è stata selezionata l'opzione Consenti selezione in blocco, in Attributi di destinazione utilizzare un pattern per i nomi degli attributi di output risultanti.
Per impostazione predefinita, il pattern
%PIVOT_KEY_VALUE%
è già stato inserito automaticamente.%PIVOT_KEY_VALUE%
corrisponde ai valori selezionati nella chiave pivot.Ad esempio, se
%PIVOT_KEY_VALUE%
indica TELEVISION e TELEPHONE, nell'output gli attributi pivot sono<pivot_name>.<expression_name>.TELEVISION
e<pivot_name>.<expression_name>.TELEPHONE
.In Tipo di dati espressione, selezionare il tipo di dati e completare i campi corrispondenti al tipo selezionato.
Nella sezione Costruzione guidata espressione fare doppio clic o trascinare gli attributi, i parametri e le funzioni di aggregazione in entrata da aggiungere all'editor per creare l'espressione. È inoltre possibile scrivere manualmente l'espressione e convalidarla.
La tabella seguente mostra la lista delle funzioni di aggregazione disponibili per la creazione di espressioni pivot.
Funzione descrizione; Esempio COUNT(value[, value]*)
Restituisce il numero di righe per le quali una o più espressioni fornite sono tutte non nulle. COUNT(expr1)
COUNT(*)
Restituisce il numero totale di righe recuperate, incluse le righe contenenti valori nulli. COUNT(*)
MAX(value)
Restituisce il valore massimo dell'argomento. MAX(expr)
MIN(value)
Restituisce il valore minimo dell'argomento. MIN(expr)
SUM(numeric)
Restituisce la somma calcolata in base ai valori di un gruppo. SUM(expr1)
È inoltre possibile utilizzare funzioni di ordine superiore (trasformazione) in un'espressione pivot.
Per creare un'espressione pivot, specificare l'attributo o gli attributi e la funzione di aggregazione.
Se è stata selezionata l'opzione Consenti selezione in blocco, utilizzare
%MACRO_INPUT%
nell'espressione per indicare gli attributi su cui deve essere applicata la funzione.Ad esempio, se si utilizza il pattern
DISCOUNT*
per trovare una corrispondenza tra gli attributi di origineDISCOUNT_RATE
eDISCOUNT_VALUE
, è possibile specificare una funzione di aggregazione, ad esempioSUM(numeric)
, per applicare la funzione a tutti gli attributi che corrispondono al pattern.%MACRO_INPUT%
sostituisce il segnapostonumeric
nella funzione:SUM(%MACRO_INPUT%)
Se non è stata selezionata l'opzione Consenti selezione in blocco, specificare l'attributo nella funzione.
Ad esempio, l'entità dati è PRODUCT_SALES e si desidera utilizzare una funzione SUM aggregata nell'attributo SALES. È possibile specificare la funzione, ad esempio
SUM(numeric)
, sostituendo il segnapostonumeric
nella funzione con il nome dell'attributo:SUM(PIVOT_1_1.PRODUCT_SALES.SALES)
È possibile utilizzare un parametro di espressione per il nome della funzione di aggregazione nell'espressione pivot. Un parametro di espressione ha un nome, un tipo e un valore predefinito.
Ad esempio, il parametro di espressione
P_VARCHAR
ha il tipoVARCHAR
eMIN
come valore predefinito. È possibile specificare la funzione di aggregazione come indicato di seguito.$P_VARCHAR(%MACRO_INPUT%)
$P_VARCHAR(PIVOT_1_1.PRODUCT_SALES.SALES)
Nel pannello Aggiungi espressione, fare clic su Aggiungi.
Operatore di ricerca
L'operatore di ricerca esegue una query e una trasformazione utilizzando una condizione di ricerca e un input da due origini, un'origine di input primaria e un'origine di input di ricerca.
L'operazione di query utilizza la condizione e un valore nell'input principale per trovare le righe nell'origine di ricerca. La trasformazione aggiunge gli attributi dall'origine di ricerca all'origine principale.
È possibile specificare l'azione da eseguire quando la query di ricerca restituisce più righe e nessuna riga. Ad esempio, è possibile specificare che l'azione consiste nel saltare le righe non corrispondenti e nel restituire qualsiasi riga corrispondente quando sono presenti più righe corrispondenti.
L'output risultante è una combinazione di entrambe le origini di input in base alla condizione di ricerca, un valore nell'input principale e le azioni preferite da eseguire. L'input primario determina l'ordine degli attributi e delle righe nell'output, con gli attributi dell'input primario posizionati prima degli attributi dell'input di ricerca.
Prendere in considerazione due entità dati di origine in un flusso di dati. L'entità dati 1 (PAYMENTS) è impostata come input principale. L'entità dati 2 (CUSTOMERS) è impostata come input di ricerca. La condizione di ricerca è impostata come:
LOOKUP_1_1.PAYMENTS.CUSTOMER_ID = LOOKUP_1_2.CUSTOMERS.CUSTOMER_ID
L'output di ricerca risultante mostra come i dati dei due input vengono combinati e trasformati. Gli attributi dell'origine di ricerca vengono aggiunti agli attributi dell'origine principale, con i seguenti comportamenti:
- Se l'operazione non trova un record corrispondente per un valore nell'origine di ricerca, il record viene restituito con un valore nullo inserito per gli attributi di ricerca. Ad esempio, non sono stati trovati record corrispondenti per i valori CUSTOMER_ID 103, 104 e 105. Pertanto, nell'output risultante, null viene popolato negli attributi aggiunti CUSTOMER_ID e NAME.
- Se l'operazione trova più record corrispondenti per un valore nell'origine di ricerca, viene restituito qualsiasi record corrispondente.
Entità dati 1, origine input principale
PAYMENT_ID | CUSTOMER_ID | IMPORTO |
---|---|---|
1 | 101 | 2.500 |
2 | 102 | 1.110 |
3 | 103 | 500 |
4 | 104 | 400 |
5 | 105 | 150 |
6 | 102 | 450 |
Entità dati 2, origine input ricerca
CUSTOMER_ID | NAME |
---|---|
101 | Pietro |
102 | Paul |
106 | provincia di Mary |
102 | Pauline |
Output ricerca
PAYMENT_ID | CUSTOMER_ID | IMPORTO | CUSTOMER_ID | NAME |
---|---|---|---|---|
1 | 101 | 2.500 | 101 | Pietro |
2 | 102 | 1.110 | 102 | Paul |
3 | 103 | 500 | nullo | nullo |
4 | 104 | 400 | nullo | nullo |
5 | 105 | 150 | nullo | nullo |
6 | 102 | 450 | 102 | Paul |
Un operatore di ricerca utilizza due origini di input in un flusso di dati.
La procedura riportata di seguito presuppone che siano stati aggiunti e configurati due operatori di origine.
Utilizzare la Costruzione guidata condizione per selezionare visivamente gli elementi per creare una condizione di ricerca. È inoltre possibile immettere manualmente una condizione nell'editor.
Una condizione di lookup consente di utilizzare un valore in un'origine di input principale per cercare i record in un'origine di input di lookup, restituendo eventuali righe corrispondenti. Le righe che non hanno una corrispondenza vengono restituite con valori nulli.
Gli elementi che è possibile utilizzare in una condizione di ricerca includono attributi, parametri e funzioni in entrata. È possibile fare doppio clic o trascinare un elemento dall'elenco per aggiungerlo all'editor per creare una condizione. È possibile convalidare la condizione prima di crearla.
In In entrata vengono visualizzati gli attributi delle porte di input a monte in due cartelle LOOKUP separate. Visualizzare gli attributi da ciascuna porta espandendo o comprimendo la cartella LOOKUP appropriata. Ad esempio, LOOKUP_1_1 è l'input principale, LOOKUP_1_2 è l'input di ricerca, le condizioni di ricerca basate su un valore nell'attributo di input principale ADDRESS_ID potrebbero essere:
LOOKUP_1_1.BANK_ADDRESS.ADDRESS_ID = '2001'
LOOKUP_1_1.BANK_ADDRESS.ADDRESS_ID = LOOKUP_1_2.BANK_CUSTOMER.ADDRESS_ID
I parametri sono i parametri di espressione che sono stati aggiunti al flusso di dati utilizzando il Builder delle condizioni (operatore filtro, join, lookup e split) o il Builder delle espressioni (operatore di espressione e aggregazione). Un parametro di espressione ha un nome, un tipo e un valore predefinito. Vedere Aggiunta di un parametro di espressione.
Si supponga di voler cercare i clienti di una banca specifica. È possibile creare un parametro VARCHAR
con il nome P_LOOK_UP
e impostare il valore predefinito su 2001
, ovvero il valore bancario specifico. È quindi possibile creare la condizione di ricerca come indicato di seguito.
LOOKUP_1_1.BANK_ADDRESS.ADDRESS_ID = LOOKUP_1_2.BANK_CUSTOMER.ADDRESS_ID AND LOOKUP_1_1.BANK_ADDRESS.ADDRESS_ID = $P_LOOK_UP
Le funzioni sono le funzioni disponibili in Data Integration che è possibile utilizzare in una condizione. Le funzioni sono operazioni eseguite su argomenti passati alla funzione. Le funzioni calcolano, manipolano o estraggono i valori dei dati dagli argomenti.
Di seguito è riportato un elenco di funzioni disponibili per l'aggiunta quando si creano le condizioni.
Funzione | descrizione; | Esempio |
---|---|---|
MD5(all data types) | Calcola un checksum MD5 del tipo di dati e restituisce un valore stringa. | MD5(column_name) |
SHA1(all data types) | Calcola un valore hash SHA-1 del tipo di dati e restituisce un valore stringa. | SHA1(column_name) |
SHA2(all data types, bitLength) | Calcola un valore hash SHA-2 del tipo di dati e restituisce un valore stringa. bitLength è un numero intero. | SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512) . |
ORA_HASH(expr, [max_bucket], [seed_value]) |
Calcola un valore hash per
Oracle applica la funzione hash alla combinazione di |
|
Funzione | descrizione; | Esempio |
---|---|---|
ABS(numeric) | Restituisce la potenza assoluta del valore numeric . | ABS(-1) |
CEIL(numeric) | Restituisce il numero intero minimo non maggiore del valore numeric | CEIL(-1,2) |
FLOOR(numeric) | Restituisce il numero intero più alto non maggiore del valore numeric . | FLOOR(-1,2) |
MOD(numeric1, numeric2) | Restituisce il resto dopo che numeric1 è diviso per numeric2 . | MOD(8,2) |
POWER(numeric1, numeric2) | Alza numeric1 alla potenza di numeric2 . | POWER(2,3) |
ROUND(numeric1, numeric2) | Restituisce numeric1 arrotondato alle posizioni decimali numeric2 . | ROUND(2.5,0) |
TRUNC(numeric1, numeric2) | Restituisce numeric1 troncato alle posizioni decimali numeric2 . | TRUNC(2.5,0) |
TO_NUMBER(expr[, format, locale]) | Converte un valore expr in un numero, in base al valore format e al valore locale facoltativo fornito. La versione locale predefinita è en-US . Tag lingua supportati.Pattern di formato supportati:
|
|
Funzione | descrizione; | Esempio |
---|---|---|
CURRENT_DATE |
Restituisce la data corrente. | CURRENT_DATE restituisce la data odierna, ad esempio 2023-05-26 |
CURRENT_TIMESTAMP |
Restituisce la data e l'ora correnti per il fuso orario della sessione. | CURRENT_TIMESTAMP restituisce la data odierna e l'ora corrente, ad esempio 2023-05-26 12:34:56
|
DATE_ADD(date, number_of_days) |
Restituisce la data number specificata dei giorni successivi al valore date specificato. |
DATE_ADD('2017-07-30', 1) restituisce 2017-07-31 |
DATE_FORMAT(expr, format[, locale]) |
Formatta un valore Pattern di formato data supportati:
|
|
DAYOFMONTH(date) |
Restituisce il giorno della data del mese. | DAYOFMONTH('2020-12-25') restituisce 25 |
DAYOFWEEK(date) |
Restituisce il giorno della data della settimana. | DAYOFWEEK('2020-12-25') restituisce 6 per venerdì. Negli Stati Uniti, la domenica è considerata 1, il lunedì è 2 e così via. |
DAYOFYEAR(date) |
Restituisce il giorno della data nell'anno. | DAYOFYEAR('2020-12-25') restituisce 360 |
WEEKOFYEAR(date) |
Restituisce la settimana della data nell'anno. |
|
HOUR(datetime) |
Restituisce il valore ora di dataora. | HOUR('2020-12-25 15:10:30') restituisce 15 |
LAST_DAY(date) |
Restituisce l'ultimo giorno del mese della data. | LAST_DAY('2020-12-25') restituisce 31 |
MINUTE(datetime) |
Restituisce il valore minuto della data/ora. | HOUR('2020-12-25 15:10:30') restituisce 10 |
MONTH(date) |
Restituisce il valore del mese della data. | MONTH('2020-06-25') restituisce 6 |
QUARTER(date) |
Restituisce il trimestre dell'anno in cui si trova la data. | QUARTER('2020-12-25') restituisce 4 |
SECOND(datetime) |
Restituisce il secondo valore della data/ora. | SECOND('2020-12-25 15:10:30') restituisce 30 |
TO_DATE(string, format_string[, localeStr]) |
Analizza l'espressione di stringa con l'espressione format_string in una data. Le impostazioni nazionali sono facoltative. L'impostazione predefinita è en-US . Tag lingua supportati.Nelle espressioni della pipeline,
|
|
TO_TIMESTAMP(expr, format_string[, localeStr]) |
Converte un valore expr di VARCHAR in un valore di TIMESTAMP, in base al valore format_string e al valore localeStr facoltativo fornito.Nelle espressioni della pipeline,
|
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') restituisce un oggetto TIMESTAMP che rappresenta 11am 10:10 Oct 11th, 2020 |
WEEK(date) |
Restituisce il valore della settimana della data. |
WEEK('2020-06-25') restituisce 4 |
YEAR(date) |
Restituisce il valore dell'anno della data. | YEAR('2020-06-25') restituisce 2020 |
ADD_MONTHS(date_expr, number_months) |
Restituisce la data successiva all'aggiunta del numero di mesi specificato alla data, all'indicatore orario o alla stringa specificata con un formato quale yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS . |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Restituisce il numero di mesi compresi tra Viene restituito un numero intero se entrambe le date sono lo stesso giorno del mese o se entrambe sono l'ultimo giorno dei rispettivi mesi. In caso contrario, la differenza viene calcolata in base a 31 giorni al mese. |
|
FROM_UTC_TIMESTAMP(time_stamp, time_zone) |
Interpreta una data, un indicatore orario o una stringa come ora UTC e la converte in un indicatore orario nel fuso orario specificato. Per la stringa, utilizzare un formato quale: Il formato del fuso orario è un ID di zona basato sull'area (ad esempio, 'area/città' come 'Asia/Seoul' o un offset del fuso orario (ad esempio, UTC+02). |
FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') restituisce 2017-07-14 03:40:00.0 |
TO_UTC_TIMESTAMP(time_stamp, time_zone) |
Converte una data, un indicatore orario o una stringa nel fuso orario specificato in un indicatore orario UTC. Per la stringa, utilizzare un formato quale: Il formato del fuso orario è un ID di zona basato sull'area (ad esempio, 'area/città' come 'Asia/Seoul') o un offset del fuso orario (ad esempio, UTC+02). |
TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') restituisce 2017-07-14 01:40:00.0
|
FROM_UNIXTIME(unix_time[, fmt]) |
Converte l'ora o l'epoca Unix specificata in una stringa che rappresenta l'indicatore orario di quel momento nel fuso orario di sistema corrente e nel formato specificato. Nota: l'ora Unix è il numero di secondi trascorsi dal 1° gennaio 1970 alle 00:00:00 UTC. Se |
Il fuso orario predefinito è PST negli esempi |
UNIX_TIMESTAMP([time_expr[, fmt]]) |
Converte l'ora corrente o specificata in un indicatore orario Unix in secondi.
Se Se |
Il fuso orario predefinito è PST in questo esempio |
INTERVAL 'year' YEAR[(year_precision)] |
Restituisce un periodo di tempo in anni. year_precision è il numero di cifre nel campo anno. È compreso tra 0 e 9. Se year_precision viene omesso, l'impostazione predefinita è 2 (deve essere inferiore a 100 anni). |
|
INTERVAL 'year month' YEAR[(year_precision)] TO MONTH |
Restituisce un periodo di tempo in anni e mesi. Consente di memorizzare un periodo di tempo utilizzando i campi anno e mese. year_precision è il numero di cifre nel campo anno. È compreso tra 0 e 9. Se year_precision viene omesso, l'impostazione predefinita è 2 (deve essere inferiore a 100 anni). |
INTERVAL '100-5' YEAR(3) TO MONTH restituisce un intervallo di 100 anni, 5 mesi. È necessario specificare la precisione dell'anno iniziale pari a 3. |
INTERVAL 'month' MONTH[(month_precision)] |
Restituisce un periodo di tempo in mesi. month_precision è il numero di cifre nel campo mese. È compreso tra 0 e 9. Se month_precision viene omesso, l'impostazione predefinita è 2 (deve essere inferiore a 100 anni). |
INTERVAL '200' MONTH(3) restituisce un intervallo di 200 mesi. È necessario specificare la precisione del mese pari a 3. |
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)] |
Restituisce un periodo di tempo in termini di giorni, ore, minuti e secondi. day_precision è il numero di cifre nel campo giorno. È compreso tra 0 e 9. Il valore predefinito è 2. fractional_seconds_precision è il numero di cifre nella parte frazionaria del secondo valore nel campo time; è compreso tra 0 e 9. |
INTERVAL '11 10:09:08.555' DAY TO SECOND(3) restituisce un intervallo di 11 giorni, 10 ore, 09 minuti, 08 secondi e 555 millesimi di secondo |
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)] |
Restituisce un periodo di tempo in termini di giorni, ore e minuti. day_precision è il numero di cifre nel campo giorno. È compreso tra 0 e 9. Il valore predefinito è 2. minute_precision è il numero di cifre nel campo minuto, con un intervallo compreso tra 0 e 2. Il valore predefinito è 2. |
INTERVAL '11 10:09' DAY TO MINUTE restituisce un intervallo di 11 giorni, 10 ore e 09 minuti |
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)] |
Restituisce un periodo di tempo in termini di giorni e ore. day_precision è il numero di cifre nel campo giorno. È compreso tra 0 e 9. Il valore predefinito è 2. hour_precision è il numero di cifre nel campo ora; è compreso tra 0 e 2. Il valore predefinito è 2. |
INTERVAL '100 10' DAY(3) TO HOUR restituisce un intervallo di 100 giorni e 10 ore |
INTERVAL 'day' DAY[(day_precision)] |
Restituisce un periodo di tempo in termini di giorni. day_precision è il numero di cifre nel campo giorno. È compreso tra 0 e 9. Il valore predefinito è 2. |
INTERVAL '999' DAY(3) restituisce un intervallo di 999 giorni |
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)] |
Restituisce un periodo di tempo in termini di ore, minuti e secondi. hour_precision è il numero di cifre nel campo ora; è compreso tra 0 e 2. Il valore predefinito è 2. fractional_seconds_precision è il numero di cifre nella parte frazionaria del secondo valore nel campo time; è compreso tra 0 e 9. |
INTERVAL '09:08:07.6666666' HOUR TO SECOND(7) restituisce un intervallo di 9 ore, 08 minuti e 7,66666666 secondi |
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)] |
Restituisce un periodo di tempo in termini di ore e minuti. hour_precision è il numero di cifre nel campo ora; è compreso tra 0 e 2. Il valore predefinito è 2. minute_precision è il numero di cifre nel campo minuto, con un intervallo compreso tra 0 e 2. Il valore predefinito è 2. |
INTERVAL '09:30' HOUR TO MINUTE restituisce un intervallo di 9 ore e 30 minuti |
INTERVAL 'hour' HOUR[(hour_precision)] |
Restituisce un periodo di tempo in termini di ore. hour_precision è il numero di cifre nel campo ora; è compreso tra 0 e 2. Il valore predefinito è 2. |
INTERVAL '40' HOUR restituisce un intervallo di 40 ore |
INTERVAL 'minute' MINUTE[(minute_precision)] |
Restituisce un periodo di tempo in termini di minuti. minute_precision è il numero di cifre nel campo minuto, con un intervallo compreso tra 0 e 2. Il valore predefinito è 2. |
INTERVAL '15' MINUTE restituisce un intervallo di 15 minuti |
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)] |
Restituisce un periodo di tempo in termini di minuti e secondi. minute_precision è il numero di cifre nel campo minuto, con un intervallo compreso tra 0 e 2. Il valore predefinito è 2. fractional_seconds_precision è il numero di cifre nella parte frazionaria del secondo valore nel campo time; è compreso tra 0 e 9. |
INTERVAL '15:30' MINUTE TO SECOND restituisce un intervallo di 15 minuti e 30 secondi |
INTERVAL 'second' SECOND[(fractional_seconds_precision)] |
Restituisce un periodo di tempo in termini di secondi. fractional_seconds_precision è il numero di cifre nella parte frazionaria del campo secondo; è compreso tra 0 e 9. Il valore predefinito è 3. |
INTERVAL '15.678' SECOND restituisce un intervallo di 15,678 secondi |
Funzione | descrizione; | Esempio |
---|---|---|
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) |
Restituisce il valore valutato nella riga corrispondente alla prima riga del frame della finestra. | FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) restituisce il primo valore di BANK_ID in una finestra in cui le righe vengono calcolate come riga corrente e 1 riga dopo tale riga, partizionata per BANK_ID e in ordine crescente per BANK_NAME . |
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Restituisce il valore valutato alla riga in corrispondenza di un determinato offset prima della riga corrente all'interno della partizione. In assenza di tale riga, viene restituito il valore predefinito. L'offset e il valore predefinito vengono valutati rispetto alla riga corrente. Se omesso, l'offset viene impostato su 1 per impostazione predefinita e su NULL. | LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) restituisce il valore di BANK_ID dalla seconda riga prima della riga corrente, partizionato da BANK_ID e in ordine decrescente di BANK_NAME . In assenza di tale valore, viene restituito hello . |
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) |
Restituisce il valore valutato nella riga che corrisponde all'ultima riga del frame della finestra. | LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) restituisce l'ultimo valore di BANK_ID in una finestra in cui le righe vengono calcolate come riga corrente e 1 riga dopo tale riga, partizionata per BANK_ID e in ordine crescente per BANK_NAME . |
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Restituisce il valore valutato alla riga in corrispondenza di un determinato offset dopo la riga corrente all'interno della partizione. In assenza di tale riga, viene restituito il valore predefinito. L'offset e il valore predefinito vengono valutati rispetto alla riga corrente. Se omesso, l'offset viene impostato su 1 per impostazione predefinita e su NULL. | LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) restituisce il valore di BANK_ID dalla seconda riga dopo la riga corrente, partizionato da BANK_ID e in ordine crescente da BANK_NAME . In assenza di tale valore, viene restituito hello . |
RANK() OVER([ partition_clause ] order_by_clause) |
Restituisce la classificazione della riga corrente con interruzioni, contando da 1. | RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) restituisce la classificazione di ogni riga all'interno del gruppo di partizioni di BANK_ID , in ordine crescente di BANK_NAME . |
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) |
Restituisce il numero univoco della riga corrente all'interno della partizione, contando da 1. | ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) restituisce il numero di riga univoco di ogni riga all'interno del gruppo di partizioni di BANK_ID , in ordine crescente di BANK_NAME . |
Funzioni | descrizione; | Esempio |
---|---|---|
CAST(value AS type) | Restituisce il valore specificato nel tipo specificato. | CAST("10" AS INT) restituisce 10 |
CONCAT(string, string) | Restituisce i valori combinati di stringhe o colonne. | CONCAT('Oracle','SQL') restituisce OracleSQL |
CONCAT_WS(separator, expression1, expression2, expression3,...) |
Restituisce i valori combinati di stringhe o colonne utilizzando il separatore specificato tra le stringhe o le colonne. È necessario un separatore e deve essere una stringa. È necessario fornire almeno un'espressione dopo il separatore. Ad esempio: |
CONCAT_WS('-', 'Hello', 'Oracle') restituisce Hello-Oracle
Se un elemento figlio della funzione è un array, l'array viene appiattito:
|
INITCAP(string) | Restituisce la stringa con la prima lettera in ogni parola maiuscola, mentre tutte le altre lettere sono minuscole e ogni parola è delimitata da uno spazio vuoto. | INITCAP('oRACLE sql') restituisce Oracle Sql |
INSTR(string, substring[start_position]) | Restituisce l'indice (basato su 1) della prima occorrenza di substring in string . | INSTR('OracleSQL', 'SQL') restituisce 7 |
LOWER(string) | Restituisce la stringa con tutte le lettere modificate in minuscolo. | LOWER('ORACLE') restituisce oracle |
LENGTH(string) | Restituisce la lunghezza del carattere della stringa o il numero di byte di dati binari. La lunghezza della stringa include gli spazi finali. | LENGTH('Oracle') restituisce 6 |
LTRIM(string) | Restituisce la stringa con gli spazi iniziali rimossi da sinistra. | LTRIM(' Oracle') |
NVL(expr1, epxr2) | Restituisce l'argomento non nullo. | NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID()) |
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx]) | Cerca ed estrae la stringa che corrisponde a un pattern di espressione regolare dalla stringa di input. Se viene fornito l'indice di gruppo di acquisizione facoltativo, la funzione estrae il gruppo specifico. |
REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) restituisce 22 |
REPLACE(string, search, replacement) | Sostituisce tutte le occorrenze di search con replacement .Se Se | REPLACE('ABCabc', 'abc', 'DEF') restituisce ABCDEF |
RTRIM(string) | Restituisce la stringa con gli spazi iniziali rimossi da destra. | RTRIM('Oracle ') |
SUBSTRING(string, position[, substring_length]) | Restituisce la sottostringa che inizia in posizione. | SUBSTRING('Oracle SQL' FROM 2 FOR 3) restituisce rac |
Per i numeri, TO_CHAR(expr) e per le date TO_CHAR(expr, format[, locale]) | Converte numeri e date in stringhe. Per i numeri non è richiesto alcun formato. Per le date, utilizzare lo stesso formato di DATE_FORMAT descritto in Funzioni di data e ora. La versione locale predefinita è en-US . Vedere i tag di lingua supportati.Nelle espressioni della pipeline,
| Esempio numerico: Esempio di data: |
UPPER(string) | Restituisce una stringa con tutte le lettere modificate in maiuscolo. | UPPER('oracle') restituisce ORACLE |
LPAD(str, len[, pad]) | Restituisce una stringa riempita a sinistra con caratteri specificati fino a una certa lunghezza. Se il carattere pad viene omesso, il valore predefinito è uno spazio. | LPAD('ABC', 5, '*') restituisce '**ABC' |
RPAD(str, len[, pad]) | Restituisce una stringa riempita a destra con i caratteri specificati fino a una certa lunghezza. Se il carattere pad viene omesso, il valore predefinito è uno spazio. | RPAD('XYZ', 6, '+' ) returns 'XYZ+++' |
Funzione | descrizione; | Esempio |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Restituisce il valore per il quale viene soddisfatta una condizione. | CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END restituisce ABC se 1> 0 , altrimenti restituisce XYZ |
AND | L'operatore AND logico. Restituisce true se entrambi gli operandi sono true, altrimenti restituisce false. | (x = 10 AND y = 20) restituisce "true" se x è uguale a 10 e y è uguale a 20. Se uno dei due non è vero, restituisce "falso" |
OR | Operatore OR logico. Restituisce true se uno degli operandi è true o entrambi sono true, altrimenti restituisce false. | (x = 10 OR y = 20) restituisce "false" se x non è uguale a 10 e anche y non è uguale a 20. Se uno dei due è vero, allora restituisce "vero" |
NOT | L'operatore NOT logico. | |
LIKE | Esegue la corrispondenza dei pattern di stringa, indipendentemente dal fatto che string1 corrisponda al pattern in string2. | |
= | Test per l'uguaglianza. Restituisce true se expr1 è uguale a expr2, altrimenti restituisce false. | x = 10 restituisce "true" quando il valore di x è 10, altrimenti restituisce "false" |
!= | Test per la disuguaglianza. Restituisce true se expr1 non è uguale a expr2, altrimenti restituisce false. | x != 10 restituisce "false" se il valore di x è 10, altrimenti restituisce "true" |
> | Test per un'espressione maggiore di. Restituisce true se expr1 è maggiore di expr2. | x > 10 restituisce "true" se il valore di x è maggiore di 10, altrimenti restituisce "false" |
>= | Test per un'espressione maggiore o uguale a. Restituisce true se expr1 è maggiore o uguale a expr2. | x > =10 restituisce "true" se il valore di x è maggiore o uguale a 10, altrimenti restituisce "false" |
< | Test per un'espressione minore di. Restituisce true se expr1 è minore di expr2. | x < 10 restituisce "true" se il valore di x è minore di 10, altrimenti restituisce "false" |
<= | Test per un'espressione minore o uguale a. Restituisce true se expr1 è minore o uguale a expr2. | x <= 10 restituisce "true" se il valore di x è minore di 10, altrimenti restituisce "false" |
|| | Concatena due stringhe. | 'XYZ' || 'hello' restituisce 'XYZhello' |
BETWEEN | Valuta un intervallo. | FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007 |
IN | Verifica se un'espressione corrisponde a una lista di valori. | FILTER_2.ORDERS.ORDER_ID IN (1003, 1007) |
Funzione | descrizione; | Esempio |
---|---|---|
NUMERIC_ID() | Genera un identificativo univoco universale che è un numero a 64 bit per ogni riga. | NUMERIC_ID() restituisce, ad esempio, 3458761969522180096 e 3458762008176885761 |
ROWID() | Genera numeri a 64 bit in aumento monotono. | ROWID() restituisce, ad esempio, 0 , 1 , 2 e così via |
UUID() | Genera un identificativo univoco universale che è una stringa a 128 bit per ogni riga. | UUID() restituisce, ad esempio, 20d45c2f-0d56-4356-8910-162f4f40fb6d |
MONOTONICALLY_INCREASING_ID() |
Genera numeri interi a 64 bit univoci e monotoni che non sono numeri consecutivi. | MONOTONICALLY_INCREASING_ID() restituisce, ad esempio, 8589934592 e 25769803776 |
Funzione | descrizione; | Esempio |
---|---|---|
COALESCE(value, value [, value]*) | Restituisce il primo argomento non nullo, se esistente, altrimenti restituisce un valore nullo. | COALESCE(NULL, 1, NULL) restituisce 1 |
NULLIF(value, value) | Restituisce un valore nullo se i due valori sono uguali, altrimenti restituisce il primo valore. | NULLIF('ABC','XYZ') restituisce ABC |
Funzione | descrizione; | Esempio |
---|---|---|
SCHEMA_OF_JSON(string) | Analizza una stringa JSON e inserisce lo schema in formato DDL. |
|
FROM_JSON(column, string) | Analizza una colonna contenente una stringa JSON in uno dei tipi seguenti, con lo schema specificato.
|
|
TO_JSON(column) | Converte una colonna contenente un tipo Struct o Array of Structs o Map o Array of Map in una stringa JSON. | TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) restituisce una stringa JSON {"s1":[1,2,3],"s2":{"key":"value"}} |
TO_MAP(string,column[,string,column]*) | Crea una nuova colonna di tipo Mappa. Le colonne di input devono essere raggruppate come coppie chiave-valore. Le colonne chiave di input non possono essere nulle e devono avere tutti lo stesso tipo di dati. Le colonne dei valori di input devono avere tutti lo stesso tipo di dati. |
|
TO_STRUCT(string,column[,string,column]*) | Crea una nuova colonna di tipo Struttura. Le colonne di input devono essere raggruppate come coppie chiave-valore. |
|
TO_ARRAY(column[,column]*) | Crea una nuova colonna come tipo di array. Le colonne di input devono avere tutte lo stesso tipo di dati. |
|
Gli operatori di flusso dati che supportano la creazione di espressioni e tipi di dati gerarchici possono utilizzare funzioni di ordine superiore.
Gli operatori supportati sono:
-
aggregato
-
Espressione
-
Filtro
-
Join
-
Cerca
-
Dividi
-
Pivot
Funzione | descrizione; | Esempio |
---|---|---|
TRANSFORM(column, lambda_function) | Prende un array e una funzione anonima e imposta un nuovo array applicando la funzione a ciascun elemento e assegnando il risultato all'array di output. | Per un array di input di numeri interi [1, 2, 3] , TRANSFORM(array, x -> x + 1) restituisce un nuovo array di valori [2, 3, 4] . |
TRANSFORM_KEYS(column, lambda_function) | Prende una mappa e una funzione con 2 argomenti (chiave e valore) e restituisce una mappa in cui le chiavi hanno il tipo del risultato della funzione lambda e i valori hanno il tipo dei valori della mappa delle colonne. | Per una mappa di input con chiavi interi e valori stringa di {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'} , TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) restituisce una nuova mappa di {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'} . |
TRANSFORM_VALUES(column, lambda_function) | Prende una mappa e una funzione con 2 argomenti (chiave e valore) e restituisce una mappa in cui i valori hanno il tipo del risultato delle funzioni lambda e i tasti hanno il tipo delle chiavi della mappa delle colonne. | Per una mappa di input con chiavi stringa e valori stringa {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'} , TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) restituisce una nuova mappa di {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'} . |
ARRAY_SORT(array(...), lambda_function) |
Solo l'operatore Espressione supporta Prende un array e ordina in base alla funzione specificata che accetta 2 argomenti. La funzione deve restituire -1, 0 o 1 a seconda che il primo elemento sia minore, uguale o maggiore del secondo elemento. Se la funzione viene omessa, l'array viene ordinato in ordine crescente. |
L'array restituito è: [1,5,6] |
Operatore funzione
Utilizzare l'operatore di funzione per richiamare Oracle Cloud Infrastructure Functions dall'interno di Data Integration.
Per strutture di dati complesse quali Mappa, Array e Composito (Struct), è attualmente supportato solo il formato di serializzazione JSON.
Prima di utilizzare le funzioni OCI da un flusso di dati in Data Integration, assicurarsi di aver compreso le dipendenze e di aver completato i task dei prerequisiti.
La funzione che si desidera richiamare deve essere distribuita in OCI Functions. La funzione può essere scritta in qualsiasi lingua.
Utilizzare la seguente lista di controllo dei task per assicurarsi di disporre dell'impostazione e delle informazioni necessarie per l'utilizzo dell'operatore di funzione con OCI Functions.
Attività | Requisiti |
---|---|
Impostazione per l'uso e l'accesso alle funzioni OCI | Questo argomento presuppone che la tenancy e l'ambiente di sviluppo siano già impostati per la distribuzione di funzioni in OCI Functions. Vedere Preparazione delle funzioni. Con l'operatore di funzione in Data Integration è possibile utilizzare solo le funzioni distribuite in OCI Functions. |
Creare criteri per controllare il richiamo e la gestione delle funzioni. | In questo argomento si presume che tu o l'amministratore della tenancy abbiate già creato i criteri Oracle Cloud Infrastructure necessari. Vedere Creazione di criteri per controllare l'accesso alle risorse correlate alla rete e alle funzioni. In un ambiente di produzione, è possibile limitare gli utenti a richiamare funzioni in un'applicazione specifica o solo a richiamare una funzione specifica. Ad esempio, per limitare gli utenti a richiamare funzioni in un'area di lavoro specifica, immettere le istruzioni dei criteri nel seguente formato:
Per limitare gli utenti a richiamare una funzione specifica in un'area di lavoro, effettuare le operazioni riportate di seguito.
Vedere Controllo dell'accesso per richiamare e gestire le funzioni. |
Creare un'applicazione in OCI Functions. | Un'applicazione è un raggruppamento logico di funzioni. In un'applicazione è possibile specificare da una a tre subnet in cui eseguire le funzioni. Le funzioni in esecuzione in un'applicazione sono isolate dalle funzioni in esecuzione in un'altra applicazione. |
Distribuire una funzione in OCI Functions. |
Affinché la funzione in OCI Functions possa funzionare con l'operatore Data Integration in un flusso di dati, la funzione non deve leggere o scrivere alcun identificativo con un carattere di spazio. Quando distribuisci una funzione in OCI Functions utilizzando l'interfaccia CLI di Fn Project, la funzione viene creata come immagine Docker e sottoposta a push in un registro Docker specificato. |
Raccogliere le informazioni necessarie per utilizzare la funzione distribuita con l'operatore di funzione. | Quando si aggiunge e configura un operatore di funzione in un flusso di dati di Data Integration, è necessario conoscere quanto riportato di seguito.
|
Un operatore di funzione consente di utilizzare una funzione distribuita in OCI Functions per elaborare i dati da un'origine di input. Sono supportati tipi di dati primitivi e complessi.
Specificare la forma di input della funzione e gli attributi di input e output per consentire all'operatore di funzione di leggere e scrivere. Quindi mappare manualmente gli attributi di origine agli attributi di input.
Attualmente, solo il formato di serializzazione JSON è supportato per strutture dati complesse quali Mappa, Array e Composito (Struct).
La procedura riportata di seguito presuppone che sia stato aggiunto e configurato un operatore di origine con l'entità dati che si desidera utilizzare con la funzione.
La funzione che si desidera utilizzare con un operatore di funzione deve essere distribuita in un'applicazione in Oracle Cloud Infrastructure Functions.
- Nell'area di creazione selezionare l'operatore di funzione.
- Nella scheda Dettagli del pannello Proprietà, per Funzione OCI, fare clic su Seleziona.
- Nel pannello, selezionare il compartimento con l'applicazione OCI Functions in cui è stata distribuita la funzione che si desidera utilizzare.
- Selezionare l'applicazione in OCI Functions con la funzione distribuita.
- Nella sezione Funzione OCI, selezionare la funzione.
- Fare clic su OK.
Dopo aver selezionato una funzione distribuita, specificare le proprietà che definiscono i dati di input da elaborare per la funzione, i campi nella configurazione della funzione e i dati di output restituiti dalla funzione.
Non utilizzare uno spazio nel nome dell'identificativo per un attributo di input, un attributo di output o un campo funzione. Inoltre, non sono consentiti nomi quali "Elemento", "Chiave" e "Valore".
- In Proprietà funzione, fare clic su Aggiungi proprietà.
- Nel pannello selezionare il tipo della proprietà che si desidera specificare.
- Attributi di input: forma di input per l'operatore. Specificare uno o più attributi per rappresentare gli attributi in entrata da elaborare per la funzione. Gli attributi di input vengono mappati agli attributi in entrata dall'origine dell'entità dati.
- Configurazione funzione: specificare uno o più campi funzione che definiscono la forma di input della funzione. Un campo ha un nome e un valore. Il valore di un campo specifica un attributo di input.
- Attributi di output: forma di output per l'operatore. Specificare zero o più attributi per rappresentare l'output della funzione dopo l'elaborazione dei dati. Aggiungere un attributo di output per ogni campo funzione desiderato nell'output. Gli operatori a valle successivi possono utilizzare gli attributi di output.
- Immettere un nome per la proprietà nel campo Identificativo. Non utilizzare uno spazio nel nome per un attributo di input, un attributo di output o un campo funzione.
- Selezionare il tipo di dati della proprietà.
Per un tipo di dati primitivo, a seconda del tipo e del tipo di dati della proprietà che si sta specificando, specificare i campi riportati di seguito e altri campi applicabili.
- Lunghezza: per un attributo di input o di output, immettere una lunghezza. Ad esempio, è possibile specificare una lunghezza per un tipo di dati numerico o varchar.
- Valore: per un campo funzione, immettere un valore che corrisponda a un attributo di input.
Per un tipo di dati complesso Mappa, specificare la coppia chiave-valore per un elemento mappa. Fare clic su Aggiungi tipo di dati per selezionare il tipo di dati chiave e il tipo di dati valore.
- Chiave: selezionare solo tipi di dati primitivi.
- Valore: selezionare tra tipi di dati primitivi e complessi.
Per un tipo di dati complesso di array, fare clic su Aggiungi tipo di dati per specificare il tipo di dati Elemento. È possibile selezionare tipi di dati primitivi e complessi.
Per un tipo di dati Composite (Struct), specificare gli elementi figlio dello schema o gli elementi figlio dello schema. Per aggiungere uno schema figlio, fare clic sul simbolo + accanto al nome dello schema padre.
Nel pannello Aggiungi campo per un elemento figlio dello schema, immettere il identificatore e selezionare un tipo di dati. È possibile selezionare tipi di dati primitivi e complessi. Fare clic su Aggiungi per aggiungere lo schema figlio.
Fare di nuovo clic sul simbolo + se si desidera aggiungere più elementi figlio dello schema allo schema padre.
Per modificare o eliminare uno schema figlio, utilizzare il menu Azioni (
) alla fine della riga.
Impossibile eliminare l'elemento dello schema padre.
- Nel pannello Aggiungi proprietà, fare clic su Aggiungi.
- Ripetere la procedura per aggiungere le proprietà necessarie per definire l'input della funzione, i campi della funzione e l'output della funzione.
Operatore appiattimento
Utilizza l'operatore di appiattimento per trasformare i dati gerarchici in un formato semplificato da utilizzare con altri dati relazionali. Il processo di appiattimento è anche noto come denormalizzazione o unnesting.
I formati di file gerarchici che è possibile denormalizzare sono:
- JSON e JSON a più righe
- Avro
- Parquet
Attualmente, il tipo di dati gerarchico supportato che è possibile annullare l'nidificazione è Array. È possibile selezionare un solo nodo di array in un set di dati gerarchico da appiattire. La struttura dei dati viene appiattita dalla radice al nodo Array selezionato e presentata in un formato semplificato. Se il set di dati contiene altri nodi Array, è possibile convertirli in stringhe.
È possibile configurare gli attributi o i campi da includere nell'output appiattito impostando le preferenze di rifiuto.
Le preferenze di proiezione sono impostazioni per il formato, il numero e il tipo di attributi previsti da includere nell'output dopo l'appiattimento dei dati in entrata.
In Data Integration sono disponibili quattro impostazioni delle preferenze di progetto selezionate per impostazione predefinita, che generano un output previsto con le seguenti caratteristiche:
- Array di indici
- Tutti gli attributi fino all'attributo selezionato per l'appiattimento
- Valori nulli per gli attributi mancanti negli array successivi
- Derivazione nome padre nei nomi degli attributi
Per comprendere le preferenze di proiezione che è possibile configurare, utilizzare gli argomenti riportati di seguito con l'esempio di struttura dati JSON.
Esempio di struttura dati JSON
id
vehicle[]
make
model
insurance{}
company
policy_number
maintenance[]
date
description[]
dealerdetails[]
servicestation1[]
dealeraddress[]
city
state
contact
dealername
servicestation2[]
dealeraddress[]
city
state
contact
dealername
L'impostazione della preferenza di proiezione Crea e progetta indici di array consente di controllare se includere gli attributi di indice per gli array nell'output appiattito.
L'attributo indice rappresenta l'indice di un array. Si supponga che l'array sia ["a","b","c"]
, che l'indice per "a" sia 0, che l'indice per "b" sia 1 e che l'indice per "c" sia 2.
Per impostazione predefinita, Data Integration crea un attributo con il suffisso _INDEX
per il nodo array in cui si seleziona l'appiattimento dei dati. Il tipo di dati di un attributo di indice di array è Integer.
Vengono creati anche attributi di indice per i nodi di array padre del nodo di array selezionato. L'operazione di appiattimento interessa tutti i nodi di array padre nella struttura gerarchica dalla radice al nodo selezionato. Se un nodo di array padre interessato dispone di array di pari livello, gli attributi di indice non vengono creati per tali nodi di array di pari livello.
Nell'esempio di struttura dati JSON, se si seleziona l'array dealeraddress
in servicestation2
per l'appiattimento, Data Integration crea cinque attributi di indice di array: uno per il nodo di array selezionato e quattro per i nodi padre interessati dall'operazione di appiattimento.
Dopo l'appiattimento, gli attributi nella struttura semplificata sono i seguenti:
id
vehicle_INDEX
vehicle_make
vehicle_model
vehicle_insurance
company
policy_number
vehicle_maintenance_INDEX
vehicle_maintenance_date
vehicle_maintenance_description
vehicle_maintenance_dealerdetails_INDEX
vehicle_maintenance_servicestation1
dealeraddress
city
state
contact
dealername
vehicle_maintenance_servicestation2_INDEX
vehicle_maintenance_servicestation2_dealeraddress_INDEX
vehicle_maintenance_servicestation2_dealeraddress_city
vehicle_maintenance_servicestation2_dealeraddress_state
vehicle_maintenance_servicestation2_dealeraddress_contact
vehicle_maintenance_servicestation2_dealeraddress_dealername
Attributo di indice array non creato per servicestation1
perché il nodo array è un pari livello del nodo padre interessato servicestation2
. Analogamente, non viene creato un attributo di indice per description
perché il nodo array è un pari livello del nodo padre interessato dealerdetails
.
Se non si seleziona la preferenza di proiezione Crea e progetta indici di array, gli attributi nella struttura semplificata sono i seguenti:
id
vehicle_make
vehicle_model
vehicle_insurance
company
policy_number
vehicle_maintenance_date
vehicle_maintenance_description
vehicle_maintenance_servicestation1
dealeraddress
city
state
contact
dealername
vehicle_maintenance_servicestation2_dealeraddress_city
vehicle_maintenance_servicestation2_dealeraddress_state
vehicle_maintenance_servicestation2_dealeraddress_contact
vehicle_maintenance_servicestation2_dealeraddress_dealername
L'impostazione della preferenza di proiezione Mantieni tutti gli attributi fino all'array appiattito consente di controllare se includere nell'output appiattito gli attributi che non fanno parte degli array appiattiti.
Per impostazione predefinita, Integrazione dati mostra tutti gli attributi dalla radice all'array selezionato, inclusi gli array di pari livello non interessati dall'appiattimento.
Nell'esempio di struttura dati JSON, se non si seleziona la preferenza di proiezione Mantieni tutti gli attributi fino all'array appiattito, gli attributi nella struttura semplificata sono i seguenti:
id
vehicle_INDEX
vehicle_maintenance_INDEX
vehicle_maintenance_dealerdetails_INDEX
vehicle_maintenance_servicestation2_INDEX
vehicle_maintenance_servicestation2_dealeraddress_INDEX
vehicle_maintenance_servicestation2_dealeraddress_city
vehicle_maintenance_servicestation2_dealeraddress_state
vehicle_maintenance_servicestation2_dealeraddress_contact
L'impostazione della preferenza di proiezione Produci una singola riga con valori nulli per l'array padre mancante consente di controllare se saltare le righe che non hanno gli attributi interessati dall'appiattimento.
L'effetto dell'impostazione Produci una singola riga con valori nulli per l'array padre mancante viene visualizzato solo nella scheda Dati. Per impostazione predefinita, Data Integration mostra valori nulli per gli attributi mancanti negli array successivi.
Ad esempio, il seguente è un output previsto con valori nulli:
|Company1|Redmond |[...]|true |[...]|0 |1 |123.34 |0 |Laptop |20 |
|Company1|Redmond |[...]|true |[...]|0 |1 |123.34 |1 |Charger |2 |
|Company1|Redmond |[...]|true |[...]|1 |2 |323.34 |0 |Mouse |2 |
|Company1|Redmond |[...]|true |[...]|1 |2 |323.34 |1 |Keyboard |1 |
|Company2|Seattle |[...]|false |[...]|0 |4 |123.34 |0 |Laptop |20 |
|Company2|Seattle |[...]|false |[...]|0 |4 |123.34 |1 |Charger |3 |
|Company2|Seattle |[...]|false |[...]|1 |5 |343.24 |0 |Chair |4 |
|Company2|Seattle |[...]|false |[...]|1 |5 |343.24 |1 |Lamp |2 |
|Company3|Bellevue|null |true |[...]|0 |4 |123.34 |null |null |null |
|Company4|Kirkland|null |null |null |null |null |null |null |null |null |
Se non si seleziona l'opzione, le righe vengono saltate e l'output previsto è il seguente:
|Company1|Redmond |[...]|true |[...]|0 |1 |123.34 |0 |Laptop |20 |
|Company1|Redmond |[...]|true |[...]|0 |1 |123.34 |1 |Charger |2 |
|Company1|Redmond |[...]|true |[...]|1 |2 |323.34 |0 |Mouse |2 |
|Company1|Redmond |[...]|true |[...]|1 |2 |323.34 |1 |Keyboard |1 |
|Company2|Seattle |[...]|false |[...]|0 |4 |123.34 |0 |Laptop |20 |
|Company2|Seattle |[...]|false |[...]|0 |4 |123.34 |1 |Charger |3 |
|Company2|Seattle |[...]|false |[...]|1 |5 |343.24 |0 |Chair |4 |
|Company2|Seattle |[...]|false |[...]|1 |5 |343.24 |1 |Lamp |2 |
L'impostazione della preferenza di proiezione Mantieni derivazione nome padre nei nomi degli attributi consente di controllare se includere i nomi padre nei nomi degli attributi figlio.
Per impostazione predefinita, Data Integration crea i nomi dei nodi figlio con i nomi dei nodi padre.
Nell'esempio della struttura dati JSON, gli attributi con nomi padre nella struttura semplificata sono i seguenti (supponendo che nell'output siano esclusi gli array di pari livello non interessati dall'appiattimento):
id
vehicle_INDEX
vehicle_maintenance_INDEX
vehicle_maintenance_dealerdetails_INDEX
vehicle_maintenance_servicestation2_INDEX
vehicle_maintenance_servicestation2_dealeraddress_INDEX
vehicle_maintenance_servicestation2_dealeraddress_city
vehicle_maintenance_servicestation2_dealeraddress_state
vehicle_maintenance_servicestation2_dealeraddress_contact
Se non si seleziona la preferenza di proiezione Mantieni derivazione nome padre nei nomi degli attributi, gli attributi sono i seguenti:
id
vehicle_INDEX
maintenance_INDEX
dealerdetails_INDEX
servicestation2_INDEX
dealeraddress_INDEX
city
state
contact
La procedura riportata di seguito presuppone che sia stato aggiunto un operatore di origine e che l'operatore sia stato configurato in un'origine di storage degli oggetti con tipi di dati complessi, ad esempio un file JSON.
Dopo aver selezionato un attributo complesso per l'appiattimento, potrebbero esserci altri nodi di array nella struttura appiattita.
Con gli altri nodi Array in una struttura appiattita, è possibile convertire un array di tipi di dati primitivi o un array di strutture in una stringa. Attualmente, il formato supportato di una stringa di conversione è JSON.
A seconda dei dati, il tipo di dati di una stringa di conversione è VARCHAR o BLOB. È possibile modificare una stringa di conversione di VARCHAR in CLOB e viceversa da CLOB a VARCHAR.
La procedura riportata di seguito presuppone che sia stato aggiunto un operatore di appiattimento e che sia stato selezionato un attributo complesso per creare una struttura di dati appiattita.
La procedura riportata di seguito presuppone che sia stato selezionato un nodo di array da convertire in una stringa, se applicabile.
Quando si configura un operatore di appiattimento in un flusso di dati, è possibile annullare l'appiattimento cancellando il percorso Flatten by.
Operatore di funzione tabella
Utilizzare l'operatore funzione tabella per aggiungere funzioni tabella che restituiscono dati sotto forma di tabelle.
Al momento, è possibile selezionare da un elenco solo le funzioni tabella incorporate. Le funzioni tabella fornite dall'operatore della funzione tabella includono cubo, analisi di tabulazione incrociata, elementi frequenti, aggregazione e SQL Spark. Ogni funzione tabella incorporata dispone di campi predefiniti configurati per restituire la raccolta di dati desiderata. La logica complessa può essere consolidata in un'unica funzione che restituisce set di dati specifici. La parametrizzazione dei campi consente flessibilità nella regolazione della logica.
Un operatore di funzione tabella può essere collegato a qualsiasi altro operatore all'interno di un flusso di dati. Pertanto, un operatore di funzione tabella può essere utilizzato come origine dati, operatore mid-stream e destinazione.
Di seguito è riportato un elenco delle funzioni tabella incorporate supportate dall'operatore della funzione tabella.
Rende persistente e memorizza nella cache un set di dati in base alla memoria specificata level
.
Restituisce un nuovo data set nel data set distribuito resiliente memorizzato nella cache (RDD).
Parametro | descrizione; |
---|---|
level |
Memoria da utilizzare:
|
Calcola una tabella delle frequenze in coppia o una tabella delle contingenze in base ai valori distinti delle due colonne specificate.
Il numero di valori distinti per ogni colonna deve essere minore di 1e4.
Restituisce un dataframe che contiene la tabella di contingenza. Nella tabella delle contingenze:
- Il nome della prima colonna è
col1_col2
, dovecol1
è la prima colonna ecol2
è la seconda prima della trasformazione. La prima colonna di ogni riga sono i valori distinti dicol1
. - Gli altri nomi di colonna sono i valori distinti di
col2
. - I conteggi vengono restituiti come tipo
long
. - Alle coppie senza ricorrenze viene assegnato zero come conteggio.
- Il numero massimo di coppie diverse da zero è 1e6.
- Gli elementi nulli vengono sostituiti da
null
.
Parametro | descrizione; |
---|---|
col1 |
Nome della prima colonna. Per informazioni sulle limitazioni, vedere la nota riportata di seguito. Gli elementi distinti di |
col2 |
Nome della seconda colonna. Per informazioni sulle limitazioni, vedere la nota riportata di seguito. Gli elementi distinti di |
Nel nome di una colonna sono consentiti solo i seguenti caratteri:
- lettere minuscole e maiuscole
a-z
A-Z
- numeri
0-9
- carattere di sottolineatura
_
Esempio
Si supponga che col1
sia age
e che col2
sia salary
.
Prima della trasformazione:
+---+------+
|age|salary|
+---+------+
|1 |100 |
|1 |200 |
|2 |100 |
|2 |100 |
|2 |300 |
|3 |200 |
|3 |300 |
+---+------+
Dopo la trasformazione:
+----------+---+---+---+
|age_salary|100|200|300|
+----------+---+---+---+
|2 |2 |0 |1 |
|1 |1 |1 |0 |
|3 |0 |1 |1 |
+----------+---+---+---+
Genera un cubo multidimensionale di tutte le combinazioni possibili utilizzando l'elenco di colonne specificato e i calcoli nelle espressioni di funzione di aggregazione specificate.
Nelle espressioni sono supportate le seguenti funzioni di aggregazione:
AVG
COUNT
MEAN
MAX
MIN
SUM
Restituisce un dataframe dopo la trasformazione del cubo.
Parametro | descrizione; |
---|---|
cubeColumns |
La lista di colonne, separate da virgole, in base alla quale generare il cubo multidimensionale. |
aggExpressions |
Espressioni della funzione di aggregazione da eseguire sulle colonne. Ad esempio: |
Esempio
Prima della trasformazione:
+----------+-----+-------+------+---+
|department|group|region |salary|age|
+----------+-----+-------+------+---+
|Eng |A |local |1000 |10 |
|Art |B |foreign|2000 |11 |
|Sport |C |local |1500 |13 |
|Eng |A |foreign|800 |19 |
|Art |A |foreign|3000 |30 |
|Eng |E |foreign|1000 |21 |
|Art |D |local |1000 |32 |
|Sport |C |local |1000 |28 |
+----------+-----+-------+------+---+
Se cubeColumns
è department, region
e aggExpressions
è salary -> avg, age -> max
(calcola lo stipendio medio e l'età massima), il cubo di trasformazione successivo sarà:
+----------+-------+-----------------+--------+
|department|region |avg(salary) |max(age)|
+----------+-------+-----------------+--------+
|Eng |foreign|900.0 |21 |
|Sport |null |1250.0 |28 |
|Art |null |2000.0 |32 |
|Eng |null |933.3333333333334|21 |
|null |local |1125.0 |32 |
|Art |foreign|2500.0 |30 |
|null |foreign|1700.0 |30 |
|Eng |local |1000.0 |10 |
|null |null |1412.5 |32 |
|Sport |local |1250.0 |28 |
|Art |local |1000.0 |32 |
+----------+-------+-----------------+--------+
Genera dati sintetici utilizzando il formato file e il contenuto specificati. Di seguito sono riportati i formati di file supportati.
- CSV
- JSON
Restituisce un'entità dati. L'origine dati sintetica può essere utilizzata nei test unità pipeline in cui i dati reali non vengono utilizzati o spostati.
Parametro | descrizione; |
---|---|
format |
Il tipo di file. I valori supportati sono:
|
content |
Il contenuto del file per il formato specificato. |
Esempio
Esempio di contenuto CSV:
co1,co2,co3
1,B,3
A,2,C
Risultato generazione dati:
+---+---+---+
|co1|co2|co3|
+---+---+---+
|1 |B |3 |
+---+---+---+
|A |2 |C |
+---+---+---+
Trova i duplicati nell'elenco di colonne o colonne specificato e restituisce un nuovo set di dati con le righe duplicate rimosse.
Parametro | descrizione; |
---|---|
columns |
Nome di colonna o lista separata da virgole di nomi di colonna. |
Esempio
Prima della trasformazione:
+---+---+
|a |b |
+---+---+
|1 |2 |
|3 |4 |
|1 |3 |
|2 |4 |
+---+---+
Se columns
è a
, il data set dopo la trasformazione è:
+---+---+
|a |b |
+---+---+
|1 |2 |
|3 |4 |
|2 |4 |
+---+---+
Trova gli elementi frequenti nell'elenco di colonne o colonne specificato utilizzando la frequenza minima specificata.
L'algoritmo frequente di conteggio degli elementi proposto da Karl et al. viene utilizzato per trovare elementi frequenti. I falsi positivi sono possibili.
Restituisce un dataframe con un array di elementi frequenti per ogni colonna.
Parametro | descrizione; |
---|---|
freqItems |
Nome di colonna o elenco separato da virgole di nomi di colonna per i quali si desidera trovare elementi frequenti. |
support |
Frequenza minima per un articolo da considerare frequente. Il valore deve essere maggiore di 1e-4 (valore decimale di Ad esempio, |
Esempio
Prima della trasformazione:
+-------+--------------+
|user_id|favorite_fruit|
+-------+--------------+
| 1| apple|
| 2| banana|
| 3| apple|
| 4| orange|
| 5| banana|
| 6| banana|
| 7| apple|
+-------+--------------+
Se freqItems
è favorite_fruit
e support
è 0.6
, il dataframe restituito dopo la trasformazione è:
+------------------------+
|favorite_fruit_freqItems|
+------------------------+
| [banana]|
+------------------------+
Rimuove le righe che contengono valori nulli o NaN nella colonna o nella lista di colonne specificata.
Restituisce un dataframe che esclude le righe.
Parametro | descrizione; |
---|---|
how |
Come determinare se una riga deve essere eliminata. I valori supportati sono:
Il parametro |
cols |
Nome di colonna o lista separata da virgole di nomi di colonna. |
minNonNulls |
Il numero minimo di valori non nulli e non NaN che una riga può contenere. Elimina le righe che contengono meno del minimo specificato. Il parametro |
Esempio
Prima della trasformazione:
+----+-------+----+
|id |name |age |
+----+-------+----+
|1 |Alice |25 |
|2 |null |28 |
|null|Bob |null|
|4 |Charlie|30 |
+----+-------+----+
Se how
è any
e cols
è name
, il dataframe restituito dopo la trasformazione è:
+----+-------+----+
|id |name |age |
+----+-------+----+
|1 |Alice |25 |
|null|Bob |null|
|4 |Charlie|30 |
+----+-------+----+
Quando si utilizza il parametro how
con il valore all
, una riga viene eliminata solo se tutti i relativi valori sono nulli. Ad esempio, prima della trasformazione:
+----+--------+----+
| id| name| age|
+----+--------+----+
| 1|John Doe| 30|
| 2| null|null|
| 3|Jane Doe| 25|
| 4|Jake Doe|null|
|null| null|null|
+----+--------+----+
Dopo la trasformazione:
+---+--------+----+
| id| name| age|
+---+--------+----+
| 1|John Doe| 30|
| 2| null|null|
| 3|Jane Doe| 25|
| 4|Jake Doe|null|
+---+--------+----+
Sostituisce i valori nulli e restituisce un dataframe utilizzando i valori sostituiti.
Parametro | descrizione; |
---|---|
replacement |
La mappa chiave-valore da utilizzare per sostituire i valori nulli. La chiave è un nome di colonna. Il valore è un valore di sostituzione. La chiave indica il valore di sostituzione. Ad esempio: Un valore di sostituzione viene convertito nel tipo di dati della colonna. Un valore sostitutivo deve essere del tipo seguente:
|
Esempio
Prima della trasformazione:
+----+-------+----+
|id |name |age |
+----+-------+----+
|1 |Alice |25 |
|2 |null |28 |
|null|Bob |null|
|4 |Charlie|30 |
+----+-------+----+
Se la mappa chiave-valore è la seguente:
id -> 3
name -> unknown
age -> 10
Dopo la trasformazione:
+---+-------+---+
|id |name |age|
+---+-------+---+
|1 |Alice |25 |
|2 |unknown|28 |
|3 |Bob |10 |
|4 |Charlie|30 |
+---+-------+---+
Sostituisce un valore con un altro valore nella colonna o nelle colonne specificate mediante la corrispondenza delle chiavi nella chiave e nella mappa dei valori di sostituzione specificate.
Restituisce un nuovo dataframe che contiene la trasformazione sostituita.
Parametro | descrizione; |
---|---|
cols |
Nome di colonna o lista separata da virgole di nomi di colonna ai quali applicare valori di sostituzione. Se |
replacement |
La mappa chiave-valore di sostituzione da utilizzare. La chiave è un valore da sostituire. Il valore è il valore di sostituzione. Il valore della mappa può avere valori nulli. La chiave indica il valore di sostituzione. Ad esempio: La coppia chiave-valore di sostituzione deve avere lo stesso tipo. Sono supportati solo i seguenti tipi:
|
Esempio
Prima della trasformazione:
+----+-------+----+
|id |name |age |
+----+-------+----+
|1 |Alice |25 |
|2 |null |28 |
|null|Bob |null|
|4 |Charlie|30 |
+----+-------+----+
Se cols
è name
e replacement
è Alice -> Tom
, il dataframe dopo la trasformazione è:
+----+-------+----+
|id |name |age |
+----+-------+----+
|1 |Tom |25 |
|2 |null |28 |
|null|Bob |null|
|4 |Charlie|30 |
+----+-------+----+
Divide un set di dati in base alle colonne specificate nel numero specificato di partizioni.
Restituisce un nuovo set di dati con hash partizionato. Viene restituito il numero esatto di partizione specificato.
Parametro | descrizione; |
---|---|
partitionColumns |
Nome di colonna o lista separata da virgole di nomi di colonna in base alla quale il set di dati viene partizionato. |
numberOfPartitions |
Il numero di partizioni da creare. |
Genera un rollup multidimensionale di combinazioni possibili utilizzando l'elenco di colonne specificato e i calcoli nelle espressioni di funzione di aggregazione specificate.
Nelle espressioni sono supportate le seguenti funzioni di aggregazione:
AVG
COUNT
MEAN
MAX
MIN
SUM
Restituisce un dataframe dopo la trasformazione di aggregazione.
Parametro | descrizione; |
---|---|
rollupColumns |
L'elenco di colonne, separate da virgole, in base al quale generare il rollup multidimensionale. |
aggExpressions |
Espressioni della funzione di aggregazione da eseguire sulle colonne. Ad esempio: |
Esempio
Prima della trasformazione:
+----------+-----+-------+------+---+
|department|group|region |salary|age|
+----------+-----+-------+------+---+
|Eng |A |local |1000 |10 |
|Art |B |foreign|2000 |11 |
|Sport |C |local |1500 |13 |
|Eng |A |foreign|800 |19 |
|Art |A |foreign|3000 |30 |
|Eng |E |foreign|1000 |21 |
|Art |D |local |1000 |32 |
|Sport |C |local |1000 |28 |
+----------+-----+-------+------+---+
Se rollupColumns
è department, region
e aggExpressions
è salary -> avg, age -> max
(calcola lo stipendio medio e l'età massima), l'aggregazione successiva alla trasformazione sarà:
+----------+-------+-----------------+--------+
|department|region |avg(salary) |max(age)|
+----------+-------+-----------------+--------+
|Eng |foreign|900.0 |21 |
|Sport |null |1250.0 |28 |
|Art |null |2000.0 |32 |
|Eng |null |933.3333333333334|21 |
|Art |foreign|2500.0 |30 |
|Eng |local |1000.0 |10 |
|null |null |1412.5 |32 |
|Sport |local |1250.0 |28 |
|Art |local |1000.0 |32 |
+----------+-------+-----------------+--------+
Esegue query Spark SQL sui dati in entrata, creando prima viste temporanee utilizzando i nomi di tabella specificati.
Parametro | descrizione; |
---|---|
SQL |
Istruzione o script SQL da eseguire. Esempio: |
tableName |
Nome di tabella o lista separata da virgole di nomi di tabella in base alla quale Spark crea tabelle temporanee. Esempio: |
Genera un campione stratificato senza sostituzione in base alla frazione di campionamento specificata per ogni strato.
Restituisce un nuovo dataframe che rappresenta il campione stratificato.
Parametro | descrizione; |
---|---|
strata_col |
Colonna che definisce gli strati. |
fractions |
La frazione di campionamento per ogni strato, da Ad esempio, Se non viene specificata una frazione, viene assunto zero. |
sample_size |
Se non si specifica |
seed |
Utilizzare qualsiasi numero casuale in |
Esempio
Prima della trasformazione:
+---+-----+
|key|value|
+---+-----+
| 1| 1|
| 1| 2|
| 2| 1|
| 2| 1|
| 2| 3|
| 3| 2|
| 3| 3|
+---+-----+
Se strata_col
è key
e fractions
è il seguente:
1 -> 1.0, 3 -> 0.5
Dopo la trasformazione:
+---+-----+
|key|value|
+---+-----+
| 1| 1|
| 1| 2|
| 3| 2|
+---+-----+
Calcola le statistiche specificate per le colonne numeriche e di stringa.
Se non vengono fornite statistiche, vengono calcolati tutti gli elementi riportati di seguito.
COUNT
MEAN
STDDEV
MIN
- quartili approssimativi (percentili al 25%, 50% e 75%)
MAX
Parametro | descrizione; |
---|---|
statistics |
Elenco di statistiche separato da virgole. I valori supportati sono:
Esempio: |
Esempio
Prima della trasformazione:
+----------+------+-----------------+--------+
|department|gender|avg(salary) |max(age)|
+----------+------+-----------------+--------+
|Eng |female|900.0 |21 |
|Sport |null |1250.0 |28 |
|Art |null |2000.0 |32 |
|Eng |null |933.3333333333334|21 |
|Art |female|2500.0 |30 |
|Eng |male |1000.0 |10 |
|null |null |1412.5 |32 |
|Sport |male |1250.0 |28 |
|Art |male |1000.0 |32 |
+----------+------+-----------------+--------+
Si supponga che statistics
sia count, mean, stddev, min, 27%, 41%, 95%, max
.
Dopo la trasformazione:
+-------+----------+-----+------+----------------+----------------+
|summary|department|group|gender|salary |age |
+-------+----------+-----+------+----------------+----------------+
|count |8 |8 |8 |8 |8 |
|mean |null |null |null |1412.5 |20.5 |
|stddev |null |null |null |749.166203188585|8.76682056718072|
|min |Art |A |female|800 |10 |
|27% |null |null |null |1000 |13 |
|41% |null |null |null |1000 |19 |
|95% |null |null |null |3000 |32 |
|max |Sport |E |male |3000 |32 |
+-------+----------+-----+------+----------------+----------------+