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.

Importante

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.

Selezione di un asset dati, una connessione e uno schema

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".

Selezione di un'entità di dati

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 e BANK_EU, immettere BANK, 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à.

Assegnazione dei parametri agli oggetti risorsa

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 esempio BANK_${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.

Utilizzo dei parametri nei nomi delle entità 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.

Aggiunta e configurazione di un operatore di origine

È possibile aggiungere più operatori di origine in un flusso di dati.

Importante

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à.
  1. Dal pannello Operatori, trascinare un operatore Origine sull'area di creazione.
  2. Con l'operatore di origine attivo, nella scheda Dettagli del pannello Proprietà, immettere un nome per l'operatore di origine nel campo Identificativo oppure lasciare il nome predefinito così com'è.
  3. Per configurare l'origine di input per questo operatore, selezionare l'asset dati, la connessione e lo schema (o il bucket) facendo clic su Seleziona quando diventa disponibile accanto al tipo di risorsa. Per ulteriori informazioni sul tipo di asset dati che si sta selezionando per questo operatore di origine, vedere le descrizioni riportate di seguito.
    Tipo di asset dati descrizione;

    Storage degli oggetti

    Amazon S3

    HDFS

    Fare clic su Seleziona accanto al bucket per selezionare il compartimento, quindi selezionare il bucket.

    Dopo aver selezionato l'asset dati, la connessione e il bucket, procedere al passo 5 per selezionare un'entità dati.

    Asset dati REST generico

    Dopo aver selezionato una connessione, viene visualizzato l'URL di base immesso durante la creazione dell'asset dati. Per configurare l'origine, effettuare le operazioni riportate di seguito.

    • Fare clic su Seleziona accanto a Risorsa per selezionare un endpoint.

    • Fare clic su Seleziona accanto a Operazione per selezionare un'operazione per l'endpoint.

    • Per ulteriori proprietà, vedere il punto 7.

    Oracle Fusion Applications mediante Oracle BI Cloud Connector (BICC)

    Per Schema, selezionare l'offerta BICC. L'offerta BICC selezionata fornisce gli oggetti vista (VO) BICC per l'estrazione dei dati.

    Dopo aver selezionato un asset dati, una connessione e uno schema, procedere al passo 4 per selezionare un'entità dati.

    Oracle Fusion Applications mediante Oracle BI Publisher (BIP)

    Per asset dati:

    Per utilizzare un asset dati BIP in un flusso di dati, è necessario un bucket di storage degli oggetti come posizione area intermedia. Se si seleziona un asset dati per il quale non è stata specificata una posizione area intermedia predefinita nell'asset dati, Data Integration visualizza una notifica di avvertenza. Quando viene visualizzata la notifica, scegliere una delle seguenti opzioni:
    • Selezionare Aggiorna asset dati per aggiungere una posizione area intermedia predefinita a tale asset dati.
    • Fare clic su Seleziona accanto alla posizione area intermedia nel pannello Proprietà per selezionare l'asset dati dello storage degli oggetti contenente il bucket che si desidera utilizzare per l'area intermedia.

    Per Schema:

    Selezionare la cartella BIP che contiene il report come schema.

    Vedere Estrazione di dati da BIP in Data Integration per i dettagli riportati di seguito.
    • Preparazione del report BIP e della relativa query SQL
    • Configurazione della creazione di chunking
    • Utilizzo di parametri BIP personalizzati

    Dopo aver selezionato un asset dati, una connessione e uno schema, procedere al passo 4 per selezionare un'entità dati.

    Altri asset di dati che non lo storage degli oggetti, Amazon S3 o HDFS

    Dopo aver selezionato un asset dati, una connessione e uno schema, procedere al passo 4 per selezionare un'entità dati.

  4. Per selezionare un'entità dati non da un asset dati di storage degli oggetti, Amazon S3 o HDFS, effettuare le operazioni riportate di seguito.
    1. Nel pannello Seleziona entità dati, tenere presente quanto riportato di seguito. Se applicabile, puoi:
      • Utilizzare il menu Entità di dati per selezionare un'entità di dati in base al nome.

      • Fare clic su Sfoglia entità dati per utilizzare un altro pannello per sfogliare o cercare l'elenco disponibile, quindi selezionare un'entità dati.

        Fare riferimento alla sezione Selezione di un'entità dati per informazioni sulla ricerca nell'elenco utilizzando un nome completo o parziale.

        È possibile includere uno o più parametri del flusso di dati nel nome di un'entità dati selezionata utilizzando la sintassi ${PARAMETER_NAME}. Ad esempio: BANK_${REGION}

        Fare riferimento alla sezione Utilizzo dei parametri nei nomi delle entità dati per informazioni sull'aggiunta e l'utilizzo dei parametri durante la configurazione dei nomi delle entità.

    2. A seconda del tipo di asset dati per questo operatore di origine, selezionare l'entità dati e completare un'ulteriore configurazione, se applicabile.
      Tipo di asset dati descrizione;

      Oracle Database

      Oracle Database su Amazon RDS

      Oracle Siebel

      Oracle Peoplesoft

      Oracle E-Business Suite

      Oracle ATP e ADW

      MySQL

      MySQL di Heatwave

      MySQL su Amazon RDS

      Amazon RDS per SQL Server

      Microsoft SQL Server

      Database Microsoft Azure SQL

      IBM DB2

      Nei dettagli:

      • Selezionare l'entità di dati in base al nome.

      • Se applicabile, fare clic su Immetti SQL personalizzato per immettere una singola istruzione SQL nell'editor.

        Fornendo un'istruzione di query SQL, è possibile definire contemporaneamente un'entità di origine del database e la forma dell'entità. Ad esempio, è possibile definire e filtrare i dati in un'istruzione SQL anziché aggiungere un operatore di filtro dopo aver definito l'entità da utilizzare per l'operatore di origine.

        Nota: nelle istruzioni SQL utilizzare virgolette singole per i parametri. Ad esempio: select * from ORDERS where Created_On >= '${SYS.LAST_LOAD_DATE}'

        Dopo aver immesso la query SQL, fare clic su Convalida per verificare la presenza di errori nell'istruzione.

      • Se disponibile e applicabile, attenersi alla procedura riportata di seguito per caricare solo i record nuovi o aggiornati dall'origine alla destinazione.

        • Selezionare la casella di controllo Caricamento incrementale per identificare e caricare solo le righe create o modificate dall'ultima esecuzione del processo di caricamento.

        • Per la colonna Watermark, selezionare la colonna utilizzata per contrassegnare le righe caricate in modo incrementale. È possibile utilizzare come colonna watermark solo le colonne DATE, TIMESTAMP e DATETIME.

      Oracle Fusion Applications mediante Oracle BI Cloud Connector (BICC)

      Nella scheda Dettagli selezionare un oggetto vista BICC (VO) come entità dati da cui estrarre i dati. Utilizzare quindi il menu Strategia di estrazione per scegliere la modalità di estrazione dei dati di origine.

      • Completo: estrae e carica tutti i dati dalla data di estrazione iniziale facoltativa specificata. Se non si specifica una data in Data estrazione iniziale, verranno estratti tutti i dati.
      • Incrementale: consente di estrarre e caricare solo i dati creati o modificati dopo una data specifica.
        • Selezionare Gestito per utilizzare l'ultima data tracciata e gestita da Data Integration. Non si specifica esplicitamente una data.
          Importante

          L'opzione Gestito recupera 24 ore in più di dati nel passato.

          In Data Integration viene aggiunto il parametro SYS.LAST_LOAD_DATE per tenere traccia della data dell'ultimo caricamento o dell'esecuzione del task e la data dell'ultimo caricamento riuscito viene memorizzata come watermark nelle esecuzioni consecutive. Quando il task viene eseguito, è possibile modificare il valore dell'ultima data memorizzata nel sistema.

        • Selezionare Personalizzato per specificare la data nel campo Data ultima estrazione.

      Selezionare quindi un'altra storage di configurazione esterna BICC per i dati estratti, se non si desidera utilizzare l'impostazione predefinita dell'asset dati. L'impostazione predefinita dell'asset dati è la memorizzazione esterna BICC configurata all'interno dell'asset dati BICC Fusion Applications quando l'asset è stato creato o modificato.

      Facoltativamente, nella scheda Opzioni avanzate completare le operazioni riportate di seguito.

      Selezionare Abilita broker BI se si desidera che l'estrattore BICC legga le righe di input direttamente dal database Fusion Applications anziché da un normale percorso di estrazione.
      Importante

      • La modalità broker BI è un'opzione di ottimizzazione delle prestazioni per gli utenti avanzati.
      • La modalità broker BI è una funzione BICC supportata solo per alcuni data store. Estrazione non riuscita per i data store non supportati.
      • Con l'opzione broker BI, le prestazioni di estrazione potrebbero migliorare poiché le query vengono eseguite direttamente sui data store nel database di base. Il miglioramento delle prestazioni dipende dal data store, dal carico di lavoro corrente sul server BI, dal carico di lavoro corrente sul database e da altri fattori.
      • In alcuni casi, l'abilitazione della modalità broker BI modifica i tipi di dati delle colonne di origine.
      Se non si seleziona Abilita broker BI, i dati vengono estratti tramite il server BI. Per ulteriori informazioni, vedere Modalità di estrazione broker nella sezione Configura offerte da estrarre della guida Creazione di un'estrazione Business Intelligence Cloud. La guida BICC fa parte dell'elenco di registri Applications Common nella documentazione di Oracle Fusion Cloud Applications Suite.

      Per le proprietà delle colonne BICC, selezionare il tipo di colonne dall'origine BICC da includere come attributi nella destinazione.

        • Tutto: vengono incluse tutte le colonne dell'oggetto PVO BICC. Tuttavia, le colonne con nomi che iniziano con ExtnAttribute o che hanno lo stesso nome ed etichetta non vengono visualizzate.

        • Solo predefinito: vengono incluse solo le colonne abilitate per l'estrazione per impostazione predefinita nel PVO BICC. Vengono visualizzate tutte le colonne, incluse quelle Flex.

        • Chiavi predefinite e primarie: vengono incluse le colonne predefinite e primarie del PVO BICC. Vengono visualizzate tutte le colonne, incluse quelle Flex.

        • Solo chiavi primarie: vengono incluse solo le colonne principali del valore PVO BICC. Vengono visualizzate tutte le colonne, incluse quelle Flex.

      Oracle Fusion Applications mediante Oracle BI Publisher (BIP)

      Nella scheda Dettagli:

      • In Entità dati, selezionare un report. Consulta il blog sull'estrazione di dati da Oracle Fusion Applications mediante BIP in Data Integration per un promemoria della posizione del report.
      • Specificare la posizione area intermedia, ovvero il bucket di storage degli oggetti per l'area intermedia dei dati estratti. Se l'asset dati selezionato dispone di una posizione area intermedia predefinita specificata, Data Integration utilizza automaticamente l'asset dati e il bucket dello storage degli oggetti specificati come posizione area intermedia predefinita in tale asset dati. Se l'asset dati selezionato non dispone di una posizione area intermedia predefinita specificata, è possibile selezionare l'asset dati dello storage degli oggetti contenente il bucket che si desidera utilizzare per l'area intermedia. In caso contrario, è possibile aggiornare l'asset dati per aggiungere una posizione area intermedia predefinita oppure selezionare un asset dati diverso.

      Quindi, nella scheda Opzioni avanzate completare le operazioni riportate di seguito.

      • Selezionare Abilita limite di righe per specificare il numero massimo di righe da recuperare.

      • Nel campo Limite righe specificare il limite di righe.

      • Se si prevede un volume di dati di grandi dimensioni, specificare la dimensione nel campo Dimensione chunk in Abilita chunking. Dimensione chunk è obbligatoria se il limite di riga specificato è maggiore di 100000.

        Per informazioni su come eseguire il chunking, vedere il blog Estrarre dati da Oracle Fusion Applications utilizzando BIP in Data Integration.

      • Nella sezione Proprietà BIP vengono visualizzati i parametri del report BIP selezionati per l'entità dati. Selezionare una proprietà nei campi Numero di righe restituite e Offset iniziale. Impossibile selezionare la stessa proprietà per entrambi i campi.
      • Per caricare solo record nuovi o aggiornati dall'origine alla destinazione:
        • Selezionare la casella di controllo Caricamento incrementale per identificare e caricare solo i dati creati o modificati dall'ultima esecuzione del processo di caricamento.
        • Per la colonna Watermark, selezionare la proprietà utilizzata per contrassegnare i dati caricati in modo incrementale.
    3. Dopo aver selezionato un'entità dati, il nome dell'entità dati selezionata viene visualizzato accanto all'entità dati nella scheda Dettagli del pannello Proprietà.
      • Se è stata fornita un'istruzione SQL, viene visualizzata l'etichetta SQL_ENTITY<nnnnnnnnn>, ad esempio: SQL_ENTITY123456789

      • Se nel nome dell'entità è stato utilizzato un parametro, l'etichetta include il nome del parametro, ad esempio: BANK_${REGION}

        Nota

        Per un'entità dati che include un parametro nel nome, non è possibile associare la risorsa entità a un altro parametro. L'opzione Assign parameter non è disponibile.

  5. Per selezionare un'entità dati proveniente da un asset dati di storage degli oggetti, Amazon S3 o HDFS, effettuare le operazioni riportate di seguito.
    1. Utilizzare il pannello Seleziona entità dati per selezionare una singola entità in base al nome oppure selezionare una o più entità utilizzando un'espressione di pattern.
      • Fare clic su Sfoglia per nome per utilizzare un altro pannello per sfogliare o cercare la lista disponibile, quindi selezionare un'entità dati per nome.

        Fare riferimento alla sezione Selezione di un'entità dati per informazioni sulla ricerca nell'elenco utilizzando un nome completo o parziale.

        È possibile includere uno o più parametri del flusso di dati nel nome di un'entità dati selezionata utilizzando la sintassi ${PARAMETER_NAME}. Ad esempio: BANK_${REGION}.csv

        Fare riferimento alla sezione Utilizzo dei parametri nei nomi delle entità dati per informazioni sull'aggiunta e l'utilizzo dei parametri durante la configurazione di un'entità dati in base al nome.

      • Fare clic su Sfoglia per pattern per utilizzare un'espressione regolare (compresi i caratteri jolly) per selezionare una o più entità che corrispondono a una directory e a un modello di file specifici. Ad esempio, immettere CUSTOMERS* nel campo e premere Invio per filtrare l'elenco. Vedere Test e utilizzo di un pattern.

        È inoltre possibile includere parametri nell'espressione del pattern utilizzando la sintassi ${PARAMETER_NAME}. Ad esempio: CUSTOMERS_${REGION}/*

        Fare riferimento alla sezione Utilizzo dei parametri nei nomi delle entità dati per informazioni sull'aggiunta e l'utilizzo dei parametri durante la configurazione dei nomi delle entità dati in base al pattern.

        Nota

        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.

        Per un'entità dati che include un parametro nel nome, non è possibile associare la risorsa entità a un altro parametro. L'opzione per assegnare un parametro non è disponibile.

    2. Dopo aver effettuato la selezione dell'entità dati in base al nome o al pattern, completare la configurazione dell'entità nel pannello Seleziona entità dati.

      La modalità di completamento della configurazione dipende dal tipo di file scelto per l'entità dati selezionata.

      Tipo di file descrizione;

      CSV

      Se per selezionare l'entità dati è stata utilizzata l'opzione Sfoglia per nome, è possibile fare clic su Anteprima dati di tipo RAW per visualizzare le prime 10 righe del file.

      Selezionare il tipo di compressione (metodo di compressione) utilizzato. Se non si conosce il metodo di compressione utilizzato per comprimere il file, selezionare Automatico (predefinito).

      La codifica predefinita è UTF-8, che non può essere modificata.

      Di seguito sono riportate le altre impostazioni che è possibile configurare.

      • Se la prima riga del file è una riga di intestazione, selezionare per Ha intestazione.
      • Se i valori nelle righe di dati si estendono su più righe, selezionare per Multilinea.
      • Specificare il carattere orizzontale che esegue l'escape di altri caratteri trovati nei valori dei dati. Ad esempio: \
      • Selezionare il carattere Delimitatore che separa i campi dati. Ad esempio: COLON (:), COMMA (,), PIPE (|), SEMICOLON (;) o TAB (\t)
      • Se alla fine di una riga di dati nel file è incluso un delimitatore di colonna, selezionare per Delimitatore finale.
      • Specificare il carattere Preventivo che considera gli altri caratteri come caratteri letterali. Ad esempio: "

      JSON

      Selezionare il tipo di compressione (metodo di compressione) utilizzato. Se non si conosce il metodo di compressione utilizzato per comprimere il file, selezionare Automatico (predefinito).

      La codifica predefinita è UTF-8, che non può essere modificata.

      Selezionare Usa schema personalizzato per incollare o caricare uno schema di esempio personalizzato utilizzato per derivare la forma dell'entità. Quando questa casella di controllo è selezionata, la deviazione dello schema non è più applicabile nell'entità di origine.

      • Se si seleziona Carica, eliminare un file di schema personalizzato nella casella fornita oppure fare clic su Seleziona un file per selezionare il file di schema da caricare.

      • Se si seleziona Incolla schema, copiare il contenuto del file di testo dello schema e incollarlo nella casella fornita.

      PARQUET

      Il tipo di compressione predefinito è Automatico, che non può essere modificato.

      AVRO

      Il tipo di compressione predefinito è Automatico, che non può essere modificato.

      ECCEL

      Sono supportati solo i file XLSX.

      Il tipo di compressione predefinito è Automatico, che non può essere modificato.

      Per impostazione predefinita, Data Integration considera la prima riga di un file come una riga di intestazione. Se la prima riga di un file non è una riga di intestazione, selezionare No per Ha intestazione.

      Per Seleziona entità per, è possibile scegliere i criteri come Nome foglio, Indice foglio o Nome tabella. Immettere quindi un valore per il nome del foglio di lavoro, l'indice del foglio di lavoro o il nome della tabella. L'indice del foglio è a base zero.

      Per Nome foglio o Indice foglio, immettere l'area del file da utilizzare come Intervallo dati per la selezione. Se non si immette un valore per l'intervallo di dati, il valore predefinito è l'intervallo di dati A1, che corrisponde all'intero foglio. Se il file contiene una riga di intestazione, immettere un valore che inizi dalla riga di intestazione, ad esempio A1:K56.

    3. Dopo aver completato la configurazione dell'entità dati, fare clic su Seleziona.

      Viene visualizzata di nuovo la scheda Dettagli nel pannello Proprietà. Il nome dell'entità dati o dell'espressione pattern entità selezionata viene visualizzato accanto a Entità dati. Ad esempio, CUSTOMERS_EU.csv, CUSTOMERS* o CUSTOMERS_${REGION}/*

      Nota

      Per un'entità dati che include un parametro nel nome, non è possibile associare la risorsa entità a un altro parametro. L'opzione Assign parameter non è disponibile.

    4. Se disponibile e applicabile, selezionare la casella di controllo Caricamento incrementale per identificare e caricare solo i dati creati o modificati dall'ultima esecuzione del processo di caricamento.

      Per gli asset dati di file come lo storage degli oggetti, Data Integration esegue l'estrazione incrementale in base alla data dell'ultima modifica (indicatore orario) degli oggetti selezionati in una cartella o selezionati da un pattern di file.

      Ad esempio, si supponga che il 5 gennaio siano presenti tre file nel bucket di storage degli oggetti: EMPLOYEE_1.csv, EMPLOYEE_2.csv, EMPLOYEE_3.csv

      Se un processo di caricamento viene eseguito correttamente il 5 gennaio, vengono elaborati tutti e tre i file.

      • Il 6 gennaio viene aggiunto un nuovo file EMPLOYEE_4.csv al bucket; questo file ha la data dell'ultima modifica (indicatore orario) del 6 gennaio. Se un job di caricamento viene eseguito il 6 gennaio, solo EMPLOYEE_4.csv viene prelevato ed elaborato per il caricamento incrementale dei dati.
      • Il 6 gennaio viene aggiunto un nuovo file EMPLOYEE_4.csv al bucket; questo file ha la data dell'ultima modifica (indicatore orario) del 6 gennaio. Il file EMPLOYEE_2.csv viene modificato anche il 6 gennaio. Se un job di caricamento viene eseguito il 6 gennaio, i file EMPLOYEE_2.csv e EMPLOYEE_4.csv vengono selezionati per l'elaborazione.
  6. (Facoltativo) Nella scheda Dettagli, selezionare l'icona di aggiornamento accanto al nome entità selezionato per assicurarsi di utilizzare gli schemi più recenti dell'entità durante la sessione di lavoro corrente nel designer. Vengono recuperati solo i metadati dell'entità, non le modifiche effettive ai dati.
  7. (Facoltativo) Nella scheda Opzioni avanzate, a seconda del tipo di asset dati per questo operatore di origine, è possibile selezionare o deselezionare le opzioni applicabili.

    Elemento descrizione;

    Recupera metadati dei file come attributi

    Selezionare la casella di controllo per includere i metadati del file (ad esempio il nome e la dimensione del file) come attributi nei dati restituiti.

    I caratteri speciali (spazio incluso) nei nomi dei file non sono supportati.

    Consenti deviazione schema

    Per impostazione predefinita, la deviazione dello schema è abilitata per consentire a Data Integration di gestire in modo dinamico le modifiche alla definizione dello schema durante il tempo di progettazione e il runtime del flusso di dati. La deviazione dello schema è una modifica alle definizioni dello schema nell'entità dati specificata. Le modifiche includono attributi aggiunti o rimossi e tipi di dati degli attributi o nomi di entità modificati.

    Se si deseleziona la casella di controllo Consenti deviazione schema, si disabilita la deviazione dello schema per bloccare le definizioni dello schema quando viene definito il flusso di dati. Quando la deviazione dello schema è disabilitata, Data Integration utilizza una forma fissa dell'entità dati specificata anche quando la forma di base è stata modificata.

    Se si seleziona uno schema personalizzato, la deviazione dello schema non è applicabile e questa opzione non può essere selezionata.

    Considera vuoto il file mancante

    Solo per un asset dati di storage degli oggetti.

    Questa casella di controllo è disponibile solo quando non è selezionata l'opzione Consenti deviazione schema.

    Consenti pushdown

    Per impostazione predefinita, il pushdown è abilitato per consentire a Data Integration di utilizzare il sistema di database di origine per elaborare le operazioni di trasformazione, se il sistema supporta il pushdown. Solo i database Oracle, Oracle Autonomous Data Warehouse, Oracle Autonomous Transaction Processing e MySQL supportano il pushdown. Meno dati vengono estratti dall'origine quando Data Integration utilizza il sistema di database di origine per elaborare le operazioni.

    Deselezionando la casella di controllo Consenti pushdown, si disabilita il pushdown. Quando il pushdown è disabilitato, Data Integration estrae tutti i dati direttamente dal sistema di origine ed elabora le trasformazioni.

    Impostazioni Parametro e Intestazione

    Solo per un asset dati REST.

    Utilizzare le impostazioni Parametro e Intestazione per configurare altre proprietà di origine.

  8. Nella scheda Attributi, visualizzare gli attributi dall'entità dati selezionata. Per un asset dati BICC Fusion Applications, gli attributi sono le colonne BICC dell'oggetto vista selezionato.

    È possibile selezionare singoli attributi o utilizzare le icone di filtro per filtrare l'elenco di attributi. Applica quindi regole di esclusione di massa agli attributi selezionati o filtrati.

    • Fare clic sull'icona del filtro nella colonna Nome per filtrare gli attributi in base a un pattern di nomi. Nel campo Filtro, immettere un'espressione regolare semplice. È possibile utilizzare i caratteri jolly ? e * nel pattern regex.
    • Fare clic sull'icona del filtro nella colonna Tipo per filtrare gli attributi in base a un tipo di dati. Utilizzare il menu per selezionare il tipo da utilizzare come filtro.
      Nota

      È possibile applicare un solo filtro pattern di nomi, ma più filtri di tipo alla volta. Ad esempio, per filtrare in base al pattern di nomi *_CODE e al tipo numerico o varchar, applicare un filtro di pattern di nomi (*_CODE) e due filtri di tipo (numerico, varchar).
    • Utilizzare il menu Azioni per applicare regole di esclusione di massa agli attributi selezionati o agli attributi filtrati. Selezionare Escludi per selezione o Escludi per filtro applicato.
    • Fare clic su Visualizza regole per aprire il pannello Regole. È possibile visualizzare e gestire le regole applicate all'entità dati. Per impostazione predefinita, la prima regola nel pannello Regole include tutti gli elementi.

    Un tipo complesso viene visualizzato come ARRAY (tipo di dati), COMPOSITE o MAP (tipo di chiave, tipo di valore). Vedere Tipi di dati gerarchici per comprendere gli elementi supportati per i tipi complessi.

  9. Nella scheda Dati visualizzare una campionatura dei dati, in base alla configurazione dell'operatore e alle regole applicate nella scheda Attributi.

    Per un asset dati BICC Fusion Applications, vengono visualizzate solo 10 righe di dati.

    Il profilo dati non viene visualizzato per gli attributi dati complessi. Per gli attributi dati complessi, per visualizzare la gerarchia della struttura dati in una struttura semplificata, fare clic sui dati complessi visualizzati. Ad esempio, [...] o {…}.

    È possibile applicare le trasformazioni a singoli attributi oppure eseguire una trasformazione di massa in un gruppo di attributi.

    Per le entità con tipi di dati gerarchici, vedere Tipi di dati gerarchici per comprendere gli elementi supportati.

  10. Nella scheda Convalida verificare la presenza di avvertenze o errori che potrebbero causare l'errore del flusso di dati.
Uso dei pattern di file

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
*.htmlCorrisponde 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?*.javaCorrisponde 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]*jsonCorrisponde 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/**.csvCorrisponde a tutti i file con estensione csv che si trovano nella cartella directory3 e nelle relative sottocartelle
directory3/*.csvCorrisponde a tutti i file con estensione csv che si trovano solo nella cartella principale directory3. I file nelle cartelle secondarie non sono inclusi.
Test e utilizzo di un pattern

È 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.

  1. Nel pannello Seleziona entità dati fare clic su Sfoglia per pattern.

  2. Nel pannello Sfoglia entità dati per pattern, selezionare Test pattern dal menu Altre azioni.

  3. 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 directory department1/2020. È possibile utilizzare la sintassi dei parametri ${} nel campo Pattern di ricerca.

  4. 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
  5. Fare clic su Test pattern.

    Verificare che i nomi dei file di test vengano restituiti nel blocco Nome file risultante.

  6. 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.

  7. 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.

Uso del caricamento incrementale gestito di Data Integration (BICC)

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:

  1. Nel flusso di dati, assegnare i parametri per lo schema di origine (offerta BICC) e l'entità dati (oggetto vista BICC).
  2. Crea e pubblica un task di integrazione per il flusso di dati con parametri.
  3. 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.
  4. 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.

Aggiunta e configurazione di un operatore di destinazione

È possibile aggiungere più operatori di destinazione a un flusso di dati. Ogni destinazione può avere una sola porta in entrata.

Importante

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à.
  1. Nel pannello Operatori trascinare un operatore Destinazione sull'area di creazione.
  2. Con l'operatore di destinazione attivo, nella scheda Dettagli del pannello Proprietà effettuare le operazioni riportate di seguito.

    Elemento descrizione;

    Identificativo

    Immettere un nome per l'operatore di destinazione oppure lasciare il nome predefinito così com'è.

    Crea nuova entità dati

    (Facoltativo) Selezionare la casella di controllo per creare una nuova entità nella destinazione, invece di aggiornare un'entità esistente nella destinazione. In un passo successivo viene richiesto di immettere un nome per l'entità dati da creare nella destinazione.

    Non selezionare la casella di controllo se si desidera utilizzare un'entità dati esistente come destinazione. Viene richiesto di selezionare l'entità dati dopo aver selezionato l'asset dati, la connessione e lo schema di destinazione.

    Asset dati

    Connessione

    Schema o Bucket

    Nell'ordine delle risorse presentato, fare clic su Seleziona accanto alla risorsa per selezionare l'asset dati, la connessione e lo schema o il bucket.

    Tenere presente quanto riportato di seguito.

    • Non tutti i tipi di origine dati sono disponibili come asset dati di destinazione. Ad esempio, PostgreSQL e Hive non sono disponibili come destinazioni.

    • Per la strategia di integrazione di unione non è possibile utilizzare un asset dati di storage degli oggetti come destinazione.

    • Se si utilizza un asset dati di storage degli oggetti, selezionare prima il compartimento e quindi il bucket.

    • Per utilizzare Autonomous Data Warehouse o Autonomous Transaction Processing come destinazione, è necessario un bucket di storage degli oggetti come posizione area intermedia. Se si seleziona un asset dati per il quale non è stata specificata una posizione area intermedia predefinita nell'asset dati, Data Integration visualizza una notifica di avvertenza. Quando viene visualizzata la notifica, scegliere una delle seguenti opzioni:
      • Selezionare Aggiorna asset dati per aggiungere una posizione area intermedia predefinita a tale asset dati.
      • Fare clic su Seleziona accanto alla posizione area intermedia nel pannello Proprietà per selezionare l'asset dati dello storage degli oggetti contenente il bucket che si desidera utilizzare per l'area intermedia.
      L'autorizzazione richiesta PAR_MANAGE è obbligatoria. Per ulteriori informazioni, vedere il punto 5.

    Entità dati

    Se è stata selezionata la casella di controllo Crea nuova entità dati, immettere un nome per l'entità da creare come destinazione. Per ulteriori informazioni, vedere il punto 3.

    Se non è stata selezionata la casella di controllo Crea nuova entità dati, selezionare un'entità dati esistente come destinazione. Per ulteriori informazioni, vedere il punto 4.

    (Solo per gli asset dati di tipo Autonomous Data Warehouse o Autonomous Transaction Processing)

    Posizione intermedia

    Integrazione dati utilizza la posizione area intermedia per posizionare i dati nell'area intermedia prima di caricare i dati nella destinazione.

    Per ulteriori informazioni, vedere il punto 5.

    Strategia di integrazione

    Il modo in cui i dati vengono spostati nell'entità dati di destinazione dipende dalla strategia di integrazione scelta. Sono disponibili le seguenti opzioni:

    • Inserisci: inserisce nuovi record o aggiunge i record quando i dati esistono nella destinazione.

      Se la casella di controllo Crea nuova entità dati è selezionata, l'opzione di strategia solo disponibile per la selezione è Inserisci.

    • Sovrascrivi: esegue un troncamento sulla destinazione prima di inserire nuovi record.

      Se si seleziona la strategia Sovrascrivi, non è possibile creare una nuova entità dati per l'entità di destinazione.

    • Unisci: inserisce nuovi record e unisce i record esistenti in un'entità dati esistente.

      Quando si utilizza la strategia Unisci, tenere presente quanto riportato di seguito.

      • La strategia Unisci è disponibile solo per le destinazioni del database. Non è possibile utilizzare un asset dati di storage degli oggetti come destinazione se si desidera utilizzare questa strategia di integrazione.

      • La chiave Unisci identifica l'attributo o gli attributi per determinare quali righe esistenti o nuove aggiornare o inserire. È possibile selezionare una chiave primaria/una chiave univoca o una chiave non primaria come chiave di unione.

        Fare clic su Seleziona o Modifica. Nel pannello Chiave di unione, eseguire una delle seguenti azioni:

        • Selezionare Attributi chiave primaria/unica e selezionare una chiave.
        • Selezionare Altri attributi per utilizzare altri attributi (non principali). Immettere un nome per la chiave di unione e selezionare gli attributi dall'elenco.
      • Se un'entità dati di destinazione con parametri è configurata per utilizzare la strategia Unisci, è possibile modificare la selezione della chiave Unisci:
        • In un task di integrazione in fase di progettazione e runtime
        • In un task di integrazione in una pipeline in fase di progettazione e in fase di runtime (task pipeline)
        • In una pianificazione task (task di integrazione e task pipeline)

    (Solo per lo storage degli oggetti)

    Crea output come singolo file

    Questo passo è facoltativo per le destinazioni dello storage degli oggetti.

    Selezionare la casella di controllo Crea output come singolo file per scrivere l'output in un singolo file, altrimenti l'operazione crea più file. Il singolo file di output viene sovrascritto ogni volta che viene eseguito il task.

    La creazione di un singolo file di output può influire sulle prestazioni di Data Integration. Non utilizzare l'opzione del singolo file di output per set di dati di grandi dimensioni.

    È possibile scegliere di scrivere l'output in un singolo file solo se si verifica una delle condizioni riportate di seguito.

    • Quando l'opzione Strategia di integrazione è impostata su Inserisci e la casella di controllo Crea nuova entità dati è selezionata. Non aggiungere la barra (/) alla fine del nome della nuova entità. Per ulteriori informazioni, vedere il punto 3.
    • Quando la strategia di integrazione è Sovrascrivi e si utilizza un'entità dati esistente (la casella di controllo Crea nuova entità dati non è selezionata). Selezionare un'entità dati esistente che non abbia la barra (/) alla fine del nome dell'entità. Per ulteriori informazioni, vedere il punto 4.
  3. Se è stata selezionata la casella di controllo Crea nuova entità dati, immettere un nome per l'entità da creare. Una nuova entità dati viene creata solo se il nome non esiste.

    Vedere anche Parametri nei nomi delle entità dati se si desidera utilizzare un parametro per parte del nuovo nome di entità.

    A seconda del tipo di asset dati, tenere presente quanto riportato di seguito quando si inserisce un nome per l'entità dati.

    Tipo di oggetto descrizione;

    Per Oracle Database, Autonomous Data Warehouse o Autonomous Transaction Processing

    Immettere il nuovo nome dell'entità dati.

    Quando si crea un'entità dati di database come output di destinazione, se il nome entità fornito non esiste, viene creata un'entità dati e i dati vengono inseriti nell'output. Se il nome entità specificato esiste, il risultato dell'operazione dipende dalla forma della destinazione nel flusso di dati e dalla forma dell'entità esistente.

    Una forma si basa sul numero e sul nome degli attributi, dei tipi di dati, delle caratteristiche del tipo, ad esempio la lunghezza e la precisione, nonché sulla presenza o meno di dati. Ad esempio, il tipo di dati varchar2(4000) non è la stessa forma di varchar2(2000) anche se il nome dell'attributo nella destinazione del flusso di dati è uguale al nome dell'attributo nell'entità dati esistente.

    • Se la forma dell'entità di destinazione nel flusso di dati è uguale alla forma dell'entità esistente, l'operazione del database:
      • Inserisce i dati, se non sono presenti dati
      • Aggiorna o inserisce dati, se sono presenti dati
    • Se la forma dell'entità di destinazione nel flusso di dati non è uguale alla forma dell'entità esistente:
      • L'operazione aggiunge l'attributo all'entità esistente quando il nome attributo non esiste.

        Ad esempio, la destinazione nel flusso di dati ha l'attributo EMPLOYEE_ID NUMBER(10), ma EMPLOYEE_ID NUMBER non è presente nell'entità esistente.

      • Quando il nome dell'attributo è presente nell'entità esistente, ma la forma del tipo di dati non è la stessa:
        • Quando sono presenti dati di attributo, l'operazione del database non riesce quando la forma dati è più piccola. Ad esempio, se la destinazione nel flusso di dati ha EMPLOYEE_COMMENTS VARCHAR2(4000) e l'entità esistente ha EMPLOYEE_COMMENTS VARCHAR2(2000), l'operazione non riesce. Quando la destinazione nel flusso di dati ha EMPLOYEE_COMMENTS VARCHAR2(2000) e l'entità esistente ha EMPLOYEE_COMMENTS VARCHAR2(4000), l'operazione viene eseguita correttamente.

        • Se i dati dell'attributo non sono presenti, l'operazione modifica l'attributo e inserisce i dati.

          Se la destinazione è un database autonomo, è possibile che venga visualizzato l'errore del database ORA-22859: invalid modification of columns quando si tenta di modificare un oggetto colonna, REF, VARRAY, tabella nidificata o tipo di colonna LOB. Creare una colonna del tipo preferito e copiare i dati della colonna nel nuovo tipo utilizzando il costruttore del tipo appropriato.

    Si noti inoltre che la conversione tra TEXT e CLOB non è supportata in Data Integration. Con un limite di 4000 byte per una colonna VARCHAR2 in un database autonomo, potrebbe essere necessario utilizzare un'entità dati di destinazione esistente con un tipo di dati CLOB invece di selezionare la casella di controllo Crea nuova entità dati in alcuni casi d'uso.

    Per lo storage degli oggetti

    Immettere il nuovo nome dell'entità dati, seguito da una barra (/). Ad esempio, immettere newdirectory/.

    Tuttavia, se si seleziona la casella di controllo Crea output come singolo file perché si desidera creare un unico output di file, immettere il nuovo nome entità senza la barra (/) alla fine.

    Quando si scrive l'output in un singolo file, è possibile includere i parametri nel nome del file utilizzando la sintassi ${PARAMETER_NAME}. Ad esempio, il nome del file può essere scritto come:

    /bucket1/file_${REGION}.csv
    /bucket1/file_${CURRENT_DATE}.csv

    Selezionare anche Tipo di file e Tipo di compressione. I tipi di compressione disponibili per la selezione dipendono dal tipo di file scelto. Se non si conosce il metodo di compressione utilizzato per comprimere il file, selezionare Nessuno (predefinito).

    Per i tipi di file CSV e JSON, la codifica predefinita è UTF-8, che non può essere modificata.

    Se si sceglie il tipo di file CSV, le altre impostazioni che è possibile configurare sono le seguenti:

    • Se la prima riga del file è una riga di intestazione, selezionare per Ha intestazione.
    • Se i valori nelle righe di dati si estendono su più righe, selezionare per Multilinea.
    • Specificare il carattere orizzontale che esegue l'escape di altri caratteri trovati nei valori dei dati. Ad esempio: \
    • Selezionare il carattere Delimitatore che separa i campi dati. Ad esempio: COLON (:), COMMA (,), PIPE (|), SEMICOLON (;) o TAB (\t)
    • Se alla fine di una riga di dati nel file è incluso un delimitatore di colonna, selezionare per Delimitatore finale.
    • Specificare l'opzione Quote chracter che considera gli altri caratteri come caratteri letterali. Ad esempio: "
  4. Se non è stata selezionata la casella di controllo Crea nuova entità dati, selezionare un'entità dati esistente.

    Per assicurarsi di utilizzare gli schemi più recenti dell'entità durante la sessione di lavoro corrente nel designer, selezionare l'icona di aggiornamento accanto al nome dell'entità. Vengono recuperati solo i metadati dell'entità, non le modifiche effettive ai dati.

    A seconda del tipo di asset dati, tenere presente quanto riportato di seguito durante la configurazione per utilizzare un'entità dati esistente.

    Tipo di oggetto descrizione;

    Per lo storage degli oggetti

    Selezionare la casella di controllo Crea output come singolo file per utilizzare un singolo file di output, altrimenti l'operazione crea più file. Il singolo file di output viene sovrascritto ogni volta che viene eseguito il task.

    La creazione di un singolo file di output può influire sulle prestazioni di Data Integration. Non utilizzare l'opzione del singolo file di output per set di dati di grandi dimensioni.

    Se la casella di controllo Crea output come singolo file è selezionata: quando si seleziona l'entità dati, selezionare un nome entità che non abbia la barra (/) alla fine.

    Selezionare il tipo di file. Se il tipo di file è CSV, è possibile fare clic su Anteprima dati di tipo RAW per visualizzare le prime 10 righe del file.

    Selezionare il tipo di compressione. I tipi di compressione disponibili per la selezione dipendono dal tipo di file scelto. Se non si conosce il metodo di compressione utilizzato per comprimere il file, selezionare Nessuno (predefinito).

    Per i tipi di file CSV e JSON, la codifica predefinita è UTF-8, che non può essere modificata.

    Se il tipo di file è CSV, le altre impostazioni che è possibile configurare sono le seguenti:

    • Se la prima riga del file è una riga di intestazione, selezionare per Ha intestazione.
    • Se i valori nelle righe di dati si estendono su più righe, selezionare per Multilinea.
    • Specificare il carattere orizzontale che esegue l'escape di altri caratteri trovati nei valori dei dati. Ad esempio: \
    • Selezionare il carattere Delimitatore che separa i campi dati. Ad esempio: COLON (:), COMMA (,), PIPE (|), SEMICOLON (;) o TAB (\t)
    • Se alla fine di una riga di dati nel file è incluso un delimitatore di colonna, selezionare per Delimitatore finale.
    • Specificare il carattere Preventivo che considera gli altri caratteri come caratteri letterali. Ad esempio: "

    Se il tipo di file è JSON, selezionare Usa schema personalizzato per incollare o caricare uno schema di esempio personalizzato utilizzato per derivare la forma dell'entità.

    • Se si seleziona Carica, eliminare un file di schema personalizzato nella casella fornita oppure fare clic su Seleziona un file per selezionare il file di schema da caricare.

    • Se si seleziona Incolla schema, copiare il contenuto del file di testo dello schema e incollarlo nella casella fornita.

  5. Per Autonomous Data Warehouse o Autonomous Transaction Processing, selezionare la posizione area intermedia se non è definita una posizione predefinita per l'asset oppure modificare la posizione per utilizzare una posizione area intermedia diversa.
    Nota

    Se la destinazione è Autonomous Data Warehouse o Autonomous Transaction Processing, l'opzione relativa alla posizione area intermedia viene abilitata per la selezione di un bucket di storage degli oggetti. Integrazione dati utilizza la posizione area intermedia per posizionare i dati nell'area intermedia prima di caricare i dati nella destinazione.

    Se l'asset dati di destinazione è configurato con una posizione area intermedia predefinita, Data Integration utilizza automaticamente tale bucket per l'area intermedia a meno che non si modifichi in modo esplicito il valore per specificare una posizione area intermedia diversa.

    Per utilizzare Autonomous Data Warehouse o Autonomous Transaction Processing come destinazione, è necessario prima abilitare l'autorizzazione richiesta PAR_MANAGE sul bucket area intermedia, ad esempio:

    allow any-user to manage buckets in compartment <compartment-name> where ALL {request.principal.type='disworkspace', request.permission='PAR_MANAGE', request.principal.id='<workspace-ocid>'}

    Ulteriori informazioni sull'uso delle richieste preautenticate.

    1. Per Posizione area intermedia, fare clic su Seleziona o Modifica.
    2. (Per la modifica) Nel pannello Seleziona posizione area intermedia, non selezionare la casella di controllo Usa impostazioni posizione area intermedia predefinite se si desidera selezionare una posizione area intermedia diversa.
    3. Fare clic sul menu Asset dati e selezionare un asset dati di storage degli oggetti.
    4. Selezionare quindi Connessione, Compartimento e il Bucket, quindi fare clic su Seleziona.
  6. (Facoltativo) Nella scheda Opzioni avanzate, a seconda del tipo di asset dati per questo operatore di destinazione, è possibile inserire valori o utilizzare valori predefiniti.

    Elemento descrizione;

    Limite del rifiuto

    Per Autonomous Data Warehouse o Autonomous Transaction Processing

    Immettere un valore.

    È possibile specificare il numero massimo di righe errate che non possono essere caricate nella destinazione prima che il task di integrazione non riesca. Ad esempio, se l'origine dati contiene 1.000 righe e si imposta il limite di rifiuto su 200, il task non riesce immediatamente dopo il rifiuto della 200a riga errata.

    Se non si specifica un valore, il valore predefinito è zero, ovvero il task non riesce alla prima riga errata rifiutata.

    Se si verifica un errore del task, controllare nei log i nomi delle tabelle in cui le righe sono state rifiutate. Quindi eseguire una query sulle tabelle e sulle righe interessate nel database autonomo.

    Ordine di caricamento

    Immettere un valore.

    Sono consentiti solo i numeri interi positivi. Il valore predefinito è 0. L'ordine di caricamento specifica l'ordine dei nodi di destinazione in cui vengono caricati i dati. La destinazione con valore 0 viene caricata prima, quindi la destinazione con valore 1 e così via. Se più nodi hanno lo stesso valore, le destinazioni non vengono caricate in un ordine particolare.

  7. Nella scheda Attributi è possibile selezionare singoli attributi oppure utilizzare le icone di filtro per filtrare la lista di attributi in base a un pattern di nomi o a un tipo di attributo. Applicare quindi regole di esclusione di massa agli attributi selezionati o filtrati.

    È possibile applicare un solo filtro pattern di nomi, ma più filtri di tipo alla volta. Ad esempio, per filtrare in base al pattern di nomi *_CODE e al tipo numerico o varchar, applicare un filtro di pattern di nomi (*_CODE) e due filtri di tipo (numerico, varchar).

    • Fare clic sull'icona del filtro nella colonna Nome per filtrare gli attributi in base a un pattern di nomi. Nel campo Filtro, immettere un'espressione regolare semplice. È possibile utilizzare i caratteri jolly ? e * nel pattern regex.
    • Fare clic sull'icona del filtro nella colonna Tipo per filtrare gli attributi in base a un tipo di dati. Utilizzare il menu per selezionare il tipo da utilizzare come filtro.
    • Utilizzare il menu Azioni per applicare regole di esclusione di massa agli attributi selezionati o agli attributi filtrati. Selezionare Escludi per selezione o Escludi per filtro applicato.
    • Fare clic su Visualizza regole per aprire il pannello Regole. È possibile visualizzare e gestire le regole applicate all'entità dati. Per impostazione predefinita, la prima regola nel pannello Regole include tutti gli elementi.

    Un tipo complesso viene visualizzato come ARRAY (tipo di dati), COMPOSITE o MAP (tipo di chiave, tipo di valore). Vedere Tipi di dati gerarchici per comprendere gli elementi supportati per i tipi complessi.

  8. Nella scheda Dati, visualizzare una campionatura dei dati in base alle regole applicate nella scheda Attributi. Impossibile applicare le trasformazioni a un operatore di destinazione perché i dati sono di sola lettura.

    Per le entità con tipi di dati gerarchici, vedere Tipi di dati gerarchici per comprendere gli elementi supportati.

  9. Nella scheda Mappa, specificare la modalità di mappatura degli attributi in entrata agli attributi dell'entità dati di destinazione. Tenere presente che gli attributi di mapping non sono applicabili se è stata selezionata la casella di controllo Crea nuova entità dati.

    Per le entità target con tipi di dati gerarchici, è possibile eseguire il mapping solo dei campi di primo livello. Per informazioni sugli elementi supportati, vedere Tipi di dati gerarchici.

  10. Nella scheda Convalida verificare la presenza di avvertenze o errori che potrebbero causare l'errore del flusso di dati.

    Integrazione dei dati verifica e fornisce avvertenze nelle situazioni riportate di seguito.

    • Il troncamento dei dati potrebbe verificarsi quando i dati vengono caricati dagli attributi di origine agli attributi di destinazione mappati.
    • Il tipo di dati di un attributo di origine non corrisponde al tipo di dati dell'attributo mappato.
Visualizzazione dei dati

Nella scheda Dati vengono visualizzati i dati trasformati in base agli operatori applicati nel flusso di dati.

Importante

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.

Mapping degli attributi

La scheda Mappa è disponibile solo per un operatore di destinazione.

Importante

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 per posizione

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 per nome

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 per pattern

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.

Mappa manuale diretta

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.

Rimuovere un mapping

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 (Menu Azioni) per cancellare la regola.

Cancella tutti i mapping

Rimuove tutti i mapping.

Nel menu Azioni selezionare Reimposta mapping. Tutte le regole di mapping manuale e automatico vengono rimosse.

Operatori di modellazione

Importante

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.

Aggiunta e configurazione di un operatore di filtro
  1. Nel pannello Operatori trascinare un operatore Filtro sull'area di creazione.
  2. Con l'operatore di filtro attivo, nella scheda Dettagli del pannello Proprietà, immettere un nome nel campo Identificativo o lasciare il nome così com'è.
  3. Accanto a Condizione filtro, fare clic su Crea.
  4. Nel pannello Crea condizione filtro, sezione Costruzione guidata condizione, è possibile fare doppio clic o trascinare attributi, parametri e funzioni da aggiungere all'editor per creare una condizione. È inoltre possibile immettere manualmente un'espressione di condizione nell'editor e convalidare l'espressione.
    Nota

    Nell'editor, un elemento aggiunto, ad esempio una funzione, potrebbe avere segnaposto. Per sostituire un segnaposto con un altro elemento, evidenziare il segnaposto, quindi fare doppio clic su un altro elemento dall'elenco.
  5. Fare clic su Crea.
  6. (Facoltativo) Fare clic su Assegna parametro per utilizzare i parametri in modo che la condizione di filtro non sia associata al codice compilato quando si pubblica il flusso di dati. Vedere Assegnazione di un parametro.
  7. Nella scheda Attributi selezionare questa opzione per visualizzare gli attributi o gli attributi di output in entrata. Gli attributi in entrata si collegano all'operatore sul lato sinistro. Gli attributi di output si collegano all'operatore sul lato destro e passano all'operatore successivo.

    È possibile selezionare singoli attributi o utilizzare le icone di filtro per filtrare l'elenco di attributi. Applica quindi regole di esclusione di massa agli attributi selezionati o filtrati.

    • Fare clic sull'icona del filtro nella colonna Nome per filtrare gli attributi in base a un pattern di nomi. Nel campo Filtro, immettere un'espressione regolare semplice. È possibile utilizzare i caratteri jolly ? e * nel pattern regex.
    • Fare clic sull'icona del filtro nella colonna Tipo per filtrare gli attributi in base a un tipo di dati. Utilizzare il menu per selezionare il tipo da utilizzare come filtro.
      Nota

      È possibile applicare un solo filtro pattern di nomi, ma più filtri di tipo alla volta. Ad esempio, per filtrare in base al pattern di nomi *_CODE e al tipo numerico o varchar, applicare un filtro di pattern di nomi (*_CODE) e due filtri di tipo (numerico, varchar).
    • Utilizzare il menu Azioni per applicare regole di esclusione di massa agli attributi selezionati o agli attributi filtrati. Selezionare Escludi per selezione o Escludi per filtro applicato.
    • Fare clic su Visualizza regole per aprire il pannello Regole. È possibile visualizzare e gestire le regole applicate all'entità dati. Per impostazione predefinita, la prima regola nel pannello Regole include tutti gli elementi.

    Un tipo complesso viene visualizzato come ARRAY (data type), COMPOSITE o MAP (key type, value type). Vedere Tipi di dati gerarchici per comprendere gli elementi supportati per i tipi complessi.

  8. Nella scheda Dati visualizzare una campionatura dei dati, in base alla configurazione dell'operatore e alle regole applicate nella scheda Attributi.

    Il profilo dati non viene visualizzato per gli attributi dati complessi. Per gli attributi dati complessi, per visualizzare la gerarchia della struttura dati in una struttura semplificata, selezionare i dati complessi visualizzati. Ad esempio, [...] o {…}.

    È possibile applicare le trasformazioni a singoli attributi oppure eseguire una trasformazione di massa in un gruppo di attributi.

    Per le entità con tipi di dati gerarchici, vedere Tipi di dati gerarchici per comprendere gli elementi supportati.

  9. Nella scheda Convalida verificare la presenza di avvertenze o errori che potrebbero causare l'errore del flusso di dati.
Creazione di 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.

Funzioni hash
Funzionedescrizione;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 expr e restituisce un valore NUMBER.

expr può essere un'espressione, una colonna, un valore.

max_bucket è il valore massimo del bucket restituito, compreso tra 0 e 4294967295 (impostazione predefinita).

seed_value è un valore compreso tra 0 (predefinito) e 4294967295.

Oracle applica la funzione hash alla combinazione di expr e seed_value per produrre molti risultati diversi per lo stesso set di dati.

ORA_HASH('1')

ORA_HASH('b', 2)

ORA_HASH(100, 10, 10)

ORA_HASH(EXPRESSION_1.CUSTOMERS.SSN, 2)

Funzioni aritmetriche
Funzionedescrizione;Esempio
ABS(numeric)Restituisce la potenza assoluta del valore numeric.ABS(-1)
CEIL(numeric)Restituisce il numero intero minimo non maggiore del valore numericCEIL(-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:

  • 0: una cifra
  • #: una cifra, zero viene visualizzata come assente
  • .: segnaposto per il separatore decimale
  • ,: segnaposto per il separatore di raggruppamento
  • E: separa mantissa ed esponente per i formati esponenziali
  • -: prefisso negativo predefinito
  • ¤: segno di valuta; sostituito dal simbolo di valuta; se raddoppiato, sostituito dal simbolo di valuta internazionale; se presente in un modello, viene utilizzato il separatore decimale monetario al posto del separatore decimale

TO_NUMBER('5467.12') returns restituisce 5467.12

TO_NUMBER('-USD45,677.7', '¤¤##,###.#', 'en-US') restituisce -45677.7

Funzioni di data e ora
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 expr di data, in base al valore format e all'opzione locale fornita. La versione locale predefinita è en-US. Tag lingua supportati.

Pattern di formato data supportati:

  • aa: anno composto da due cifre.
  • yyyy: anno composto da quattro cifre.
  • M: mese numerico, ad esempio 1 per gennaio
  • MM: mese numerico, ad esempio 01 per gennaio
  • MMM: mese abbreviato, ad esempio Gen
  • MMMM: mese completo, ad esempio gennaio
  • d: giorno numerico del mese, ad esempio 1 per il 1° giugno
  • dd: giorno numerico del mese, ad esempio 01 per il 1° giugno
  • DDD: giorno numerico dell'anno compreso tra 001 e 366, ad esempio 002 per il 2 gennaio
  • F: giorno numerico della settimana in un mese, ad esempio 3 per il 3° lunedì di giugno.
  • EEE o E: il giorno della settimana denominato abbreviato, ad esempio Sole per domenica
  • EEEE: il giorno della settimana, ad esempio la domenica.
  • HH: formato di 24 ore da 00 a 23
  • H: formato di 24 ore da 0 a 23
  • hh: formato di 12 ore da 01 a 12
  • h: formato di 12 ore da 1 a 12
  • mm: minuti da 00 a 59
  • ss: secondi da 00 a 59
  • SSS: millisecondi da 000 a 999
  • a: AM o PM
  • z: fuso orario come PDT

DATE_FORMAT(Date '2020-10-11', 'yyyy-MM-dd') restituisce '2020-10-11'. Il primo argomento è un oggetto Date che rappresenta l'11 ottobre 2020.

DATE_FORMAT(Date '2018-junio-17', 'yyyy/MMMM/dd', 'es-ES') restituisce '2018/junio/17'

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.

WEEKOFYEAR('2022-07-28') restituisce 30

WEEKOFYEAR('2022-07-28 13:24:30') restituisce 30

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, format_string deve utilizzare i codici di formato strftime. Di seguito sono riportate le stringhe di formato che fanno distinzione tra maiuscole e minuscole supportate.

  • aa: anno composto da due cifre.
  • yyyy: anno composto da quattro cifre.
  • M: mese numerico, ad esempio 1 per gennaio
  • MM: mese numerico, ad esempio 01 per gennaio
  • MMM: mese abbreviato, ad esempio Gen
  • MMMM: mese completo, ad esempio gennaio
  • d: giorno numerico del mese, ad esempio 1 per il 1° giugno
  • dd: giorno numerico del mese, ad esempio 01 per il 1° giugno
  • DDD: giorno numerico dell'anno compreso tra 001 e 366, ad esempio 002 per il 2 gennaio
  • F: giorno numerico della settimana in un mese, ad esempio 3 per il 3° lunedì di giugno.
  • EEE o E: il giorno della settimana denominato abbreviato, ad esempio Sole per domenica
  • EEEE: il giorno della settimana, ad esempio la domenica.
  • HH: formato di 24 ore da 00 a 23
  • H: formato di 24 ore da 0 a 23
  • hh: formato di 12 ore da 01 a 12
  • h: formato di 12 ore da 1 a 12
  • mm: minuti da 00 a 59
  • ss: secondi da 00 a 59
  • SSS: millisecondi da 000 a 999
  • a: AM o PM
  • z: fuso orario come PDT

TO_DATE('31 December 2016', 'dd MMMM yyyy') restituisce un valore di data pari a 2016-12-31

TO_DATE('2018/junio/17', 'yyyy/MMMM/dd', 'es-ES') restituisce un valore di data pari a 2018-06-17

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, format_string deve utilizzare i codici di formato strftime. Altrimenti, i pattern di formato supportati sono:

  • aa: anno composto da due cifre.
  • yyyy: anno composto da quattro cifre.
  • M: mese numerico, ad esempio 1 per gennaio
  • MM: mese numerico, ad esempio 01 per gennaio
  • MMM: mese abbreviato, ad esempio Gen
  • MMMM: mese completo, ad esempio gennaio
  • d: giorno numerico del mese, ad esempio 1 per il 1° giugno
  • dd: giorno numerico del mese, ad esempio 01 per il 1° giugno
  • DDD: giorno numerico dell'anno compreso tra 001 e 366, ad esempio 002 per il 2 gennaio
  • F: giorno numerico della settimana in un mese, ad esempio 3 per il 3° lunedì di giugno.
  • EEE o E: il giorno della settimana denominato abbreviato, ad esempio Sole per domenica
  • EEEE: il giorno della settimana, ad esempio la domenica.
  • HH: formato di 24 ore da 00 a 23
  • H: formato di 24 ore da 0 a 23
  • hh: formato di 12 ore da 01 a 12
  • h: formato di 12 ore da 1 a 12
  • mm: minuti da 00 a 59
  • ss: secondi da 00 a 59
  • SSS: millisecondi da 000 a 999
  • a: AM o PM
  • z: fuso orario come PDT
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.

ADD_MONTHS('2017-07-30', 1) restituisce 2017-08-30

ADD_MONTHS('2017-07-30 09:07:21', 1) restituisce 2017-08-30

MONTHS_BETWEEN(start_date_expr, end_date_expr)

Restituisce il numero di mesi compresi tra start_date_expr e end_date_expr. start_date_expr e end_date_expr possono essere una data, un indicatore orario o una stringa con un formato quale yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS

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.

MONTHS_BETWEEN('2022-01-01', '2022-01-31') restituisce 1

MONTHS_BETWEEN('2022-07-28', '2020-07-25') restituisce 24

MONTHS_BETWEEN('2022-07-28 13:24:30', '2020-07-25 13:24:30') restituisce 24

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: yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS

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: yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS

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 fmt viene omesso, il formato predefinito è yyyy-MM-dd HH:mm:ss

FROM_UNIXTIME(1255033470) restituisce '2009-10-08 13:24:30'

FROM_UNIXTIME(1637258854) restituisce '2021-11-18 10:07:34'

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.

time_expr è una data, un indicatore orario o una stringa con un formato quale yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS

Se time_expr non viene fornito, l'ora corrente viene convertita.

Se time_expr è una stringa e fmt viene omesso, l'impostazione predefinita è yyyy-MM-dd HH:mm:ss

UNIX_TIMESTAMP('1970-01-01 00:00:00', 'yyyy-MM-dd HH:mm:ss') restituisce 28800

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 '1' YEAR restituisce un intervallo di 1 anno

INTERVAL '200' YEAR(3) restituisce un intervallo di 200 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
Funzioni analitiche
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 di stringa
Funzionidescrizione;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(',' col1)

CONCAT_WS('-', 'Hello', 'Oracle') restituisce Hello-Oracle

CONCAT_WS(' ', address, city, postal_code) restituisce 123 MyCity 987654

Se un elemento figlio della funzione è un array, l'array viene appiattito:

CONCAT_WS(',', 1,2,3, to_array(4,5,6), to_array(7,8), 9) restituisce 1,2,3,4,5,6,7,8,9

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('https://www.oracle.com/products', 'https://([[:alnum:]]+\.?){3,4}/?') restituisce https://www.oracle.com

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 search non viene trovato nella stringa, la stringa viene restituita invariata.

Se replacement non è specificato o è una stringa vuota, nulla sostituisce search che viene rimosso da string.

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, format_string deve utilizzare i codici di formato strftime. In caso contrario, i pattern di formato data supportati sono i seguenti:

  • aa: anno composto da due cifre.
  • yyyy: anno composto da quattro cifre.
  • M: mese numerico, ad esempio 1 per gennaio
  • MM: mese numerico, ad esempio 01 per gennaio
  • MMM: mese abbreviato, ad esempio Gen
  • MMMM: mese completo, ad esempio gennaio
  • d: giorno numerico del mese, ad esempio 1 per il 1° giugno
  • dd: giorno numerico del mese, ad esempio 01 per il 1° giugno
  • DDD: giorno numerico dell'anno compreso tra 001 e 366, ad esempio 002 per il 2 gennaio
  • F: giorno numerico della settimana in un mese, ad esempio 3 per il 3° lunedì di giugno.
  • EEE o E: il giorno della settimana denominato abbreviato, ad esempio Sole per domenica
  • EEEE: il giorno della settimana, ad esempio la domenica.
  • HH: formato di 24 ore da 00 a 23
  • H: formato di 24 ore da 0 a 23
  • hh: formato di 12 ore da 01 a 12
  • h: formato di 12 ore da 1 a 12
  • mm: minuti da 00 a 59
  • ss: secondi da 00 a 59
  • SSS: millisecondi da 000 a 999
  • a: AM o PM
  • z: fuso orario come PDT

Esempio numerico: TO_CHAR(123) restituisce 123

Esempio di data: TO_CHAR(Date '2020-10-30', 'yyyy.MM.dd', 'en-US') restituisce la stringa 2020.10.30. Il primo argomento è un oggetto Date che rappresenta il 30 ottobre 2020.

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+++'
Funzioni operatore (confronto)
Funzionedescrizione;Esempio
CASE WHEN condition1 THEN result1 ELSE result2 ENDRestituisce 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
ANDL'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"
OROperatore 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"
NOTL'operatore NOT logico.
LIKEEsegue 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'
BETWEENValuta un intervallo.FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007
INVerifica se un'espressione corrisponde a una lista di valori.FILTER_2.ORDERS.ORDER_ID IN (1003, 1007)
Funzioni ID univoco
Funzionedescrizione;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
Funzioni condizionali
Funzionedescrizione;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
Funzioni gerarchiche
Funzionedescrizione;Esempio
SCHEMA_OF_JSON(string)Analizza una stringa JSON e inserisce lo schema in formato DDL.

SCHEMA_OF_JSON('[{\"Zipcode\":704,\"ZipCodeType\":\"STANDARD\",\"City\":\"ORACLECITY\",\"State\":\"OC\"}]') restituisce 'ARRAY<STRUCT<City:string,State:string,ZipCodeType:string,Zipcode:bigint>>'

SCHEMA_OF_JSON('[{\"col\":0}]') restituisce 'ARRAY<STRUCT<col: BIGINT>>'

FROM_JSON(column, string)

Analizza una colonna contenente una stringa JSON in uno dei tipi seguenti, con lo schema specificato.

  • Mappa, con String come tipo di chiave
  • Struttura
  • Array

FROM_JSON('{\"Zipcode\":704,\"City\":\"ORACLE CITY\"}', 'STRUCT<Zipcode: BIGINT, City: STRING>') restituisce una colonna di tipo Struttura con lo schema specificato: {704, ORACLE CITY}

FROM_JSON('{\"a\":1, \"b\":0.8}', 'STRUCT<a: BIGINT, b: DOUBLE>') restituisce una colonna di tipo Struttura con lo schema specificato: {1, 0.8}

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_MAP('Ename',Expression_1.attribute1) restituisce una colonna di tipo Mappa: {"ENAME" -> 100}

TO_MAP('block', EXPRESSION_1.MYSOURCE.address.block, 'unit', EXPRESSION_1.MYSOURCE.address.unit) restituisce una colonna di tipo Mappa: {"block" -> 1,"unit" -> 1}

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_STRUCT('Ename',Expression_1.attribute1) restituisce {100}

TO_STRUCT('Id',Expression_1.attribute1, 'Name', Expression_1.attribute2) restituisce {100, "John"}

TO_ARRAY(column[,column]*)Crea una nuova colonna come tipo di array. Le colonne di input devono avere tutte lo stesso tipo di dati.

TO_Array(Expression_1.attribute1) restituisce [100]

TO_ARRAY(EXPRESSION_1.attribute2,EXPRESSION_1.attribute3) restituisce ["John","Friend"]

Funzioni ordine superiore

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

Funzionedescrizione;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 ARRAY_SORT.

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.

array_sort(to_array(5, 6, 1),
                   (left, right) -> CASE WHEN left < right THEN -1
                                         WHEN left > right THEN 1 ELSE 0 END)

L'array restituito è:

[1,5,6]

Operatore di join

Utilizzare l'operatore join per collegare i dati provenienti da più origini in entrata.

Aggiunta e configurazione di un operatore di join
  1. Nel pannello Operatori trascinare un operatore Join sull'area di creazione.
  2. Con l'operatore di join attivo, nella scheda Dettagli del pannello Proprietà, immettere un nome nel campo Identificativo o lasciare il nome così com'è.
  3. Selezionare il tipo di join. Di seguito sono riportati i tipi di join supportati.
    Tipi di join
    Icona Tipo di join descrizione;
    diagramma venn di inner join Inner Seleziona i dati dalle due origini in entrata in cui viene soddisfatta la condizione di join.
    diagramma venn esterno sinistro Outer di sinistra Seleziona tutti i dati dall'origine 1 in entrata e i dati dall'origine 2 in entrata in cui viene soddisfatta la condizione di join.
    diagramma venn di outer join destro Outer di destra Seleziona i dati dall'origine 1 in entrata in cui viene soddisfatta la condizione di join e tutti i dati dall'origine 2 in entrata.
    diagramma venn full outer join Full outer Seleziona tutti i dati dalle due origini in entrata, le righe corrispondenti in cui è possibile creare corrispondenze e l'inserimento di valori nulli in cui non vengono trovate corrispondenze.
  4. Accanto alla condizione di join, fare clic su Crea.
  5. Nel pannello Crea condizione di join, sezione Costruzione guidata condizione, è possibile fare doppio clic o trascinare attributi, parametri e funzioni da aggiungere all'editor per creare una condizione. È inoltre possibile immettere manualmente un'espressione di condizione nell'editor e convalidare l'espressione.
    Nota

    Nell'editor, un elemento aggiunto, ad esempio una funzione, potrebbe avere segnaposto. Per sostituire un segnaposto con un altro elemento, evidenziare il segnaposto, quindi fare doppio clic su un altro elemento dall'elenco.
  6. Fare clic su Crea.
  7. (Facoltativo) Fare clic su Assegna parametro per utilizzare i parametri in modo che la condizione di join non sia associata al codice compilato quando si pubblica il flusso di dati. Vedere Assegnazione di un parametro.
  8. Nella scheda Attributi selezionare questa opzione per visualizzare gli attributi o gli attributi di output in entrata. Gli attributi in entrata si collegano all'operatore sul lato sinistro. Gli attributi di output si collegano all'operatore sul lato destro e passano all'operatore successivo.

    È possibile selezionare singoli attributi o utilizzare le icone di filtro per filtrare l'elenco di attributi. Applica quindi regole di esclusione di massa agli attributi selezionati o filtrati.

    • Fare clic sull'icona del filtro nella colonna Nome per filtrare gli attributi in base a un pattern di nomi. Nel campo Filtro, immettere un'espressione regolare semplice. È possibile utilizzare i caratteri jolly ? e * nel pattern regex.
    • Fare clic sull'icona del filtro nella colonna Tipo per filtrare gli attributi in base a un tipo di dati. Utilizzare il menu per selezionare il tipo da utilizzare come filtro.
      Nota

      È possibile applicare un solo filtro pattern di nomi, ma più filtri di tipo alla volta. Ad esempio, per filtrare in base al pattern di nomi *_CODE e al tipo numerico o varchar, applicare un filtro di pattern di nomi (*_CODE) e due filtri di tipo (numerico, varchar).
    • Utilizzare il menu Azioni per applicare regole di esclusione di massa agli attributi selezionati o agli attributi filtrati. Selezionare Escludi per selezione o Escludi per filtro applicato.
    • Fare clic su Visualizza regole per aprire il pannello Regole. È possibile visualizzare e gestire le regole applicate all'entità dati. Per impostazione predefinita, la prima regola nel pannello Regole include tutti gli elementi.

    Un tipo complesso viene visualizzato come ARRAY (data type), COMPOSITE o MAP (key type, value type). Vedere Tipi di dati gerarchici per comprendere gli elementi supportati per i tipi complessi.

  9. Nella scheda Dati visualizzare una campionatura dei dati, in base alla configurazione dell'operatore e alle regole applicate nella scheda Attributi.

    Il profilo dati non viene visualizzato per gli attributi dati complessi. Per gli attributi dati complessi, per visualizzare la gerarchia della struttura dati in una struttura semplificata, selezionare i dati complessi visualizzati. Ad esempio, [...] o {…}.

    È possibile applicare le trasformazioni a singoli attributi oppure eseguire una trasformazione di massa in un gruppo di attributi.

    Per le entità con tipi di dati gerarchici, vedere Tipi di dati gerarchici per comprendere gli elementi supportati.

  10. Nella scheda Convalida verificare la presenza di avvertenze o errori che potrebbero causare l'errore del flusso di dati.
Creazione di una condizione di join

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.

Funzioni hash
Funzionedescrizione;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 expr e restituisce un valore NUMBER.

expr può essere un'espressione, una colonna, un valore.

max_bucket è il valore massimo del bucket restituito, compreso tra 0 e 4294967295 (impostazione predefinita).

seed_value è un valore compreso tra 0 (predefinito) e 4294967295.

Oracle applica la funzione hash alla combinazione di expr e seed_value per produrre molti risultati diversi per lo stesso set di dati.

ORA_HASH('1')

ORA_HASH('b', 2)

ORA_HASH(100, 10, 10)

ORA_HASH(EXPRESSION_1.CUSTOMERS.SSN, 2)

Funzioni aritmetriche
Funzionedescrizione;Esempio
ABS(numeric)Restituisce la potenza assoluta del valore numeric.ABS(-1)
CEIL(numeric)Restituisce il numero intero minimo non maggiore del valore numericCEIL(-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:

  • 0: una cifra
  • #: una cifra, zero viene visualizzata come assente
  • .: segnaposto per il separatore decimale
  • ,: segnaposto per il separatore di raggruppamento
  • E: separa mantissa ed esponente per i formati esponenziali
  • -: prefisso negativo predefinito
  • ¤: segno di valuta; sostituito dal simbolo di valuta; se raddoppiato, sostituito dal simbolo di valuta internazionale; se presente in un modello, viene utilizzato il separatore decimale monetario al posto del separatore decimale

TO_NUMBER('5467.12') returns restituisce 5467.12

TO_NUMBER('-USD45,677.7', '¤¤##,###.#', 'en-US') restituisce -45677.7

Funzioni di data e ora
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 expr di data, in base al valore format e all'opzione locale fornita. La versione locale predefinita è en-US. Tag lingua supportati.

Pattern di formato data supportati:

  • aa: anno composto da due cifre.
  • yyyy: anno composto da quattro cifre.
  • M: mese numerico, ad esempio 1 per gennaio
  • MM: mese numerico, ad esempio 01 per gennaio
  • MMM: mese abbreviato, ad esempio Gen
  • MMMM: mese completo, ad esempio gennaio
  • d: giorno numerico del mese, ad esempio 1 per il 1° giugno
  • dd: giorno numerico del mese, ad esempio 01 per il 1° giugno
  • DDD: giorno numerico dell'anno compreso tra 001 e 366, ad esempio 002 per il 2 gennaio
  • F: giorno numerico della settimana in un mese, ad esempio 3 per il 3° lunedì di giugno.
  • EEE o E: il giorno della settimana denominato abbreviato, ad esempio Sole per domenica
  • EEEE: il giorno della settimana, ad esempio la domenica.
  • HH: formato di 24 ore da 00 a 23
  • H: formato di 24 ore da 0 a 23
  • hh: formato di 12 ore da 01 a 12
  • h: formato di 12 ore da 1 a 12
  • mm: minuti da 00 a 59
  • ss: secondi da 00 a 59
  • SSS: millisecondi da 000 a 999
  • a: AM o PM
  • z: fuso orario come PDT

DATE_FORMAT(Date '2020-10-11', 'yyyy-MM-dd') restituisce '2020-10-11'. Il primo argomento è un oggetto Date che rappresenta l'11 ottobre 2020.

DATE_FORMAT(Date '2018-junio-17', 'yyyy/MMMM/dd', 'es-ES') restituisce '2018/junio/17'

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.

WEEKOFYEAR('2022-07-28') restituisce 30

WEEKOFYEAR('2022-07-28 13:24:30') restituisce 30

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, format_string deve utilizzare i codici di formato strftime. Di seguito sono riportate le stringhe di formato che fanno distinzione tra maiuscole e minuscole supportate.

  • aa: anno composto da due cifre.
  • yyyy: anno composto da quattro cifre.
  • M: mese numerico, ad esempio 1 per gennaio
  • MM: mese numerico, ad esempio 01 per gennaio
  • MMM: mese abbreviato, ad esempio Gen
  • MMMM: mese completo, ad esempio gennaio
  • d: giorno numerico del mese, ad esempio 1 per il 1° giugno
  • dd: giorno numerico del mese, ad esempio 01 per il 1° giugno
  • DDD: giorno numerico dell'anno compreso tra 001 e 366, ad esempio 002 per il 2 gennaio
  • F: giorno numerico della settimana in un mese, ad esempio 3 per il 3° lunedì di giugno.
  • EEE o E: il giorno della settimana denominato abbreviato, ad esempio Sole per domenica
  • EEEE: il giorno della settimana, ad esempio la domenica.
  • HH: formato di 24 ore da 00 a 23
  • H: formato di 24 ore da 0 a 23
  • hh: formato di 12 ore da 01 a 12
  • h: formato di 12 ore da 1 a 12
  • mm: minuti da 00 a 59
  • ss: secondi da 00 a 59
  • SSS: millisecondi da 000 a 999
  • a: AM o PM
  • z: fuso orario come PDT

TO_DATE('31 December 2016', 'dd MMMM yyyy') restituisce un valore di data pari a 2016-12-31

TO_DATE('2018/junio/17', 'yyyy/MMMM/dd', 'es-ES') restituisce un valore di data pari a 2018-06-17

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, format_string deve utilizzare i codici di formato strftime. Altrimenti, i pattern di formato supportati sono:

  • aa: anno composto da due cifre.
  • yyyy: anno composto da quattro cifre.
  • M: mese numerico, ad esempio 1 per gennaio
  • MM: mese numerico, ad esempio 01 per gennaio
  • MMM: mese abbreviato, ad esempio Gen
  • MMMM: mese completo, ad esempio gennaio
  • d: giorno numerico del mese, ad esempio 1 per il 1° giugno
  • dd: giorno numerico del mese, ad esempio 01 per il 1° giugno
  • DDD: giorno numerico dell'anno compreso tra 001 e 366, ad esempio 002 per il 2 gennaio
  • F: giorno numerico della settimana in un mese, ad esempio 3 per il 3° lunedì di giugno.
  • EEE o E: il giorno della settimana denominato abbreviato, ad esempio Sole per domenica
  • EEEE: il giorno della settimana, ad esempio la domenica.
  • HH: formato di 24 ore da 00 a 23
  • H: formato di 24 ore da 0 a 23
  • hh: formato di 12 ore da 01 a 12
  • h: formato di 12 ore da 1 a 12
  • mm: minuti da 00 a 59
  • ss: secondi da 00 a 59
  • SSS: millisecondi da 000 a 999
  • a: AM o PM
  • z: fuso orario come PDT
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.

ADD_MONTHS('2017-07-30', 1) restituisce 2017-08-30

ADD_MONTHS('2017-07-30 09:07:21', 1) restituisce 2017-08-30

MONTHS_BETWEEN(start_date_expr, end_date_expr)

Restituisce il numero di mesi compresi tra start_date_expr e end_date_expr. start_date_expr e end_date_expr possono essere una data, un indicatore orario o una stringa con un formato quale yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS

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.

MONTHS_BETWEEN('2022-01-01', '2022-01-31') restituisce 1

MONTHS_BETWEEN('2022-07-28', '2020-07-25') restituisce 24

MONTHS_BETWEEN('2022-07-28 13:24:30', '2020-07-25 13:24:30') restituisce 24

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: yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS

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: yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS

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 fmt viene omesso, il formato predefinito è yyyy-MM-dd HH:mm:ss

FROM_UNIXTIME(1255033470) restituisce '2009-10-08 13:24:30'

FROM_UNIXTIME(1637258854) restituisce '2021-11-18 10:07:34'

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.

time_expr è una data, un indicatore orario o una stringa con un formato quale yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS

Se time_expr non viene fornito, l'ora corrente viene convertita.

Se time_expr è una stringa e fmt viene omesso, l'impostazione predefinita è yyyy-MM-dd HH:mm:ss

UNIX_TIMESTAMP('1970-01-01 00:00:00', 'yyyy-MM-dd HH:mm:ss') restituisce 28800

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 '1' YEAR restituisce un intervallo di 1 anno

INTERVAL '200' YEAR(3) restituisce un intervallo di 200 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
Funzioni analitiche
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 di stringa
Funzionidescrizione;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(',' col1)

CONCAT_WS('-', 'Hello', 'Oracle') restituisce Hello-Oracle

CONCAT_WS(' ', address, city, postal_code) restituisce 123 MyCity 987654

Se un elemento figlio della funzione è un array, l'array viene appiattito:

CONCAT_WS(',', 1,2,3, to_array(4,5,6), to_array(7,8), 9) restituisce 1,2,3,4,5,6,7,8,9

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('https://www.oracle.com/products', 'https://([[:alnum:]]+\.?){3,4}/?') restituisce https://www.oracle.com

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 search non viene trovato nella stringa, la stringa viene restituita invariata.

Se replacement non è specificato o è una stringa vuota, nulla sostituisce search che viene rimosso da string.

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, format_string deve utilizzare i codici di formato strftime. In caso contrario, i pattern di formato data supportati sono i seguenti:

  • aa: anno composto da due cifre.
  • yyyy: anno composto da quattro cifre.
  • M: mese numerico, ad esempio 1 per gennaio
  • MM: mese numerico, ad esempio 01 per gennaio
  • MMM: mese abbreviato, ad esempio Gen
  • MMMM: mese completo, ad esempio gennaio
  • d: giorno numerico del mese, ad esempio 1 per il 1° giugno
  • dd: giorno numerico del mese, ad esempio 01 per il 1° giugno
  • DDD: giorno numerico dell'anno compreso tra 001 e 366, ad esempio 002 per il 2 gennaio
  • F: giorno numerico della settimana in un mese, ad esempio 3 per il 3° lunedì di giugno.
  • EEE o E: il giorno della settimana denominato abbreviato, ad esempio Sole per domenica
  • EEEE: il giorno della settimana, ad esempio la domenica.
  • HH: formato di 24 ore da 00 a 23
  • H: formato di 24 ore da 0 a 23
  • hh: formato di 12 ore da 01 a 12
  • h: formato di 12 ore da 1 a 12
  • mm: minuti da 00 a 59
  • ss: secondi da 00 a 59
  • SSS: millisecondi da 000 a 999
  • a: AM o PM
  • z: fuso orario come PDT

Esempio numerico: TO_CHAR(123) restituisce 123

Esempio di data: TO_CHAR(Date '2020-10-30', 'yyyy.MM.dd', 'en-US') restituisce la stringa 2020.10.30. Il primo argomento è un oggetto Date che rappresenta il 30 ottobre 2020.

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+++'
Funzioni operatore (confronto)
Funzionedescrizione;Esempio
CASE WHEN condition1 THEN result1 ELSE result2 ENDRestituisce 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
ANDL'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"
OROperatore 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"
NOTL'operatore NOT logico.
LIKEEsegue 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'
BETWEENValuta un intervallo.FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007
INVerifica se un'espressione corrisponde a una lista di valori.FILTER_2.ORDERS.ORDER_ID IN (1003, 1007)
Funzioni ID univoco
Funzionedescrizione;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
Funzioni condizionali
Funzionedescrizione;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
Funzioni gerarchiche
Funzionedescrizione;Esempio
SCHEMA_OF_JSON(string)Analizza una stringa JSON e inserisce lo schema in formato DDL.

SCHEMA_OF_JSON('[{\"Zipcode\":704,\"ZipCodeType\":\"STANDARD\",\"City\":\"ORACLECITY\",\"State\":\"OC\"}]') restituisce 'ARRAY<STRUCT<City:string,State:string,ZipCodeType:string,Zipcode:bigint>>'

SCHEMA_OF_JSON('[{\"col\":0}]') restituisce 'ARRAY<STRUCT<col: BIGINT>>'

FROM_JSON(column, string)

Analizza una colonna contenente una stringa JSON in uno dei tipi seguenti, con lo schema specificato.

  • Mappa, con String come tipo di chiave
  • Struttura
  • Array

FROM_JSON('{\"Zipcode\":704,\"City\":\"ORACLE CITY\"}', 'STRUCT<Zipcode: BIGINT, City: STRING>') restituisce una colonna di tipo Struttura con lo schema specificato: {704, ORACLE CITY}

FROM_JSON('{\"a\":1, \"b\":0.8}', 'STRUCT<a: BIGINT, b: DOUBLE>') restituisce una colonna di tipo Struttura con lo schema specificato: {1, 0.8}

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_MAP('Ename',Expression_1.attribute1) restituisce una colonna di tipo Mappa: {"ENAME" -> 100}

TO_MAP('block', EXPRESSION_1.MYSOURCE.address.block, 'unit', EXPRESSION_1.MYSOURCE.address.unit) restituisce una colonna di tipo Mappa: {"block" -> 1,"unit" -> 1}

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_STRUCT('Ename',Expression_1.attribute1) restituisce {100}

TO_STRUCT('Id',Expression_1.attribute1, 'Name', Expression_1.attribute2) restituisce {100, "John"}

TO_ARRAY(column[,column]*)Crea una nuova colonna come tipo di array. Le colonne di input devono avere tutte lo stesso tipo di dati.

TO_Array(Expression_1.attribute1) restituisce [100]

TO_ARRAY(EXPRESSION_1.attribute2,EXPRESSION_1.attribute3) restituisce ["John","Friend"]

Funzioni ordine superiore

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

Funzionedescrizione;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 ARRAY_SORT.

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.

array_sort(to_array(5, 6, 1),
                   (left, right) -> CASE WHEN left < right THEN -1
                                         WHEN left > right THEN 1 ELSE 0 END)

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.

Aggiunta e configurazione di un operatore di espressione
  1. Nel pannello Operatori trascinare un operatore Espressione sull'area di creazione.
  2. Con l'operatore di espressione attivo, nella scheda Dettagli del pannello Proprietà, immettere un nome nel campo Identificativo o lasciare il nome così com'è.
  3. In Espressioni fare clic su Aggiungi espressione.
  4. Nel pannello Aggiungi espressione, immettere un nome per l'espressione nel campo Identificativo oppure lasciare il nome così com'è.
  5. (Facoltativo) Per applicare l'espressione a due o più attributi, selezionare Consenti selezione di massa. Quindi selezionare gli attributi in base al nome o utilizzando un pattern di espressione regolare. Si supponga, ad esempio, di disporre di tre attributi nome nel set di dati di origine e di voler applicare la funzione UPPER a tutti e tre gli attributi di origine. È possibile utilizzare un pattern per selezionare questo gruppo di attributi di origine.
    1. Per gli attributi di origine, selezionare Pattern e fare clic su Modifica pattern. Immettere quindi l'espressione regolare che corrisponde a un gruppo di attributi di origine. Ad esempio, immettere *NAME per trovare la corrispondenza tra gli attributi FIRST_NAME, LAST_NAME e FULL_NAME.
    2. Selezionare un tipo di dati dal menu.
    3. Per gli attributi di destinazione, immettere l'espressione regolare per definire i nomi degli attributi di destinazione in Pattern. Per impostazione predefinita, viene immesso $0, che fa riferimento ai nomi degli attributi di origine originali. Aggiornare il pattern per assegnare un nome agli attributi di destinazione in base ai requisiti. Ad esempio, immettere $0_UPPER per aggiungere il testo UPPER ai nomi degli attributi di origine originali.
    4. Per impostazione predefinita, è selezionata l'opzione Usa tipi di dati attributo di origine. È possibile conservare la selezione. Se si deseleziona la casella di controllo Usa tipi di dati attributo di origine, selezionare un tipo di dati e completare i campi corrispondenti al tipo selezionato.
  6. (Facoltativo) Se non è stata selezionata l'opzione Consenti selezione di massa, in Tipo di dati espressione è possibile selezionare Deriva tipo di dati se si desidera che il generatore di espressioni rilevi il tipo di dati dall'espressione immessa. È possibile fare clic su Anteprima tipo di dati e su Convalida per visualizzare in anteprima e aggiornare il tipo di dati e convalidare l'espressione.

    L'opzione Deriva tipo di dati è utile quando si utilizzano tipi di dati complessi, ad esempio Mappa, Array e Struttura, che potrebbero avere livelli di tipi nidificati.

  7. Se non sono stati selezionati Consenti selezione di massa e Deriva tipo di dati, selezionare un valore dal menu Tipo di dati, quindi completare i campi corrispondenti al tipo selezionato.
  8. Nella sezione Costruzione guidata espressione, creare visivamente un'espressione facendo doppio clic o trascinando gli attributi, i parametri o le funzioni in entrata da aggiungere all'editor per creare l'espressione. In alternativa, è possibile scrivere manualmente l'espressione. Vedere Aggiunta di un'espressione. È inoltre possibile convalidare l'espressione.

    È possibile utilizzare i parametri nelle espressioni, inclusi i parametri definiti dall'utente creati nel flusso di dati e i parametri di sistema generati da Data Integration in fase di esecuzione.

    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. Si supponga, ad esempio, di aver utilizzato il pattern *NAME per corrispondere agli attributi di origine FIRST_NAME, LAST_NAME e FULL_NAME. Ora è possibile specificare una funzione come UPPER(%MACRO_INPUT%) per applicare la funzione a tutti gli attributi che corrispondono al pattern.

    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.

    Nota

    Per sostituire un segnaposto in una funzione con un altro elemento, evidenziare il segnaposto, quindi fare doppio clic su un altro elemento dall'elenco per aggiungerlo alla funzione.
  9. Fare clic su Aggiungi.
    È possibile ripetere i passi del passo 3 per aggiungere altre espressioni, se necessario.
  10. Nella scheda Attributi selezionare questa opzione per visualizzare gli attributi o gli attributi di output in entrata. Gli attributi in entrata si collegano all'operatore sul lato sinistro. Gli attributi di output si collegano all'operatore sul lato destro e passano all'operatore successivo.

    È possibile selezionare singoli attributi o utilizzare le icone di filtro per filtrare l'elenco di attributi, quindi applicare regole di esclusione di massa agli attributi selezionati o filtrati.

    • Fare clic sull'icona del filtro nella colonna Nome per filtrare gli attributi in base a un pattern di nomi. Nel campo Filtro, immettere un'espressione regolare semplice. È possibile utilizzare i caratteri jolly come ? e * nel pattern regex.
    • Fare clic sull'icona del filtro nella colonna Tipo per filtrare gli attributi in base a un tipo di dati. Utilizzare il menu per selezionare il tipo da utilizzare come filtro.
      Nota

      È possibile applicare un solo filtro pattern di nomi, ma più filtri di tipo alla volta. Ad esempio, per filtrare in base al pattern di nomi *_CODE e al tipo numerico o varchar, applicare un filtro di pattern di nomi (*_CODE) e due filtri di tipo (numerico, varchar).
    • Utilizzare il menu Azioni per applicare regole di esclusione di massa agli attributi selezionati o agli attributi filtrati. Selezionare Escludi per selezione o Escludi per filtro applicato.

      Per modificare il tipo di dati di un gruppo di attributi, selezionare Modifica tipo di dati. Nella finestra di dialogo visualizzata, selezionare il nuovo tipo di dati per gli attributi selezionati o filtrati. Selezionare quindi qualsiasi altra proprietà applicabile al nuovo tipo di dati selezionato. Quando si fa clic su Applica, viene aggiunta un'espressione alla scheda Dettagli anziché a una regola.

    • Fare clic su Visualizza regole per aprire il pannello Regole. È possibile visualizzare e gestire le regole applicate all'entità dati. Per impostazione predefinita, la prima regola nel pannello Regole include tutti gli elementi.

    Un tipo complesso viene visualizzato come ARRAY (data type), COMPOSITE o MAP (key type, value type). Vedere Tipi di dati gerarchici per comprendere gli elementi supportati per i tipi complessi.

  11. Nella scheda Dati visualizzare una campionatura dei dati, in base alla configurazione dell'operatore e alle regole applicate nella scheda Attributi.

    Il profilo dati non viene visualizzato per gli attributi dati complessi. Per gli attributi dati complessi, per visualizzare la gerarchia della struttura dati in una struttura semplificata, selezionare i dati complessi visualizzati. Ad esempio, [...] o {…}.

    È possibile applicare le trasformazioni a singoli attributi oppure eseguire una trasformazione di massa in un gruppo di attributi.

    Per le entità con tipi di dati gerarchici, vedere Tipi di dati gerarchici per comprendere gli elementi supportati.

    Vedere anche Aggiunta di un'espressione.

  12. Nella scheda Convalida verificare la presenza di avvertenze o errori che potrebbero causare l'errore del flusso di dati.
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.

Anziché utilizzare una funzione CAST per modificare un attributo di tipo dati di un attributo alla volta, è possibile aggiungere l'operatore Espressione e applicare contemporaneamente un'azione di trasformazione di massa su più attributi.
  1. Connettere l'operatore di espressione con l'oggetto in entrata appropriato.
  2. Con l'operatore di espressione attivo sullo sfondo, nella scheda Attributi del pannello Proprietà, selezionare per visualizzare gli attributi in entrata (collegati all'operatore di espressione sul lato sinistro).
  3. Se si dispone di alcuni attributi da trasformare, utilizzare le caselle di controllo per selezionare gli attributi che si desidera trasformare.
  4. Se si dispone di molti attributi da trasformare, applicare un filtro agli attributi:
    1. Fare clic sull'icona del filtro nella colonna Nome. Nel campo del filtro visualizzato, immettere un pattern regex semplice utilizzando caratteri jolly (? e *) per filtrare gli attributi in base a un pattern di nomi. Ad esempio, immettere ADD* per trovare la corrispondenza tra gli attributi ADDRESS1, ADDRESS2 e ADDRESS_KEY.
    2. Fare clic sull'icona del filtro nella colonna Tipo. Nel menu visualizzato, selezionare il tipo di attributo corrente degli attributi che si desidera modificare. Ad esempio, si supponga che il tipo di ADDRESS1 e ADDRESS2 sia VARCHAR e che il tipo di ADDRESS_KEY sia NUMERIC. È possibile selezionare VARCHAR per trasformare solo ADDRESS1 e ADDRESS2.
  5. Nel menu Azioni selezionare Modifica tipo di dati.
  6. Nella finestra di dialogo Modifica tipo di dati, selezionare il nuovo tipo di dati per gli attributi selezionati o gli attributi applicati ai filtri.

    Specificare quindi eventuali altre proprietà applicabili al nuovo tipo di dati selezionato.

    Per conservare gli attributi originali nel set di dati, selezionare Mantieni attributi di origine. Se la casella di controllo non è selezionata, nei dati risultanti saranno disponibili solo i nuovi attributi.

  7. Fare cli su Applica.
  8. Selezionare la scheda Dettagli.
    Esaminare automaticamente l'espressione aggiunta all'operatore.
Aggiunta di un'espressione

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') e UPPER('oracle').

  • Racchiudere un nome attributo tra virgolette doppie. Ad esempio: UPPER("Sales") e CONCAT(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.

Funzioni hash
Funzionedescrizione;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 expr e restituisce un valore NUMBER.

expr può essere un'espressione, una colonna, un valore.

max_bucket è il valore massimo del bucket restituito, compreso tra 0 e 4294967295 (impostazione predefinita).

seed_value è un valore compreso tra 0 (predefinito) e 4294967295.

Oracle applica la funzione hash alla combinazione di expr e seed_value per produrre molti risultati diversi per lo stesso set di dati.

ORA_HASH('1')

ORA_HASH('b', 2)

ORA_HASH(100, 10, 10)

ORA_HASH(EXPRESSION_1.CUSTOMERS.SSN, 2)

Funzioni aritmetriche
Funzionedescrizione;Esempio
ABS(numeric)Restituisce la potenza assoluta del valore numeric.ABS(-1)
CEIL(numeric)Restituisce il numero intero minimo non maggiore del valore numericCEIL(-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:

  • 0: una cifra
  • #: una cifra, zero viene visualizzata come assente
  • .: segnaposto per il separatore decimale
  • ,: segnaposto per il separatore di raggruppamento
  • E: separa mantissa ed esponente per i formati esponenziali
  • -: prefisso negativo predefinito
  • ¤: segno di valuta; sostituito dal simbolo di valuta; se raddoppiato, sostituito dal simbolo di valuta internazionale; se presente in un modello, viene utilizzato il separatore decimale monetario al posto del separatore decimale

TO_NUMBER('5467.12') returns restituisce 5467.12

TO_NUMBER('-USD45,677.7', '¤¤##,###.#', 'en-US') restituisce -45677.7

Funzioni array

Solo l'operatore Expression supporta le funzioni array.

Funzionedescrizione;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 index = -1, restituisce l'ultimo elemento.

ELEMENT_AT(array(1, 2, 3), 2) restituisce 2
Funzioni di data e ora
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 expr di data, in base al valore format e all'opzione locale fornita. La versione locale predefinita è en-US. Tag lingua supportati.

Pattern di formato data supportati:

  • aa: anno composto da due cifre.
  • yyyy: anno composto da quattro cifre.
  • M: mese numerico, ad esempio 1 per gennaio
  • MM: mese numerico, ad esempio 01 per gennaio
  • MMM: mese abbreviato, ad esempio Gen
  • MMMM: mese completo, ad esempio gennaio
  • d: giorno numerico del mese, ad esempio 1 per il 1° giugno
  • dd: giorno numerico del mese, ad esempio 01 per il 1° giugno
  • DDD: giorno numerico dell'anno compreso tra 001 e 366, ad esempio 002 per il 2 gennaio
  • F: giorno numerico della settimana in un mese, ad esempio 3 per il 3° lunedì di giugno.
  • EEE o E: il giorno della settimana denominato abbreviato, ad esempio Sole per domenica
  • EEEE: il giorno della settimana, ad esempio la domenica.
  • HH: formato di 24 ore da 00 a 23
  • H: formato di 24 ore da 0 a 23
  • hh: formato di 12 ore da 01 a 12
  • h: formato di 12 ore da 1 a 12
  • mm: minuti da 00 a 59
  • ss: secondi da 00 a 59
  • SSS: millisecondi da 000 a 999
  • a: AM o PM
  • z: fuso orario come PDT

DATE_FORMAT(Date '2020-10-11', 'yyyy-MM-dd') restituisce '2020-10-11'. Il primo argomento è un oggetto Date che rappresenta l'11 ottobre 2020.

DATE_FORMAT(Date '2018-junio-17', 'yyyy/MMMM/dd', 'es-ES') restituisce '2018/junio/17'

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.

WEEKOFYEAR('2022-07-28') restituisce 30

WEEKOFYEAR('2022-07-28 13:24:30') restituisce 30

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, format_string deve utilizzare i codici di formato strftime. Di seguito sono riportate le stringhe di formato che fanno distinzione tra maiuscole e minuscole supportate.

  • aa: anno composto da due cifre.
  • yyyy: anno composto da quattro cifre.
  • M: mese numerico, ad esempio 1 per gennaio
  • MM: mese numerico, ad esempio 01 per gennaio
  • MMM: mese abbreviato, ad esempio Gen
  • MMMM: mese completo, ad esempio gennaio
  • d: giorno numerico del mese, ad esempio 1 per il 1° giugno
  • dd: giorno numerico del mese, ad esempio 01 per il 1° giugno
  • DDD: giorno numerico dell'anno compreso tra 001 e 366, ad esempio 002 per il 2 gennaio
  • F: giorno numerico della settimana in un mese, ad esempio 3 per il 3° lunedì di giugno.
  • EEE o E: il giorno della settimana denominato abbreviato, ad esempio Sole per domenica
  • EEEE: il giorno della settimana, ad esempio la domenica.
  • HH: formato di 24 ore da 00 a 23
  • H: formato di 24 ore da 0 a 23
  • hh: formato di 12 ore da 01 a 12
  • h: formato di 12 ore da 1 a 12
  • mm: minuti da 00 a 59
  • ss: secondi da 00 a 59
  • SSS: millisecondi da 000 a 999
  • a: AM o PM
  • z: fuso orario come PDT

TO_DATE('31 December 2016', 'dd MMMM yyyy') restituisce un valore di data pari a 2016-12-31

TO_DATE('2018/junio/17', 'yyyy/MMMM/dd', 'es-ES') restituisce un valore di data pari a 2018-06-17

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, format_string deve utilizzare i codici di formato strftime. Altrimenti, i pattern di formato supportati sono:

  • aa: anno composto da due cifre.
  • yyyy: anno composto da quattro cifre.
  • M: mese numerico, ad esempio 1 per gennaio
  • MM: mese numerico, ad esempio 01 per gennaio
  • MMM: mese abbreviato, ad esempio Gen
  • MMMM: mese completo, ad esempio gennaio
  • d: giorno numerico del mese, ad esempio 1 per il 1° giugno
  • dd: giorno numerico del mese, ad esempio 01 per il 1° giugno
  • DDD: giorno numerico dell'anno compreso tra 001 e 366, ad esempio 002 per il 2 gennaio
  • F: giorno numerico della settimana in un mese, ad esempio 3 per il 3° lunedì di giugno.
  • EEE o E: il giorno della settimana denominato abbreviato, ad esempio Sole per domenica
  • EEEE: il giorno della settimana, ad esempio la domenica.
  • HH: formato di 24 ore da 00 a 23
  • H: formato di 24 ore da 0 a 23
  • hh: formato di 12 ore da 01 a 12
  • h: formato di 12 ore da 1 a 12
  • mm: minuti da 00 a 59
  • ss: secondi da 00 a 59
  • SSS: millisecondi da 000 a 999
  • a: AM o PM
  • z: fuso orario come PDT
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.

ADD_MONTHS('2017-07-30', 1) restituisce 2017-08-30

ADD_MONTHS('2017-07-30 09:07:21', 1) restituisce 2017-08-30

MONTHS_BETWEEN(start_date_expr, end_date_expr)

Restituisce il numero di mesi compresi tra start_date_expr e end_date_expr. start_date_expr e end_date_expr possono essere una data, un indicatore orario o una stringa con un formato quale yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS

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.

MONTHS_BETWEEN('2022-01-01', '2022-01-31') restituisce 1

MONTHS_BETWEEN('2022-07-28', '2020-07-25') restituisce 24

MONTHS_BETWEEN('2022-07-28 13:24:30', '2020-07-25 13:24:30') restituisce 24

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: yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS

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: yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS

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 fmt viene omesso, il formato predefinito è yyyy-MM-dd HH:mm:ss

FROM_UNIXTIME(1255033470) restituisce '2009-10-08 13:24:30'

FROM_UNIXTIME(1637258854) restituisce '2021-11-18 10:07:34'

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.

time_expr è una data, un indicatore orario o una stringa con un formato quale yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS

Se time_expr non viene fornito, l'ora corrente viene convertita.

Se time_expr è una stringa e fmt viene omesso, l'impostazione predefinita è yyyy-MM-dd HH:mm:ss

UNIX_TIMESTAMP('1970-01-01 00:00:00', 'yyyy-MM-dd HH:mm:ss') restituisce 28800

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 '1' YEAR restituisce un intervallo di 1 anno

INTERVAL '200' YEAR(3) restituisce un intervallo di 200 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
Funzioni analitiche
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 di stringa
Funzionidescrizione;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(',' col1)

CONCAT_WS('-', 'Hello', 'Oracle') restituisce Hello-Oracle

CONCAT_WS(' ', address, city, postal_code) restituisce 123 MyCity 987654

Se un elemento figlio della funzione è un array, l'array viene appiattito:

CONCAT_WS(',', 1,2,3, to_array(4,5,6), to_array(7,8), 9) restituisce 1,2,3,4,5,6,7,8,9

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('https://www.oracle.com/products', 'https://([[:alnum:]]+\.?){3,4}/?') restituisce https://www.oracle.com

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 search non viene trovato nella stringa, la stringa viene restituita invariata.

Se replacement non è specificato o è una stringa vuota, nulla sostituisce search che viene rimosso da string.

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, format_string deve utilizzare i codici di formato strftime. In caso contrario, i pattern di formato data supportati sono i seguenti:

  • aa: anno composto da due cifre.
  • yyyy: anno composto da quattro cifre.
  • M: mese numerico, ad esempio 1 per gennaio
  • MM: mese numerico, ad esempio 01 per gennaio
  • MMM: mese abbreviato, ad esempio Gen
  • MMMM: mese completo, ad esempio gennaio
  • d: giorno numerico del mese, ad esempio 1 per il 1° giugno
  • dd: giorno numerico del mese, ad esempio 01 per il 1° giugno
  • DDD: giorno numerico dell'anno compreso tra 001 e 366, ad esempio 002 per il 2 gennaio
  • F: giorno numerico della settimana in un mese, ad esempio 3 per il 3° lunedì di giugno.
  • EEE o E: il giorno della settimana denominato abbreviato, ad esempio Sole per domenica
  • EEEE: il giorno della settimana, ad esempio la domenica.
  • HH: formato di 24 ore da 00 a 23
  • H: formato di 24 ore da 0 a 23
  • hh: formato di 12 ore da 01 a 12
  • h: formato di 12 ore da 1 a 12
  • mm: minuti da 00 a 59
  • ss: secondi da 00 a 59
  • SSS: millisecondi da 000 a 999
  • a: AM o PM
  • z: fuso orario come PDT

Esempio numerico: TO_CHAR(123) restituisce 123

Esempio di data: TO_CHAR(Date '2020-10-30', 'yyyy.MM.dd', 'en-US') restituisce la stringa 2020.10.30. Il primo argomento è un oggetto Date che rappresenta il 30 ottobre 2020.

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+++'
Funzioni operatore (confronto)
Funzionedescrizione;Esempio
CASE WHEN condition1 THEN result1 ELSE result2 ENDRestituisce 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
ANDL'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"
OROperatore 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"
NOTL'operatore NOT logico.
LIKEEsegue 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'
BETWEENValuta un intervallo.FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007
INVerifica se un'espressione corrisponde a una lista di valori.FILTER_2.ORDERS.ORDER_ID IN (1003, 1007)
Funzioni ID univoco
Funzionedescrizione;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
Funzioni condizionali
Funzionedescrizione;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
Funzioni gerarchiche
Funzionedescrizione;Esempio
SCHEMA_OF_JSON(string)Analizza una stringa JSON e inserisce lo schema in formato DDL.

SCHEMA_OF_JSON('[{\"Zipcode\":704,\"ZipCodeType\":\"STANDARD\",\"City\":\"ORACLECITY\",\"State\":\"OC\"}]') restituisce 'ARRAY<STRUCT<City:string,State:string,ZipCodeType:string,Zipcode:bigint>>'

SCHEMA_OF_JSON('[{\"col\":0}]') restituisce 'ARRAY<STRUCT<col: BIGINT>>'

FROM_JSON(column, string)

Analizza una colonna contenente una stringa JSON in uno dei tipi seguenti, con lo schema specificato.

  • Mappa, con String come tipo di chiave
  • Struttura
  • Array

FROM_JSON('{\"Zipcode\":704,\"City\":\"ORACLE CITY\"}', 'STRUCT<Zipcode: BIGINT, City: STRING>') restituisce una colonna di tipo Struttura con lo schema specificato: {704, ORACLE CITY}

FROM_JSON('{\"a\":1, \"b\":0.8}', 'STRUCT<a: BIGINT, b: DOUBLE>') restituisce una colonna di tipo Struttura con lo schema specificato: {1, 0.8}

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_MAP('Ename',Expression_1.attribute1) restituisce una colonna di tipo Mappa: {"ENAME" -> 100}

TO_MAP('block', EXPRESSION_1.MYSOURCE.address.block, 'unit', EXPRESSION_1.MYSOURCE.address.unit) restituisce una colonna di tipo Mappa: {"block" -> 1,"unit" -> 1}

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_STRUCT('Ename',Expression_1.attribute1) restituisce {100}

TO_STRUCT('Id',Expression_1.attribute1, 'Name', Expression_1.attribute2) restituisce {100, "John"}

TO_ARRAY(column[,column]*)Crea una nuova colonna come tipo di array. Le colonne di input devono avere tutte lo stesso tipo di dati.

TO_Array(Expression_1.attribute1) restituisce [100]

TO_ARRAY(EXPRESSION_1.attribute2,EXPRESSION_1.attribute3) restituisce ["John","Friend"]

Funzioni ordine superiore

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

Funzionedescrizione;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 ARRAY_SORT.

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.

array_sort(to_array(5, 6, 1),
                   (left, right) -> CASE WHEN left < right THEN -1
                                         WHEN left > right THEN 1 ELSE 0 END)

L'array restituito è:

[1,5,6]
Duplicazione di un'espressione

È possibile duplicare le espressioni aggiunte a un operatore di espressione.

  1. Nello sfondo del flusso di dati, selezionare l'operatore dell'espressione.
  2. Nella scheda Dettagli del pannello Proprietà, rivedere la lista delle espressioni.
  3. Selezionare Duplica dal menu Azioni (Menu Azioni) corrispondente all'espressione che si desidera duplicare.
    Non viene visualizzata alcuna finestra di dialogo di conferma; l'espressione duplicata viene aggiunta immediatamente all'elenco.
Spostamento di un'espressione

È possibile modificare l'ordine delle espressioni aggiunte a un operatore di espressione.

  1. Nello sfondo del flusso di dati, selezionare l'operatore dell'espressione.
  2. Nella scheda Dettagli del pannello Proprietà, rivedere la lista delle espressioni.
  3. Per l'espressione che si desidera spostare, selezionare Sposta in alto, Sposta in basso, Sposta in alto o Sposta in basso dal menu Azioni (Menu Azioni).
    Sono disponibili solo le azioni di spostamento pertinenti, a seconda della posizione corrente dell'espressione. Ad esempio, Sposta in alto e Sposta in alto non sono disponibili per la prima espressione dell'elenco.

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.

Aggiunta e configurazione di un operatore aggregato
  1. Nel pannello Operatori trascinare un aggregato nell'area di creazione.
  2. Con l'operatore di aggregazione attivo, nella scheda Dettagli del pannello Proprietà, immettere un nome nel campo Identificativo oppure lasciare il nome così com'è.
  3. In Raggruppa per selezionare una delle opzioni riportate di seguito.
    • Attributi: utilizzare il menu per selezionare uno o più attributi in base ai quali eseguire il raggruppamento.
    • Pattern: fare clic su Aggiungi pattern per aggiungere un pattern che selezioni gli attributi in base ai quali eseguire il raggruppamento. Utilizzare un pattern di espressione regolare per trovare la corrispondenza tra due o più attributi.
    Nota

    Le espressioni aggiunte vengono eseguite su ogni attributo selezionato. Gli attributi che continuano a valle includono gli attributi raggruppati più gli attributi derivati dalle espressioni aggiunte.
  4. In Espressioni fare clic su Aggiungi espressione.
  5. Nel pannello Aggiungi espressione, immettere un nome per l'espressione di aggregazione nel campo Identificativo oppure lasciare il nome così com'è.
  6. (Facoltativo) Per selezionare gli attributi di origine in cui si desidera applicare l'operazione di espressione utilizzando pattern di espressioni regolari, selezionare Consenti selezione in blocco, quindi selezionare Pattern. Si supponga, ad esempio, di disporre di tre attributi di ordine nel set di dati e di voler applicare la funzione operatore SUM a tutti e tre gli attributi. È possibile utilizzare un pattern per selezionare questo gruppo di attributi di origine.
    1. Per gli attributi di origine, immettere l'espressione regolare che corrisponde a un gruppo di attributi di origine in Pattern. Ad esempio, immettere *ORDER per trovare la corrispondenza tra gli attributi FIRST_ORDER, LAST_ORDER e FINAL_ORDER.
    2. Quindi, per Tipo di dati, selezionare un valore dal menu e completare i campi corrispondenti al tipo selezionato.
    3. Per gli attributi di destinazione, immettere l'espressione regolare per definire i nomi degli attributi di destinazione in Pattern. Per impostazione predefinita, viene immesso $0 per fare riferimento agli attributi di origine originali. Aggiornare il pattern per assegnare un nome all'attributo di destinazione in base ai requisiti. Ad esempio, immettere $0_SUM per aggiungere il testo SUM ai nomi degli attributi di origine originali.
    4. Per impostazione predefinita, è selezionata l'opzione Usa tipi di dati attributo di origine. È possibile conservare la selezione. Se si deseleziona la casella di controllo Usa tipi di dati attributo di origine, selezionare un tipo di dati e completare i campi corrispondenti al tipo selezionato.
  7. (Facoltativo) Se non è stata selezionata l'opzione Consenti selezione di massa, in Tipo di dati espressione è possibile selezionare Deriva tipo di dati se si desidera che il Builder delle espressioni rilevi il tipo di dati dall'espressione immessa. È possibile fare clic su Anteprima tipo di dati e su Convalida per visualizzare in anteprima e aggiornare il tipo di dati e convalidare l'espressione.

    La possibilità che il tipo di dati derivato del programma di generazione sia utile quando si utilizzano tipi di dati complessi, quali Mappa, Array e Struttura, che potrebbero avere livelli di tipi nidificati.

  8. Se non è stata selezionata l'opzione Consenti selezione in blocco, per Tipo di dati selezionare un valore dal menu, quindi completare i campi corrispondenti in base al tipo selezionato.
  9. (Facoltativo) In Tipo di dati espressione, è possibile selezionare Deriva tipo di dati se si desidera che il Builder delle espressioni rilevi il tipo di dati dall'espressione immessa. È possibile fare clic su Anteprima tipo di dati e su Convalida per visualizzare in anteprima e aggiornare il tipo di dati e convalidare l'espressione.

    La possibilità che il tipo di dati derivato del programma di generazione sia utile quando si utilizzano tipi di dati complessi, quali Mappa, Array e Struttura, che potrebbero avere livelli di tipi nidificati.

  10. Se non sono stati selezionati Consenti selezione di massa e Deriva tipo di dati, selezionare un valore dal menu Tipo di dati, quindi completare i campi corrispondenti al tipo selezionato.
  11. Nella sezione Costruzione guidata espressione, creare visivamente un'espressione facendo doppio clic o trascinando gli attributi, i parametri o le funzioni in entrata da aggiungere all'editor per creare l'espressione. In alternativa, è possibile scrivere manualmente l'espressione. È inoltre possibile convalidare l'espressione.

    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. Si supponga, ad esempio, di aver utilizzato il pattern *NAME per trovare la corrispondenza tra gli attributi di origine FIRST_NAME, LAST_NAME e FULL_NAME. Ora è possibile specificare una funzione come UPPER(%MACRO_INPUT%) per applicare la funzione a tutti gli attributi che corrispondono al pattern.

    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.

    Nota

    Per sostituire un segnaposto in una funzione con un altro elemento, evidenziare il segnaposto, quindi fare doppio clic su un altro elemento dall'elenco per aggiungerlo alla funzione.
  12. Fare clic su Aggiungi.
    È possibile ripetere i passi del passo 4 per aggiungere altre espressioni, se necessario.
  13. Nella scheda Attributi selezionare questa opzione per visualizzare gli attributi o gli attributi di output in entrata. Gli attributi in entrata si collegano all'operatore sul lato sinistro. Gli attributi di output si collegano all'operatore sul lato destro e passano all'operatore successivo.

    È possibile selezionare singoli attributi o utilizzare le icone di filtro per filtrare l'elenco di attributi. Applica quindi regole di esclusione di massa agli attributi selezionati o filtrati.

    • Fare clic sull'icona del filtro nella colonna Nome per filtrare gli attributi in base a un pattern di nomi. Nel campo Filtro, immettere un'espressione regolare semplice. È possibile utilizzare i caratteri jolly ? e * nel pattern regex.
    • Fare clic sull'icona del filtro nella colonna Tipo per filtrare gli attributi in base a un tipo di dati. Utilizzare il menu per selezionare il tipo da utilizzare come filtro.
      Nota

      È possibile applicare un solo filtro pattern di nomi, ma più filtri di tipo alla volta. Ad esempio, per filtrare in base al pattern di nomi *_CODE e al tipo numerico o varchar, applicare un filtro di pattern di nomi (*_CODE) e due filtri di tipo (numerico, varchar).
    • Utilizzare il menu Azioni per applicare regole di esclusione di massa agli attributi selezionati o agli attributi filtrati. Selezionare Escludi per selezione o Escludi per filtro applicato.
    • Fare clic su Visualizza regole per aprire il pannello Regole. È possibile visualizzare e gestire le regole applicate all'entità dati. Per impostazione predefinita, la prima regola nel pannello Regole include tutti gli elementi.

    Un tipo complesso viene visualizzato come ARRAY (data type), COMPOSITE o MAP (key type, value type). Vedere Tipi di dati gerarchici per comprendere gli elementi supportati per i tipi complessi.

  14. Nella scheda Dati, visualizzare una campionatura dei dati, in base alla configurazione dell'operatore e alle regole applicate nella scheda Attributi. È possibile applicare le trasformazioni a singoli attributi o eseguire una trasformazione di massa in un gruppo di attributi.
  15. Nella scheda Convalida verificare la presenza di avvertenze o errori che potrebbero causare l'errore del flusso di dati.
Aggiunta di un'espressione di aggregazione

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.

Funzioni di aggregazione
Funzionedescrizione;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, id, name. Nella tabella sono presenti tre righe. I valori della colonna id sono 101, 102, 102. I valori della colonna name sono A, B, C.

+-----+--------+
| id  | name  |
+-----+--------+
| 101 | A     |
+-----+--------+
| 102 | B     |
+-----+--------+
| 102 | C     |
+-----+--------+

Esempio 1: senza raggruppamento

LISTAGG(id, '-') WITHIN GROUP (ORDER BY id) restituisce la colonna name con il valore A-B-C

+--------+
| name   |
+--------+
| A-B-C  |
+--------+

Esempio 2: Raggruppa per id

LISTAGG(id, '-') WITHIN GROUP (ORDER BY id) restituisce la colonna name con i valori A e B-C in due gruppi.

+--------+
| name   |
+--------+
| A      |
+--------+
| B-C    |
+--------+
Funzioni ordine superiore

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

Funzionedescrizione;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 ARRAY_SORT.

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.

array_sort(to_array(5, 6, 1),
                   (left, right) -> CASE WHEN left < right THEN -1
                                         WHEN left > right THEN 1 ELSE 0 END)

L'array restituito è:

[1,5,6]

Operatore DISTINCT

Utilizzare l'operatore distinto per restituire righe distinte con valori univoci.

Aggiunta e configurazione di un operatore distinto
  1. Nel pannello Operatori trascinare un operatore Distinto sull'area di creazione.
  2. Con l'operatore distinto attivo, nella scheda Dettagli del pannello Proprietà, immettere un nome nel campo Identificativo o lasciare il nome così com'è.

    Le configurazioni della scheda Dettagli vengono impostate per impostazione predefinita per l'operatore distinto.

  3. Per visualizzare l'output dell'operatore, fare clic sulla scheda Dati.
    Vengono visualizzate righe distinte con valori univoci. È inoltre possibile applicare trasformazioni ai dati oppure selezionare un attributo per visualizzare un profilo dati o un profilo attributo. Ulteriori informazioni sulle trasformazioni dei dati.
  4. Nella scheda Attributi selezionare questa opzione per visualizzare gli attributi o gli attributi di output in entrata. Gli attributi in entrata si collegano all'operatore sul lato sinistro. Gli attributi di output si collegano all'operatore sul lato destro e passano all'operatore successivo.

    È possibile selezionare singoli attributi o utilizzare le icone di filtro per filtrare l'elenco di attributi. Applica quindi regole di esclusione di massa agli attributi selezionati o filtrati. L'operatore distinto opera solo sugli attributi filtrati e restituisce righe distinte con valori univoci.

    • Fare clic sull'icona del filtro nella colonna Nome per filtrare gli attributi in base a un pattern di nomi. Nel campo Filtro, immettere un'espressione regolare semplice. È possibile utilizzare i caratteri jolly ? e * nel pattern regex.
    • Fare clic sull'icona del filtro nella colonna Tipo per filtrare gli attributi in base a un tipo di dati. Utilizzare il menu per selezionare il tipo da utilizzare come filtro.
      Nota

      È possibile applicare un solo filtro pattern di nomi, ma più filtri di tipo alla volta. Ad esempio, se si applica un filtro pattern di nomi (*_CODE) e due filtri di tipo (numerico, varchar), gli attributi vengono filtrati in base al pattern di nomi *_CODE e al tipo numerico o varchar.
    • Utilizzare il menu Azioni per applicare regole di esclusione di massa agli attributi selezionati o agli attributi filtrati. Selezionare Escludi per selezione o Escludi per filtro applicato.
    • Fare clic su Visualizza regole per aprire il pannello Regole. È possibile visualizzare e gestire le regole applicate all'entità dati. Per impostazione predefinita, la prima regola nel pannello Regole include tutti gli elementi.

    Un tipo complesso viene visualizzato come ARRAY (data type), COMPOSITE o MAP (key type, value type). Vedere Tipi di dati gerarchici per comprendere gli elementi supportati per i tipi complessi.

  5. Nella scheda Dati visualizzare una campionatura dei dati, in base alle regole applicate nella scheda Attributi.

    Il profilo dati non viene visualizzato per gli attributi dati complessi. Per gli attributi dati complessi, per visualizzare la gerarchia della struttura dati in una struttura semplificata, selezionare i dati complessi visualizzati. Ad esempio, [...] o {…}.

    È possibile applicare le trasformazioni a singoli attributi oppure eseguire una trasformazione di massa in un gruppo di attributi.

    Per le entità con tipi di dati gerarchici, vedere Tipi di dati gerarchici per comprendere gli elementi supportati.

  6. Nella scheda Convalida verificare la presenza di avvertenze o errori che potrebbero causare l'errore del flusso di dati.

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.

Aggiunta e configurazione di un operatore di ordinamento

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.

  1. Nel pannello Operatori trascinare un operatore di ordinamento sull'area di creazione.
  2. Con l'operatore di ordinamento attivo, nella scheda Dettagli del pannello Proprietà, immettere un nome nel campo Identificativo o lasciare il nome così com'è.
  3. Nella sezione Condizioni di ordinamento fare clic su Aggiungi.

    Nel pannello Aggiungi condizione di ordinamento vengono visualizzati tutti i campi degli attributi recuperati dalla tabella di origine.

  4. Nel pannello Aggiungi condizione di ordinamento selezionare l'attributo in base al quale ordinare i dati.
  5. Per filtrare gli attributi utilizzando pattern di nomi, immettere un pattern di nomi, ad esempio *CITY*.
  6. 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 inizia in base alla prima condizione dell'elenco. I dati ordinati vengono quindi utilizzati in base alla seconda condizione e così via.

    Per i tipi di dati stringa, l'operazione di ordinamento si basa sull'ordine lessicografico.

  7. Nella scheda Attributi selezionare questa opzione per visualizzare gli attributi o gli attributi di output in entrata. Gli attributi in entrata si collegano all'operatore sul lato sinistro. Gli attributi di output si collegano all'operatore sul lato destro e passano all'operatore successivo.

    È possibile selezionare singoli attributi o utilizzare le icone di filtro per filtrare l'elenco di attributi. Applica quindi regole di esclusione di massa agli attributi selezionati o filtrati.

    • Fare clic sull'icona del filtro nella colonna Nome per filtrare gli attributi in base a un pattern di nomi. Nel campo Filtro, immettere un'espressione regolare semplice. È possibile utilizzare i caratteri jolly ? e * nel pattern regex.
    • Fare clic sull'icona del filtro nella colonna Tipo per filtrare gli attributi in base a un tipo di dati. Utilizzare il menu per selezionare il tipo da utilizzare come filtro.
      Nota

      È possibile applicare un solo filtro pattern di nomi, ma più filtri di tipo alla volta. Ad esempio, per filtrare in base al pattern di nomi *_CODE e al tipo numerico o varchar, applicare un filtro di pattern di nomi (*_CODE) e due filtri di tipo (numerico, varchar).
    • Utilizzare il menu Azioni per applicare regole di esclusione di massa agli attributi selezionati o agli attributi filtrati. Selezionare Escludi per selezione o Escludi per filtro applicato.
    • Fare clic su Visualizza regole per aprire il pannello Regole. È possibile visualizzare e gestire le regole applicate all'entità dati. Per impostazione predefinita, la prima regola nel pannello Regole include tutti gli elementi.

    Un tipo complesso viene visualizzato come ARRAY (data type), COMPOSITE o MAP (key type, value type). Vedere Tipi di dati gerarchici per comprendere gli elementi supportati per i tipi complessi.

  8. Nella scheda Dati visualizzare una campionatura dei dati, in base alla configurazione dell'operatore e alle regole applicate nella scheda Attributi.

    Il profilo dati non viene visualizzato per gli attributi dati complessi. Per gli attributi dati complessi, per visualizzare la gerarchia della struttura dati in una struttura semplificata, selezionare i dati complessi visualizzati. Ad esempio, [...] o {…}.

    È possibile applicare le trasformazioni a singoli attributi oppure eseguire una trasformazione di massa in un gruppo di attributi.

    Per le entità con tipi di dati gerarchici, vedere Tipi di dati gerarchici per comprendere gli elementi supportati.

  9. Nella scheda Convalida verificare la presenza di avvertenze o errori che potrebbero causare l'errore del flusso di dati.
Aggiunta delle condizioni di ordinamento

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.

  1. 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.

  2. Nel pannello Aggiungi condizione di ordinamento selezionare l'attributo in base al quale ordinare i dati.
  3. Per filtrare gli attributi utilizzando pattern di nomi, immettere un pattern di nomi, ad esempio *CITY*.
  4. 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.
Assegnazione della priorità alle condizioni di ordinamento

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.

  1. Nella scheda Dettagli, andare alla sezione Condizioni di ordinamento.
  2. Fare clic sul menu Azioni (Menu Azioni) corrispondente alla condizione di ordinamento che si desidera spostare verso l'alto o verso il basso.
  3. Per applicare prima una condizione di ordinamento, selezionare Sposta in alto.
  4. Per applicare una condizione di ordinamento in un secondo momento, selezionare Sposta in basso.
    L'ordinamento viene applicato prima alla condizione spostata verso l'alto, quindi alla condizione spostata verso il basso.
Modifica delle condizioni di ordinamento

Per modificare le condizioni di ordinamento:

  1. Nella scheda Dettagli, andare alla sezione Condizioni di ordinamento.
  2. Fare clic sul menu Azioni (Menu Azioni) corrispondente alla condizione di ordinamento che si desidera modificare, quindi selezionare Modifica.
  3. Nel pannello Modifica condizione di ordinamento selezionare il nuovo attributo oppure filtrare gli attributi immettendo un pattern di nomi.
    Gli attributi o i pattern già selezionati, inclusi i relativi attributi associati, non sono disponibili per un'ulteriore selezione.
Eliminazione delle condizioni di ordinamento

È possibile eliminare le condizioni di ordinamento una per una oppure eseguire un'eliminazione di massa.

Per eliminare le condizioni di ordinamento:

  1. Nella scheda Dettagli, andare alla sezione Condizioni di ordinamento.
  2. Per eliminare le condizioni di ordinamento una per una, fare clic sul menu Azioni (Menu Azioni) corrispondente alla condizione di ordinamento che si desidera eliminare.
  3. 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.

Informazioni sui tipi di unione

È 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.

Unione per nome attributo

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
Unione per posizione attributo

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
Aggiunta e configurazione di un operatore di unione
  1. Per aggiungere un operatore di unione al flusso di dati, trascinare l'operatore Union dal pannello Operatori sull'area di creazione. È possibile eseguire l'operazione di unione su un massimo di dieci origini dati.
    La scheda Dettagli per l'operatore di unione viene visualizzata nel pannello Proprietà.
  2. Nella scheda Dettagli, immettere un nome per questa operazione di unione nel campo Identificativo oppure lasciare il nome così com'è.
  3. Specificare la modalità di esecuzione dell'operazione di unione utilizzando il campo Abbina attributo di input per. È possibile scegliere tra le due opzioni riportate di seguito.
    • Nome: viene trovata una corrispondenza tra i nomi degli attributi delle origini per eseguire l'operazione di unione. I nomi e i tipi di dati degli attributi e il numero di attributi negli input devono essere identici. La corrispondenza fa distinzione tra maiuscole e minuscole. Rivedere gli esempi per comprendere il funzionamento dell'operazione Unione per nome.
    • Posizione: gli attributi delle origini vengono abbinati in base alle rispettive posizioni. Il numero di attributi e i tipi di dati degli attributi negli input devono essere identici. Rivedere gli esempi per comprendere il funzionamento dell'operazione di unione per posizione.
  4. Per Union all, selezionare la casella di controllo se si desidera che l'operazione restituisca tutte le righe di tutte le entità dati connesse senza eliminare i duplicati.
  5. Per l'input principale, selezionare l'origine da considerare come origine chiave nell'operazione di unione. Questo input principale determina i nomi degli attributi, i tipi di dati degli attributi e l'ordine degli attributi per gli attributi risultanti dall'operazione di unione. Per impostazione predefinita, la prima origine aggiunta al flusso di dati viene impostata come input principale.
  6. Nella scheda Attributi selezionare questa opzione per visualizzare gli attributi o gli attributi di output in entrata. Gli attributi in entrata si collegano all'operatore sul lato sinistro. Gli attributi di output si collegano all'operatore sul lato destro e passano all'operatore successivo.

    È possibile selezionare singoli attributi o utilizzare le icone di filtro per filtrare l'elenco di attributi. Applica quindi regole di esclusione di massa agli attributi selezionati o filtrati.

    • Fare clic sull'icona del filtro nella colonna Nome per filtrare gli attributi in base a un pattern di nomi. Nel campo Filtro, immettere un'espressione regolare semplice. È possibile utilizzare i caratteri jolly ? e * nel pattern regex.
    • Fare clic sull'icona del filtro nella colonna Tipo per filtrare gli attributi in base a un tipo di dati. Utilizzare il menu per selezionare il tipo da utilizzare come filtro.
      Nota

      È possibile applicare un solo filtro pattern di nomi, ma più filtri di tipo alla volta. Ad esempio, se si applica un filtro pattern di nomi (*_CODE) e due filtri di tipo (numerico, varchar), gli attributi vengono filtrati in base al pattern di nomi *_CODE e al tipo numerico o varchar.
    • Utilizzare il menu Azioni per applicare regole di esclusione di massa agli attributi selezionati o agli attributi filtrati. Selezionare Escludi per selezione o Escludi per filtro applicato.
    • Fare clic su Visualizza regole per aprire il pannello Regole. È possibile visualizzare e gestire le regole applicate all'entità dati. Per impostazione predefinita, la prima regola nel pannello Regole include tutti gli elementi.

    Un tipo complesso viene visualizzato come ARRAY (data type), COMPOSITE o MAP (key type, value type). Vedere Tipi di dati gerarchici per comprendere gli elementi supportati per i tipi complessi.

  7. Nella scheda Dati visualizzare una campionatura dei dati, in base alla configurazione dell'operatore e alle regole applicate nella scheda Attributi.

    Il profilo dati non viene visualizzato per gli attributi dati complessi. Per gli attributi dati complessi, per visualizzare la gerarchia della struttura dati in una struttura semplificata, selezionare i dati complessi visualizzati. Ad esempio, [...] o {…}.

    È possibile applicare le trasformazioni a singoli attributi oppure eseguire una trasformazione di massa in un gruppo di attributi.

    Per le entità con tipi di dati gerarchici, vedere Tipi di dati gerarchici per comprendere gli elementi supportati.

  8. Nella scheda Convalida verificare la presenza di avvertenze o errori che potrebbero causare l'errore del flusso di dati.

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.

Introduzione ai tipi meno

È 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.

Meno per nome attributo

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
DipartimentoUBICAZIONE-IDMagazzino
IT1.400San Francisco
Spedizione1.500Austin
Contabilità1.700New Jersey
Entità dati 2
DipartimentoMagazzinoUBICAZIONE-ID
VantaggiDenver1.600
ITSan Francisco1.400
Entità dati risultante
DipartimentoUBICAZIONE-IDMagazzino
Spedizione1.500Austin
Contabilità1.700New Jersey
Meno per posizione attributo

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
DipartimentoUBICAZIONE-IDMagazzino
IT1.400San Francisco
Spedizione1.500Austin
Contabilità1.700New Jersey
Entità dati 2, input principale
Nome-repartoPosizioneWarehouse - Città
Vantaggi1.600Denver
IT1.400San Francisco
Entità dati risultante
Nome-repartoPosizioneWarehouse - Città
Vantaggi1.600Denver
Aggiunta e configurazione di un operatore meno
  1. Per aggiungere un operatore meno al flusso di dati, trascinare l'operatore Minus dal pannello Operatori sull'area di creazione.
    Nel pannello Proprietà viene visualizzata la scheda Details dell'operatore meno.
  2. Nella scheda Dettagli, immettere un nome per questa operazione meno nel campo Identificativo oppure lasciare il nome così com'è.
  3. Specificare come si desidera eseguire l'operazione meno utilizzando il campo Abbina attributi di input per. È possibile scegliere tra le due opzioni riportate di seguito.
    • Nome: viene trovata una corrispondenza tra i nomi degli attributi delle origini per eseguire l'operazione meno. I nomi e i tipi di dati degli attributi e il numero di attributi negli input devono essere identici. La corrispondenza fa distinzione tra maiuscole e minuscole. Esaminare gli esempi per capire come funziona l'operazione meno per nome.
    • Posizione: gli attributi delle origini vengono abbinati in base alle rispettive posizioni. Il numero di attributi e i tipi di dati degli attributi negli input devono essere identici. Esaminare gli esempi per capire come funziona l'operazione meno per posizione.
  4. Per Minus all, selezionare la casella di controllo se si desidera che l'operazione restituisca tutte le righe trovate in un'entità dati che non sono presenti nell'altra entità dati, senza eliminare i duplicati.
  5. Per l'input principale, selezionare l'origine da utilizzare come origine principale per l'operazione meno. L'input principale determina i nomi degli attributi, i tipi di dati degli attributi e l'ordine degli attributi nell'output risultante. Per impostazione predefinita, la prima origine connessa all'operatore meno viene impostata come input principale.
    Icona Input primario descrizione;
    diagramma venn esterno sinistro Operatore MINUS - A sinistra Seleziona tutte le righe distinte rimanenti dall'origine 1 in entrata dopo aver eliminato le righe corrispondenti all'origine 2 in entrata.
    diagramma venn di outer join destro Operatore MINUS - A destra Seleziona tutte le righe distinte rimanenti dall'origine 2 in entrata dopo aver eliminato le righe corrispondenti all'origine 1 in entrata.
  6. Nella scheda Attributi selezionare questa opzione per visualizzare gli attributi o gli attributi di output in entrata. Gli attributi in entrata si collegano all'operatore sul lato sinistro. Gli attributi di output si collegano all'operatore sul lato destro e passano all'operatore successivo.

    È possibile selezionare singoli attributi o utilizzare le icone di filtro per filtrare l'elenco di attributi. Applica quindi regole di esclusione di massa agli attributi selezionati o filtrati.

    • Fare clic sull'icona del filtro nella colonna Nome per filtrare gli attributi in base a un pattern di nomi. Nel campo Filtro, immettere un'espressione regolare semplice. È possibile utilizzare i caratteri jolly ? e * nel pattern regex.
    • Fare clic sull'icona del filtro nella colonna Tipo per filtrare gli attributi in base a un tipo di dati. Utilizzare il menu per selezionare il tipo da utilizzare come filtro.
      Nota

      È possibile applicare un solo filtro pattern di nomi, ma più filtri di tipo alla volta. Ad esempio, se si applica un filtro pattern di nomi (*_CODE) e due filtri di tipo (numerico, varchar), gli attributi vengono filtrati in base al pattern di nomi *_CODE e al tipo numerico o varchar.
    • Utilizzare il menu Azioni per applicare regole di esclusione di massa agli attributi selezionati o agli attributi filtrati. Selezionare Escludi per selezione o Escludi per filtro applicato.
    • Fare clic su Visualizza regole per aprire il pannello Regole. È possibile visualizzare e gestire le regole applicate all'entità dati. Per impostazione predefinita, la prima regola nel pannello Regole include tutti gli elementi.

    Un tipo complesso viene visualizzato come ARRAY (data type), COMPOSITE o MAP (key type, value type). Vedere Tipi di dati gerarchici per comprendere gli elementi supportati per i tipi complessi.

  7. Nella scheda Dati visualizzare una campionatura dei dati, in base alla configurazione dell'operatore e alle regole applicate nella scheda Attributi.

    Il profilo dati non viene visualizzato per gli attributi dati complessi. Per gli attributi dati complessi, per visualizzare la gerarchia della struttura dati in una struttura semplificata, selezionare i dati complessi visualizzati. Ad esempio, [...] o {…}.

    È possibile applicare le trasformazioni a singoli attributi oppure eseguire una trasformazione di massa in un gruppo di attributi.

    Per le entità con tipi di dati gerarchici, vedere Tipi di dati gerarchici per comprendere gli elementi supportati.

  8. Nella scheda Convalida verificare la presenza di avvertenze o errori che potrebbero causare l'errore del flusso di dati.

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.

Informazioni sui tipi di intersezione

È 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.

Intersezione per nome attributo

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
DipartimentoUBICAZIONE-IDMagazzino
IT1.400San Francisco
Spedizione1.500Austin
Contabilità1.700New Jersey
Entità dati 2
DipartimentoMagazzinoUBICAZIONE-ID
VantaggiDenver1.600
ITSan Francisco1.400
Entità dati risultante
DipartimentoUBICAZIONE-IDMagazzino
IT1.400San Francisco
Intersezione per posizione attributo

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
DipartimentoUBICAZIONE-IDMagazzino
IT1.400San Francisco
Spedizione1.500Austin
Contabilità1.700New Jersey
Entità dati 2, input principale
Nome-repartoPosizioneWarehouse - Città
Vantaggi1.600Denver
IT1.400San Francisco
Entità dati risultante
Nome-repartoPosizioneWarehouse - Città
IT1.400San Francisco
Aggiunta e configurazione di un operatore di intersezione
  1. Per aggiungere un operatore di intersezione al flusso di dati, trascinare l'operatore Intersezione dal pannello Operatori sull'area di creazione.
    Nel pannello Proprietà viene visualizzata la scheda Dettagli per l'operatore di intersezione.
  2. Nella scheda Dettagli, immettere un nome per questa operazione di intersezione nel campo Identificativo oppure lasciare il nome così com'è.
  3. Specificare la modalità di esecuzione dell'operazione di intersezione utilizzando il campo Abbina attributi di input per. È possibile scegliere tra le due opzioni riportate di seguito.
    • Nome: viene trovata una corrispondenza tra i nomi degli attributi delle origini per eseguire l'operazione di intersezione. I nomi e i tipi di dati degli attributi e il numero di attributi negli input devono essere identici. La corrispondenza fa distinzione tra maiuscole e minuscole. Rivedere gli esempi per comprendere il funzionamento dell'operazione Intersezione per nome.
    • Posizione: gli attributi delle origini vengono abbinati in base alle rispettive posizioni. Il numero di attributi e i tipi di dati degli attributi negli input devono essere identici. Rivedere gli esempi per comprendere il funzionamento dell'intersezione in base all'operazione di posizione.
  4. Per Interrompi tutto, selezionare la casella di controllo se si desidera che l'operazione restituisca tutte le righe nell'output risultante, senza eliminare i duplicati.
  5. Per l'input principale, selezionare l'origine da utilizzare come origine principale per l'operazione di intersezione. L'input principale determina i nomi degli attributi, i tipi di dati degli attributi e l'ordine degli attributi nell'output risultante. Per impostazione predefinita, la prima origine connessa all'operatore di intersezione viene impostata come input principale.
  6. Nella scheda Attributi selezionare questa opzione per visualizzare gli attributi o gli attributi di output in entrata. Gli attributi in entrata si collegano all'operatore sul lato sinistro. Gli attributi di output si collegano all'operatore sul lato destro e passano all'operatore successivo.

    È possibile selezionare singoli attributi o utilizzare le icone di filtro per filtrare l'elenco di attributi. Applica quindi regole di esclusione di massa agli attributi selezionati o filtrati.

    • Fare clic sull'icona del filtro nella colonna Nome per filtrare gli attributi in base a un pattern di nomi. Nel campo Filtro, immettere un'espressione regolare semplice. È possibile utilizzare i caratteri jolly ? e * nel pattern regex.
    • Fare clic sull'icona del filtro nella colonna Tipo per filtrare gli attributi in base a un tipo di dati. Utilizzare il menu per selezionare il tipo da utilizzare come filtro.
      Nota

      È possibile applicare un solo filtro pattern di nomi, ma più filtri di tipo alla volta. Ad esempio, se si applica un filtro pattern di nomi (*_CODE) e due filtri di tipo (numerico, varchar), gli attributi vengono filtrati in base al pattern di nomi *_CODE e al tipo numerico o varchar.
    • Utilizzare il menu Azioni per applicare regole di esclusione di massa agli attributi selezionati o agli attributi filtrati. Selezionare Escludi per selezione o Escludi per filtro applicato.
    • Fare clic su Visualizza regole per aprire il pannello Regole. È possibile visualizzare e gestire le regole applicate all'entità dati. Per impostazione predefinita, la prima regola nel pannello Regole include tutti gli elementi.

    Un tipo complesso viene visualizzato come ARRAY (data type), COMPOSITE o MAP (key type, value type). Vedere Tipi di dati gerarchici per comprendere gli elementi supportati per i tipi complessi.

  7. Nella scheda Dati visualizzare una campionatura dei dati, in base alla configurazione dell'operatore e alle regole applicate nella scheda Attributi.

    Il profilo dati non viene visualizzato per gli attributi dati complessi. Per gli attributi dati complessi, per visualizzare la gerarchia della struttura dati in una struttura semplificata, selezionare i dati complessi visualizzati. Ad esempio, [...] o {…}.

    È possibile applicare le trasformazioni a singoli attributi oppure eseguire una trasformazione di massa in un gruppo di attributi.

    Per le entità con tipi di dati gerarchici, vedere Tipi di dati gerarchici per comprendere gli elementi supportati.

  8. Nella scheda Convalida verificare la presenza di avvertenze o errori che potrebbero causare l'errore del flusso di dati.

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.

Esempio di frazionamento

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 condizioneCondizione
CONDITION1SPLIT_1.BANK.BANK_ID<102
CONDITION2SPLIT_1.BANK.BANK_ID<104
NON CORRISPONDENTILa 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_IDBANK_NAME
101Una banca 101
102Banca B 102
103Banca C 103
104Banca D 104
Condition1 Output, prima condizione di corrispondenza

CONDITION1 restituisce una riga corrispondente.

BANK_IDBANK_NAME
101Una banca 101
Condition2 Output, prima condizione di corrispondenza

CONDITION2 restituisce due righe corrispondenti (dalle righe non corrispondenti dopo CONDITION1).

BANK_IDBANK_NAME
102Banca B 102
103Banca C 103
Output condizione non corrispondente, prima condizione corrispondente

La condizione UNMATCHED restituisce la riga rimanente.

BANK_IDBANK_NAME
104Banca D 104
Condition1 Output, Tutte le condizioni di corrispondenza

CONDITION1 restituisce una riga corrispondente.

BANK_IDBANK_NAME
101Una banca 101
Condition2 Output, Tutte le condizioni di corrispondenza

Tutti i dati vengono valutati da CONDITION2, restituendo tre righe corrispondenti.

BANK_IDBANK_NAME
101Una banca 101
102Banca B 102
103Banca 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_IDBANK_NAME
104Banca D 104
Aggiunta e configurazione di un operatore split

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.

  1. Nel pannello Operatori trascinare un operatore Dividi sull'area di creazione.
  2. Con l'operatore di divisione attivo, nella scheda Dettagli del pannello Proprietà, immettere un nome nel campo Identificativo oppure lasciare il nome così com'è.
  3. In Corrispondenza, specificare la modalità di gestione dei dati in entrata che soddisfano una condizione di divisione. È possibile scegliere tra le due opzioni riportate di seguito.
    • Prima condizione di corrispondenza: i dati che corrispondono alla prima condizione della sequenza vengono rimossi dall'ulteriore elaborazione in base a condizioni successive.

      Si consideri ad esempio una sequenza con quattro condizioni, inclusa l'ultima condizione Non corrispondente: Condition1, Condition2, Condition3 e Non corrispondente.

      Per Condition1, l'operazione non trova corrispondenze. Per Condition2 sono state trovate corrispondenze. L'operazione instrada i dati corrispondenti alla porta di output specificata per Condition2, quindi valuta i dati non corrispondenti per Condition3. Se non vengono trovate corrispondenze per Condtion3, tutti i dati vengono instradati alla porta di output specificata per la condizione Senza corrispondenza. Tuttavia, se vengono trovate corrispondenze per Condition3, l'operazione instrada i dati corrispondenti alla porta di output per Condition3, quindi instrada i dati rimanenti alla porta per la condizione Senza corrispondenza.

    • Tutte le condizioni corrispondenti: i dati che corrispondono a qualsiasi condizione vengono valutati per tutte le condizioni della sequenza.

      Ad esempio, si consideri una sequenza con Condition1 e Condition2. Le corrispondenze vengono trovate dopo la valutazione di Condition1. I dati corrispondenti vengono instradati alla porta di output specificata per Condition1. Tutti i dati (corrispondenti e senza corrispondenza) vengono quindi valutati da Condition2. I dati corrispondenti a Condition2 vengono instradati alla porta di output corrispondente. I dati che non soddisfano Condition1 e Condition2 vengono instradati alla porta di output per la condizione di divisione senza corrispondenza.

  4. In Condizioni frazionamento, fare clic su Aggiungi condizione per aggiungere una condizione frazionata.
    1. Nel pannello per aggiungere una condizione di divisione, modificare il valore Identificativo o lasciarlo così com'è.
    2. Nella sezione Condition builder è possibile fare doppio clic o trascinare attributi, parametri e funzioni da aggiungere all'editor per creare una condizione. È inoltre possibile immettere manualmente un'espressione di condizione nell'editor e convalidare l'espressione.
      Nota

      Nell'editor, un elemento aggiunto, ad esempio una funzione, potrebbe avere segnaposto. Per sostituire un segnaposto con un altro elemento, evidenziare il segnaposto, quindi fare doppio clic su un altro elemento dall'elenco.
    3. Fare clic su Aggiungi.
      La prima condizione aggiunta viene inserita prima della condizione Non corrispondente. È inoltre possibile visualizzare la sequenza di condizioni nell'icona con l'operatore espanso sullo sfondo.
    4. Ripetere i passi per aggiungere condizioni per formare una sequenza.
      La seconda condizione viene inserita nella sequenza tra la prima e le condizioni non corrispondenti. Le condizioni successive vengono sempre inserite prima della condizione Non corrispondente. La sequenza delle condizioni di divisione si riflette anche nell'icona espansa dell'operatore di divisione sullo sfondo.
  5. Per connettere una porta di output su una condizione di divisione a un altro operatore sullo sfondo:
    1. Espandere l'icona dell'operatore di divisione per visualizzare la sequenza delle condizioni.
      Se l'icona dell'operatore split non è espansa, è comunque possibile connettere l'operatore all'operatore successivo, ma il collegamento viene creato dalla porta della condizione Unmatched.
    2. Passare il puntatore del mouse sulla fine di una condizione, quindi trascinare il piccolo cerchio sul lato destro della condizione sull'operatore di modellazione successivo o su una destinazione.
    3. Collegare ogni condizione all'operatore o alla destinazione appropriati.
    Ogni porta di output della condizione può essere collegata a più operatori di modellazione e operatori di destinazione. Se l'icona dell'operatore di divisione non è espansa nello sfondo, è possibile passare il puntatore del mouse su una linea di collegamento per visualizzare il nome della condizione di tale collegamento.
  6. Nella scheda Attributi selezionare questa opzione per visualizzare gli attributi o gli attributi di output in entrata. Gli attributi in entrata si collegano all'operatore sul lato sinistro. Gli attributi di output si collegano all'operatore sul lato destro e passano all'operatore successivo.

    È possibile selezionare singoli attributi o utilizzare le icone di filtro per filtrare l'elenco di attributi. Applica quindi regole di esclusione di massa agli attributi selezionati o filtrati.

    • Fare clic sull'icona del filtro nella colonna Nome per filtrare gli attributi in base a un pattern di nomi. Nel campo Filtro, immettere un'espressione regolare semplice. È possibile utilizzare i caratteri jolly ? e * nel pattern regex.
    • Fare clic sull'icona del filtro nella colonna Tipo per filtrare gli attributi in base a un tipo di dati. Utilizzare il menu per selezionare il tipo da utilizzare come filtro.
      Nota

      È possibile applicare un solo filtro pattern di nomi, ma più filtri di tipo alla volta. Ad esempio, per filtrare in base al pattern di nomi *_CODE e al tipo numerico o varchar, applicare un filtro di pattern di nomi (*_CODE) e due filtri di tipo (numerico, varchar).
    • Utilizzare il menu Azioni per applicare regole di esclusione di massa agli attributi selezionati o agli attributi filtrati. Selezionare Escludi per selezione o Escludi per filtro applicato.
    • Fare clic su Visualizza regole per aprire il pannello Regole. È possibile visualizzare e gestire le regole applicate all'entità dati. Per impostazione predefinita, la prima regola nel pannello Regole include tutti gli elementi.

    Un tipo complesso viene visualizzato come ARRAY (data type), COMPOSITE o MAP (key type, value type). Vedere Tipi di dati gerarchici per comprendere gli elementi supportati per i tipi complessi.

  7. Nella scheda Dati visualizzare una campionatura dei dati, in base alla configurazione dell'operatore e alle regole applicate nella scheda Attributi.

    Il menu Porta di output condizionale mostra lo stesso numero di elementi del numero di condizioni configurate sull'operatore, inclusa la condizione Senza corrispondenza. Per impostazione predefinita, viene visualizzato l'output della prima porta condizione. Per modificare la vista di output, selezionare la porta dell'output della condizione dal menu.

    Il profilo dati non viene visualizzato per gli attributi dati complessi. Per gli attributi dati complessi, per visualizzare la gerarchia della struttura dati in una struttura semplificata, selezionare i dati complessi visualizzati. Ad esempio, [...] o {…}.

    È possibile applicare le trasformazioni a singoli attributi oppure eseguire una trasformazione di massa in un gruppo di attributi.

    Per le entità con tipi di dati gerarchici, vedere Tipi di dati gerarchici per comprendere gli elementi supportati.

  8. Nella scheda Convalida verificare la presenza di avvertenze o errori che potrebbero causare l'errore del flusso di dati.
Aggiunta di una condizione di divisione

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.

Funzioni hash
Funzionedescrizione;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 expr e restituisce un valore NUMBER.

expr può essere un'espressione, una colonna, un valore.

max_bucket è il valore massimo del bucket restituito, compreso tra 0 e 4294967295 (impostazione predefinita).

seed_value è un valore compreso tra 0 (predefinito) e 4294967295.

Oracle applica la funzione hash alla combinazione di expr e seed_value per produrre molti risultati diversi per lo stesso set di dati.

ORA_HASH('1')

ORA_HASH('b', 2)

ORA_HASH(100, 10, 10)

ORA_HASH(EXPRESSION_1.CUSTOMERS.SSN, 2)

Funzioni aritmetriche
Funzionedescrizione;Esempio
ABS(numeric)Restituisce la potenza assoluta del valore numeric.ABS(-1)
CEIL(numeric)Restituisce il numero intero minimo non maggiore del valore numericCEIL(-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:

  • 0: una cifra
  • #: una cifra, zero viene visualizzata come assente
  • .: segnaposto per il separatore decimale
  • ,: segnaposto per il separatore di raggruppamento
  • E: separa mantissa ed esponente per i formati esponenziali
  • -: prefisso negativo predefinito
  • ¤: segno di valuta; sostituito dal simbolo di valuta; se raddoppiato, sostituito dal simbolo di valuta internazionale; se presente in un modello, viene utilizzato il separatore decimale monetario al posto del separatore decimale

TO_NUMBER('5467.12') returns restituisce 5467.12

TO_NUMBER('-USD45,677.7', '¤¤##,###.#', 'en-US') restituisce -45677.7

Funzioni di data e ora
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 expr di data, in base al valore format e all'opzione locale fornita. La versione locale predefinita è en-US. Tag lingua supportati.

Pattern di formato data supportati:

  • aa: anno composto da due cifre.
  • yyyy: anno composto da quattro cifre.
  • M: mese numerico, ad esempio 1 per gennaio
  • MM: mese numerico, ad esempio 01 per gennaio
  • MMM: mese abbreviato, ad esempio Gen
  • MMMM: mese completo, ad esempio gennaio
  • d: giorno numerico del mese, ad esempio 1 per il 1° giugno
  • dd: giorno numerico del mese, ad esempio 01 per il 1° giugno
  • DDD: giorno numerico dell'anno compreso tra 001 e 366, ad esempio 002 per il 2 gennaio
  • F: giorno numerico della settimana in un mese, ad esempio 3 per il 3° lunedì di giugno.
  • EEE o E: il giorno della settimana denominato abbreviato, ad esempio Sole per domenica
  • EEEE: il giorno della settimana, ad esempio la domenica.
  • HH: formato di 24 ore da 00 a 23
  • H: formato di 24 ore da 0 a 23
  • hh: formato di 12 ore da 01 a 12
  • h: formato di 12 ore da 1 a 12
  • mm: minuti da 00 a 59
  • ss: secondi da 00 a 59
  • SSS: millisecondi da 000 a 999
  • a: AM o PM
  • z: fuso orario come PDT

DATE_FORMAT(Date '2020-10-11', 'yyyy-MM-dd') restituisce '2020-10-11'. Il primo argomento è un oggetto Date che rappresenta l'11 ottobre 2020.

DATE_FORMAT(Date '2018-junio-17', 'yyyy/MMMM/dd', 'es-ES') restituisce '2018/junio/17'

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.

WEEKOFYEAR('2022-07-28') restituisce 30

WEEKOFYEAR('2022-07-28 13:24:30') restituisce 30

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, format_string deve utilizzare i codici di formato strftime. Di seguito sono riportate le stringhe di formato che fanno distinzione tra maiuscole e minuscole supportate.

  • aa: anno composto da due cifre.
  • yyyy: anno composto da quattro cifre.
  • M: mese numerico, ad esempio 1 per gennaio
  • MM: mese numerico, ad esempio 01 per gennaio
  • MMM: mese abbreviato, ad esempio Gen
  • MMMM: mese completo, ad esempio gennaio
  • d: giorno numerico del mese, ad esempio 1 per il 1° giugno
  • dd: giorno numerico del mese, ad esempio 01 per il 1° giugno
  • DDD: giorno numerico dell'anno compreso tra 001 e 366, ad esempio 002 per il 2 gennaio
  • F: giorno numerico della settimana in un mese, ad esempio 3 per il 3° lunedì di giugno.
  • EEE o E: il giorno della settimana denominato abbreviato, ad esempio Sole per domenica
  • EEEE: il giorno della settimana, ad esempio la domenica.
  • HH: formato di 24 ore da 00 a 23
  • H: formato di 24 ore da 0 a 23
  • hh: formato di 12 ore da 01 a 12
  • h: formato di 12 ore da 1 a 12
  • mm: minuti da 00 a 59
  • ss: secondi da 00 a 59
  • SSS: millisecondi da 000 a 999
  • a: AM o PM
  • z: fuso orario come PDT

TO_DATE('31 December 2016', 'dd MMMM yyyy') restituisce un valore di data pari a 2016-12-31

TO_DATE('2018/junio/17', 'yyyy/MMMM/dd', 'es-ES') restituisce un valore di data pari a 2018-06-17

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, format_string deve utilizzare i codici di formato strftime. Altrimenti, i pattern di formato supportati sono:

  • aa: anno composto da due cifre.
  • yyyy: anno composto da quattro cifre.
  • M: mese numerico, ad esempio 1 per gennaio
  • MM: mese numerico, ad esempio 01 per gennaio
  • MMM: mese abbreviato, ad esempio Gen
  • MMMM: mese completo, ad esempio gennaio
  • d: giorno numerico del mese, ad esempio 1 per il 1° giugno
  • dd: giorno numerico del mese, ad esempio 01 per il 1° giugno
  • DDD: giorno numerico dell'anno compreso tra 001 e 366, ad esempio 002 per il 2 gennaio
  • F: giorno numerico della settimana in un mese, ad esempio 3 per il 3° lunedì di giugno.
  • EEE o E: il giorno della settimana denominato abbreviato, ad esempio Sole per domenica
  • EEEE: il giorno della settimana, ad esempio la domenica.
  • HH: formato di 24 ore da 00 a 23
  • H: formato di 24 ore da 0 a 23
  • hh: formato di 12 ore da 01 a 12
  • h: formato di 12 ore da 1 a 12
  • mm: minuti da 00 a 59
  • ss: secondi da 00 a 59
  • SSS: millisecondi da 000 a 999
  • a: AM o PM
  • z: fuso orario come PDT
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.

ADD_MONTHS('2017-07-30', 1) restituisce 2017-08-30

ADD_MONTHS('2017-07-30 09:07:21', 1) restituisce 2017-08-30

MONTHS_BETWEEN(start_date_expr, end_date_expr)

Restituisce il numero di mesi compresi tra start_date_expr e end_date_expr. start_date_expr e end_date_expr possono essere una data, un indicatore orario o una stringa con un formato quale yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS

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.

MONTHS_BETWEEN('2022-01-01', '2022-01-31') restituisce 1

MONTHS_BETWEEN('2022-07-28', '2020-07-25') restituisce 24

MONTHS_BETWEEN('2022-07-28 13:24:30', '2020-07-25 13:24:30') restituisce 24

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: yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS

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: yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS

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 fmt viene omesso, il formato predefinito è yyyy-MM-dd HH:mm:ss

FROM_UNIXTIME(1255033470) restituisce '2009-10-08 13:24:30'

FROM_UNIXTIME(1637258854) restituisce '2021-11-18 10:07:34'

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.

time_expr è una data, un indicatore orario o una stringa con un formato quale yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS

Se time_expr non viene fornito, l'ora corrente viene convertita.

Se time_expr è una stringa e fmt viene omesso, l'impostazione predefinita è yyyy-MM-dd HH:mm:ss

UNIX_TIMESTAMP('1970-01-01 00:00:00', 'yyyy-MM-dd HH:mm:ss') restituisce 28800

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 '1' YEAR restituisce un intervallo di 1 anno

INTERVAL '200' YEAR(3) restituisce un intervallo di 200 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
Funzioni analitiche
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 di stringa
Funzionidescrizione;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(',' col1)

CONCAT_WS('-', 'Hello', 'Oracle') restituisce Hello-Oracle

CONCAT_WS(' ', address, city, postal_code) restituisce 123 MyCity 987654

Se un elemento figlio della funzione è un array, l'array viene appiattito:

CONCAT_WS(',', 1,2,3, to_array(4,5,6), to_array(7,8), 9) restituisce 1,2,3,4,5,6,7,8,9

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('https://www.oracle.com/products', 'https://([[:alnum:]]+\.?){3,4}/?') restituisce https://www.oracle.com

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 search non viene trovato nella stringa, la stringa viene restituita invariata.

Se replacement non è specificato o è una stringa vuota, nulla sostituisce search che viene rimosso da string.

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, format_string deve utilizzare i codici di formato strftime. In caso contrario, i pattern di formato data supportati sono i seguenti:

  • aa: anno composto da due cifre.
  • yyyy: anno composto da quattro cifre.
  • M: mese numerico, ad esempio 1 per gennaio
  • MM: mese numerico, ad esempio 01 per gennaio
  • MMM: mese abbreviato, ad esempio Gen
  • MMMM: mese completo, ad esempio gennaio
  • d: giorno numerico del mese, ad esempio 1 per il 1° giugno
  • dd: giorno numerico del mese, ad esempio 01 per il 1° giugno
  • DDD: giorno numerico dell'anno compreso tra 001 e 366, ad esempio 002 per il 2 gennaio
  • F: giorno numerico della settimana in un mese, ad esempio 3 per il 3° lunedì di giugno.
  • EEE o E: il giorno della settimana denominato abbreviato, ad esempio Sole per domenica
  • EEEE: il giorno della settimana, ad esempio la domenica.
  • HH: formato di 24 ore da 00 a 23
  • H: formato di 24 ore da 0 a 23
  • hh: formato di 12 ore da 01 a 12
  • h: formato di 12 ore da 1 a 12
  • mm: minuti da 00 a 59
  • ss: secondi da 00 a 59
  • SSS: millisecondi da 000 a 999
  • a: AM o PM
  • z: fuso orario come PDT

Esempio numerico: TO_CHAR(123) restituisce 123

Esempio di data: TO_CHAR(Date '2020-10-30', 'yyyy.MM.dd', 'en-US') restituisce la stringa 2020.10.30. Il primo argomento è un oggetto Date che rappresenta il 30 ottobre 2020.

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+++'
Funzioni operatore (confronto)
Funzionedescrizione;Esempio
CASE WHEN condition1 THEN result1 ELSE result2 ENDRestituisce 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
ANDL'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"
OROperatore 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"
NOTL'operatore NOT logico.
LIKEEsegue 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'
BETWEENValuta un intervallo.FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007
INVerifica se un'espressione corrisponde a una lista di valori.FILTER_2.ORDERS.ORDER_ID IN (1003, 1007)
Funzioni ID univoco
Funzionedescrizione;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
Funzioni condizionali
Funzionedescrizione;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
Funzioni gerarchiche
Funzionedescrizione;Esempio
SCHEMA_OF_JSON(string)Analizza una stringa JSON e inserisce lo schema in formato DDL.

SCHEMA_OF_JSON('[{\"Zipcode\":704,\"ZipCodeType\":\"STANDARD\",\"City\":\"ORACLECITY\",\"State\":\"OC\"}]') restituisce 'ARRAY<STRUCT<City:string,State:string,ZipCodeType:string,Zipcode:bigint>>'

SCHEMA_OF_JSON('[{\"col\":0}]') restituisce 'ARRAY<STRUCT<col: BIGINT>>'

FROM_JSON(column, string)

Analizza una colonna contenente una stringa JSON in uno dei tipi seguenti, con lo schema specificato.

  • Mappa, con String come tipo di chiave
  • Struttura
  • Array

FROM_JSON('{\"Zipcode\":704,\"City\":\"ORACLE CITY\"}', 'STRUCT<Zipcode: BIGINT, City: STRING>') restituisce una colonna di tipo Struttura con lo schema specificato: {704, ORACLE CITY}

FROM_JSON('{\"a\":1, \"b\":0.8}', 'STRUCT<a: BIGINT, b: DOUBLE>') restituisce una colonna di tipo Struttura con lo schema specificato: {1, 0.8}

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_MAP('Ename',Expression_1.attribute1) restituisce una colonna di tipo Mappa: {"ENAME" -> 100}

TO_MAP('block', EXPRESSION_1.MYSOURCE.address.block, 'unit', EXPRESSION_1.MYSOURCE.address.unit) restituisce una colonna di tipo Mappa: {"block" -> 1,"unit" -> 1}

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_STRUCT('Ename',Expression_1.attribute1) restituisce {100}

TO_STRUCT('Id',Expression_1.attribute1, 'Name', Expression_1.attribute2) restituisce {100, "John"}

TO_ARRAY(column[,column]*)Crea una nuova colonna come tipo di array. Le colonne di input devono avere tutte lo stesso tipo di dati.

TO_Array(Expression_1.attribute1) restituisce [100]

TO_ARRAY(EXPRESSION_1.attribute2,EXPRESSION_1.attribute3) restituisce ["John","Friend"]

Funzioni ordine superiore

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

Funzionedescrizione;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 ARRAY_SORT.

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.

array_sort(to_array(5, 6, 1),
                   (left, right) -> CASE WHEN left < right THEN -1
                                         WHEN left > right THEN 1 ELSE 0 END)

L'array restituito è:

[1,5,6]
Modifica delle condizioni Split

È possibile modificare qualsiasi condizione di frazionamento ad eccezione della condizione Non corrispondente.

  1. Nello sfondo del designer, selezionare l'operatore di divisione della condizione che si desidera modificare.
    Nel pannello Proprietà viene visualizzata la scheda Dettagli per l'operatore diviso. Nell'area di creazione è possibile espandere e comprimere l'icona dell'operatore per mostrare e nascondere le condizioni di divisione esistenti.
  2. Nella scheda Dettagli, in Condizioni di divisione, selezionare Modifica dal menu Azioni (Menu Azioni) accanto alla condizione di divisione che si desidera modificare.
  3. Nel pannello Modifica condizione di divisione modificare il valore Identificativo o lasciarlo così com'è.
  4. Nella sezione Condition builder è possibile fare doppio clic per selezionare o trascinare gli attributi o le funzioni in entrata nell'editor per creare la condizione. È inoltre possibile modificare manualmente l'espressione di condizione nell'editor e convalidarla prima di salvarla.
  5. Fare clic su Salva modifiche.
Modifica della sequenza delle condizioni di frazionamento

È possibile spostare una condizione di divisione verso l'alto o verso il basso nella sequenza. Impossibile spostare solo la condizione Non abbinata.

  1. Nello sfondo del designer, selezionare l'operatore di divisione con la sequenza di condizioni che si desidera modificare.
    Nel pannello Proprietà viene visualizzata la scheda Dettagli per l'operatore diviso. Nell'area di creazione è possibile espandere e comprimere l'icona dell'operatore per mostrare e nascondere le condizioni di divisione esistenti.
  2. Nella scheda Dettagli, in Condizioni frazionamento, esaminare la sequenza delle condizioni frazionate.
  3. Accanto a una riga di condizione, nel menu Azioni (Menu Azioni), selezionare l'azione per spostare tale condizione verso l'alto o verso il basso nella sequenza.
    Si noti che la posizione della condizione nell'icona con l'operatore di divisione espanso sullo sfondo cambia di conseguenza quando si sposta una condizione.
Eliminazione delle condizioni di divisione

È possibile eliminare qualsiasi condizione di frazionamento ad eccezione della condizione Non corrispondente.

  1. Nello sfondo del designer, selezionare l'operatore di divisione della condizione che si desidera eliminare.
    Nel pannello Proprietà viene visualizzata la scheda Dettagli per l'operatore diviso. Nell'area di creazione è possibile espandere e comprimere l'icona dell'operatore per mostrare e nascondere le condizioni di divisione.
  2. Nella scheda Dettagli, in Condizioni frazionamento, selezionare Elimina dal menu Azioni (Menu Azioni) accanto alla condizione che si desidera eliminare.
  3. Per eliminare due o più condizioni, utilizzare la colonna accanto alla colonna Sequenza per selezionare le condizioni, quindi fare clic su Elimina.
  4. Se la porta di output in una condizione eliminata è stata connessa a un altro operatore o a un'altra destinazione, assicurarsi di rivedere il flusso di dati e apportare le modifiche necessarie dopo l'eliminazione delle condizioni.

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.

Esempio 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
STOREPRODOTTOSALES
Negozio ABTelevisione2
Negozio ABTelevisione4
Paese - NegozioTelevisione6
Paese - NegozioFrigorifero8
Negozio elettronicoMacchina per il caffè10
Output pivot: Raggruppa per negozio, prodotto chiave pivot
STORETELEVISIONEFRIGORIFEROMACCHINA PER IL CAFFÈ
Negozio AB6--
Paese - Negozio68-
Negozio elettronico--10
Output pivot: senza raggruppamento per, prodotto chiave pivot
TELEVISIONEFRIGORIFEROMACCHINA PER IL CAFFÈ
12810
Aggiunta e configurazione di un operatore pivot

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.

  1. Nel pannello Operatori trascinare un operatore Pivot sull'area di creazione.
  2. Con l'operatore pivot attivo, nella scheda Dettagli del pannello Proprietà, immettere un nome nel campo Identificativo o lasciare il nome così com'è.
  3. (Facoltativo) Per Raggruppa per, specificare gli attributi i cui valori distinti vengono utilizzati per disporre i dati sottoposti a pivot in righe raggruppate. Per impostazione predefinita, tutte le righe in entrata vengono aggregate e raggruppate in una riga a meno che non si specifichino uno o più attributi per raggruppare le righe.
    • Selezionare Attributi, quindi selezionare uno o più attributi per raggruppare le righe con pivot in base allo stesso valore. Ad esempio, se si seleziona un attributo con due valori univoci, l'output risultante contiene due righe di dati aggregati.
    • Selezionare Pattern per utilizzare un pattern di espressione regolare per selezionare gli attributi in base ai quali eseguire il raggruppamento. Solo gli attributi che corrispondono al pattern vengono utilizzati per raggruppare le righe con pivot in base allo stesso valore.
  4. Per la chiave pivot, selezionare l'attributo i cui valori possono essere utilizzati come nuovi attributi nell'output pivot. Come chiave pivot possono essere utilizzati solo attributi di tipo VARCHAR, INTEGER, FLOAT o BOOLEAN.
  5. In Valori chiave pivot, fare clic su Aggiungi valori chiave per selezionare uno o più valori dalla chiave pivot selezionata che si desidera vengano convertiti in attributi pivot nell'output. È possibile selezionare fino a 50 valori.

    È possibile utilizzare un alias per un valore chiave pivot selezionato. Un alias non può iniziare con un numero. È consentito solo il carattere speciale _.

    Per utilizzare un alias per un valore di chiave pivot selezionato, selezionare Modifica nel menu Azioni (Menu Azioni) per tale valore di chiave. Nel pannello Modifica alias chiave pivot, immettere l'alias per il valore della chiave.

    Per eliminare un valore di chiave pivot dall'elenco selezionato, selezionare la casella di controllo accanto ad esso e fare clic su Elimina. In alternativa, è possibile selezionare Elimina dal menu Azioni (Menu Azioni).

  6. In Espressioni, fare clic su Aggiungi espressione per aggiungere le espressioni della funzione di aggregazione. Fare riferimento alla sezione Aggiunta di un'espressione pivot.
  7. Nella scheda Attributi selezionare questa opzione per visualizzare gli attributi o gli attributi di output in entrata. Gli attributi in entrata si collegano all'operatore sul lato sinistro. Gli attributi di output si collegano all'operatore sul lato destro e passano all'operatore successivo.

    È possibile selezionare singoli attributi o utilizzare le icone di filtro per filtrare l'elenco di attributi. Applica quindi regole di esclusione di massa agli attributi selezionati o filtrati.

    • Fare clic sull'icona del filtro nella colonna Nome per filtrare gli attributi in base a un pattern di nomi. Nel campo Filtro, immettere un'espressione regolare semplice. È possibile utilizzare i caratteri jolly ? e * nel pattern regex.
    • Fare clic sull'icona del filtro nella colonna Tipo per filtrare gli attributi in base a un tipo di dati. Utilizzare il menu per selezionare il tipo da utilizzare come filtro.
      Nota

      È possibile applicare un solo filtro pattern di nomi, ma più filtri di tipo alla volta. Ad esempio, per filtrare in base al pattern di nomi *_CODE e al tipo numerico o varchar, applicare un filtro di pattern di nomi (*_CODE) e due filtri di tipo (numerico, varchar).
    • Utilizzare il menu Azioni per applicare regole di esclusione di massa agli attributi selezionati o agli attributi filtrati. Selezionare Escludi per selezione o Escludi per filtro applicato.
    • Fare clic su Visualizza regole per aprire il pannello Regole. È possibile visualizzare e gestire le regole applicate all'entità dati. Per impostazione predefinita, la prima regola nel pannello Regole include tutti gli elementi.

    Un tipo complesso viene visualizzato come ARRAY (data type), COMPOSITE o MAP (key type, value type). Vedere Tipi di dati gerarchici per comprendere gli elementi supportati per i tipi complessi.

  8. Nella scheda Dati visualizzare una campionatura dei dati, in base alla configurazione dell'operatore e alle regole applicate nella scheda Attributi.

    Il profilo dati non viene visualizzato per gli attributi dati complessi. Per gli attributi dati complessi, per visualizzare la gerarchia della struttura dati in una struttura semplificata, selezionare i dati complessi visualizzati. Ad esempio, [...] o {…}.

    È possibile applicare le trasformazioni a singoli attributi oppure eseguire una trasformazione di massa in un gruppo di attributi.

    Per le entità con tipi di dati gerarchici, vedere Tipi di dati gerarchici per comprendere gli elementi supportati.

  9. Nella scheda Convalida verificare la presenza di avvertenze o errori che potrebbero causare l'errore del flusso di dati.
Aggiunta di un'espressione pivot

Per un operatore pivot sono necessarie una o più espressioni di funzione di aggregazione.

  1. Con l'operatore pivot selezionato nello sfondo del flusso di dati, in Espressioni nel pannello delle proprietà, fare clic su Aggiungi espressione.

  2. Nel pannello Aggiungi espressione, immettere un nome per l'espressione nel campo Identificativo oppure lasciare il nome così com'è.

  3. (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.

    1. In Attributi di origine, selezionare Pattern e fare clic su Aggiungi pattern.

    2. 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.

    3. 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.

    4. È 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.
  4. 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.

  5. 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.

    Funzionedescrizione;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.

  6. 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 origine DISCOUNT_RATE e DISCOUNT_VALUE, è possibile specificare una funzione di aggregazione, ad esempio SUM(numeric), per applicare la funzione a tutti gli attributi che corrispondono al pattern. %MACRO_INPUT% sostituisce il segnaposto numeric 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 segnaposto numeric 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 tipo VARCHAR e MIN 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)
  7. 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.

Esempio 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_IDCUSTOMER_IDIMPORTO
11012.500
21021.110
3103500
4104400
5105150
6102450
Entità dati 2, origine input ricerca
CUSTOMER_IDNAME
101Pietro
102Paul
106provincia di Mary
102Pauline
Output ricerca
PAYMENT_IDCUSTOMER_IDIMPORTOCUSTOMER_IDNAME
11012.500101Pietro
21021.110102Paul
3103500nullonullo
4104400nullonullo
5105150nullonullo
6102450102Paul
Aggiunta e configurazione di un operatore di ricerca

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.

  1. Dal pannello Operatori, trascinare un operatore Lookup sull'area di creazione.
  2. Con l'operatore di ricerca attivo, nella scheda Dettagli del pannello Proprietà, immettere un nome nel campo Identificativo oppure lasciare il nome così com'è.
  3. Per l'input principale, selezionare l'origine che contiene un valore per la corrispondenza di una o più righe nell'origine di ricerca. La corrispondenza si basa su una condizione di ricerca creata nel passo 5.
    L'input principale determina inoltre l'ordine degli attributi e delle righe nell'output di ricerca risultante.
  4. In Input ricerca, selezionare l'origine a cui fa riferimento l'origine primaria in modo che corrisponda a una o più righe.
    Gli attributi dell'input di ricerca vengono aggiunti agli attributi di input principali nell'output risultante.
  5. Per la corrispondenza multipla, selezionare l'azione da eseguire quando vengono trovate più righe corrispondenti tra l'origine principale e l'origine di ricerca. L'azione selezionata determina le righe da utilizzare nell'output risultante.
    • Restituisci qualsiasi riga corrispondente: azione predefinita. Seleziona qualsiasi riga corrispondente.
    • Restituisci la prima riga corrispondente: seleziona la prima riga dalle righe corrispondenti.
    • Restituisci l'ultima riga corrispondente: seleziona l'ultima riga dalle righe corrispondenti.
    • Errore restituito: visualizza un errore. Non completa l'operazione.
    • Restituisci tutte le righe corrispondenti: seleziona tutte le righe corrispondenti.
  6. Per Nessuna corrispondenza, selezionare l'azione da eseguire quando non viene trovata alcuna riga corrispondente tra l'origine primaria e l'origine di ricerca. L'azione selezionata determina la modalità di gestione della riga di origine principale che non ha una riga corrispondente nell'origine di ricerca.
    • Salta righe non corrispondenti: non include righe non corrispondenti nell'output risultante.
    • Restituisci righe non corrispondenti: azione predefinita. Include righe non corrispondenti nell'output risultante con valori nulli.
  7. Accanto alla condizione di ricerca, fare clic su Crea.
    1. Nel pannello Crea condizione di ricerca, sezione Costruzione guidata condizione, è possibile fare doppio clic o trascinare attributi, parametri e funzioni da aggiungere all'editor per creare una condizione. È inoltre possibile immettere manualmente l'espressione di condizione nell'editor e convalidare l'espressione.
      Nota

      Nell'editor, un elemento aggiunto, ad esempio una funzione, potrebbe avere segnaposto. Per sostituire un segnaposto con un altro elemento, evidenziare il segnaposto, quindi fare doppio clic su un altro elemento dall'elenco.
    2. Fare clic su Crea.
  8. (Facoltativo) Fare clic su Assegna parametro per utilizzare i parametri in modo che la condizione di ricerca non sia associata al codice compilato quando si pubblica il flusso di dati. Vedere Assegnazione di un parametro.
  9. Nella scheda Attributi selezionare questa opzione per visualizzare gli attributi o gli attributi di output in entrata. Gli attributi in entrata si collegano all'operatore sul lato sinistro. Gli attributi di output si collegano all'operatore sul lato destro e passano all'operatore successivo.

    È possibile selezionare singoli attributi o utilizzare le icone di filtro per filtrare l'elenco di attributi. Applica quindi regole di esclusione di massa agli attributi selezionati o filtrati.

    • Fare clic sull'icona del filtro nella colonna Nome per filtrare gli attributi in base a un pattern di nomi. Nel campo Filtro, immettere un'espressione regolare semplice. È possibile utilizzare i caratteri jolly ? e * nel pattern regex.
    • Fare clic sull'icona del filtro nella colonna Tipo per filtrare gli attributi in base a un tipo di dati. Utilizzare il menu per selezionare il tipo da utilizzare come filtro.
      Nota

      È possibile applicare un solo filtro pattern di nomi, ma più filtri di tipo alla volta. Ad esempio, per filtrare in base al pattern di nomi *_CODE e al tipo numerico o varchar, applicare un filtro di pattern di nomi (*_CODE) e due filtri di tipo (numerico, varchar).
    • Utilizzare il menu Azioni per applicare regole di esclusione di massa agli attributi selezionati o agli attributi filtrati. Selezionare Escludi per selezione o Escludi per filtro applicato.
    • Fare clic su Visualizza regole per aprire il pannello Regole. È possibile visualizzare e gestire le regole applicate all'entità dati. Per impostazione predefinita, la prima regola nel pannello Regole include tutti gli elementi.

    Un tipo complesso viene visualizzato come ARRAY (data type), COMPOSITE o MAP (key type, value type). Vedere Tipi di dati gerarchici per comprendere gli elementi supportati per i tipi complessi.

  10. Nella scheda Dati visualizzare una campionatura dei dati, in base alla configurazione dell'operatore e alle regole applicate nella scheda Attributi.

    Il profilo dati non viene visualizzato per gli attributi dati complessi. Per gli attributi dati complessi, per visualizzare la gerarchia della struttura dati in una struttura semplificata, selezionare i dati complessi visualizzati. Ad esempio, [...] o {…}.

    È possibile applicare le trasformazioni a singoli attributi oppure eseguire una trasformazione di massa in un gruppo di attributi.

    Per le entità con tipi di dati gerarchici, vedere Tipi di dati gerarchici per comprendere gli elementi supportati.

  11. Nella scheda Convalida verificare la presenza di avvertenze o errori che potrebbero causare l'errore del flusso di dati.
Creazione di una condizione di ricerca

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.

Funzioni hash
Funzionedescrizione;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 expr e restituisce un valore NUMBER.

expr può essere un'espressione, una colonna, un valore.

max_bucket è il valore massimo del bucket restituito, compreso tra 0 e 4294967295 (impostazione predefinita).

seed_value è un valore compreso tra 0 (predefinito) e 4294967295.

Oracle applica la funzione hash alla combinazione di expr e seed_value per produrre molti risultati diversi per lo stesso set di dati.

ORA_HASH('1')

ORA_HASH('b', 2)

ORA_HASH(100, 10, 10)

ORA_HASH(EXPRESSION_1.CUSTOMERS.SSN, 2)

Funzioni aritmetriche
Funzionedescrizione;Esempio
ABS(numeric)Restituisce la potenza assoluta del valore numeric.ABS(-1)
CEIL(numeric)Restituisce il numero intero minimo non maggiore del valore numericCEIL(-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:

  • 0: una cifra
  • #: una cifra, zero viene visualizzata come assente
  • .: segnaposto per il separatore decimale
  • ,: segnaposto per il separatore di raggruppamento
  • E: separa mantissa ed esponente per i formati esponenziali
  • -: prefisso negativo predefinito
  • ¤: segno di valuta; sostituito dal simbolo di valuta; se raddoppiato, sostituito dal simbolo di valuta internazionale; se presente in un modello, viene utilizzato il separatore decimale monetario al posto del separatore decimale

TO_NUMBER('5467.12') returns restituisce 5467.12

TO_NUMBER('-USD45,677.7', '¤¤##,###.#', 'en-US') restituisce -45677.7

Funzioni di data e ora
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 expr di data, in base al valore format e all'opzione locale fornita. La versione locale predefinita è en-US. Tag lingua supportati.

Pattern di formato data supportati:

  • aa: anno composto da due cifre.
  • yyyy: anno composto da quattro cifre.
  • M: mese numerico, ad esempio 1 per gennaio
  • MM: mese numerico, ad esempio 01 per gennaio
  • MMM: mese abbreviato, ad esempio Gen
  • MMMM: mese completo, ad esempio gennaio
  • d: giorno numerico del mese, ad esempio 1 per il 1° giugno
  • dd: giorno numerico del mese, ad esempio 01 per il 1° giugno
  • DDD: giorno numerico dell'anno compreso tra 001 e 366, ad esempio 002 per il 2 gennaio
  • F: giorno numerico della settimana in un mese, ad esempio 3 per il 3° lunedì di giugno.
  • EEE o E: il giorno della settimana denominato abbreviato, ad esempio Sole per domenica
  • EEEE: il giorno della settimana, ad esempio la domenica.
  • HH: formato di 24 ore da 00 a 23
  • H: formato di 24 ore da 0 a 23
  • hh: formato di 12 ore da 01 a 12
  • h: formato di 12 ore da 1 a 12
  • mm: minuti da 00 a 59
  • ss: secondi da 00 a 59
  • SSS: millisecondi da 000 a 999
  • a: AM o PM
  • z: fuso orario come PDT

DATE_FORMAT(Date '2020-10-11', 'yyyy-MM-dd') restituisce '2020-10-11'. Il primo argomento è un oggetto Date che rappresenta l'11 ottobre 2020.

DATE_FORMAT(Date '2018-junio-17', 'yyyy/MMMM/dd', 'es-ES') restituisce '2018/junio/17'

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.

WEEKOFYEAR('2022-07-28') restituisce 30

WEEKOFYEAR('2022-07-28 13:24:30') restituisce 30

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, format_string deve utilizzare i codici di formato strftime. Di seguito sono riportate le stringhe di formato che fanno distinzione tra maiuscole e minuscole supportate.

  • aa: anno composto da due cifre.
  • yyyy: anno composto da quattro cifre.
  • M: mese numerico, ad esempio 1 per gennaio
  • MM: mese numerico, ad esempio 01 per gennaio
  • MMM: mese abbreviato, ad esempio Gen
  • MMMM: mese completo, ad esempio gennaio
  • d: giorno numerico del mese, ad esempio 1 per il 1° giugno
  • dd: giorno numerico del mese, ad esempio 01 per il 1° giugno
  • DDD: giorno numerico dell'anno compreso tra 001 e 366, ad esempio 002 per il 2 gennaio
  • F: giorno numerico della settimana in un mese, ad esempio 3 per il 3° lunedì di giugno.
  • EEE o E: il giorno della settimana denominato abbreviato, ad esempio Sole per domenica
  • EEEE: il giorno della settimana, ad esempio la domenica.
  • HH: formato di 24 ore da 00 a 23
  • H: formato di 24 ore da 0 a 23
  • hh: formato di 12 ore da 01 a 12
  • h: formato di 12 ore da 1 a 12
  • mm: minuti da 00 a 59
  • ss: secondi da 00 a 59
  • SSS: millisecondi da 000 a 999
  • a: AM o PM
  • z: fuso orario come PDT

TO_DATE('31 December 2016', 'dd MMMM yyyy') restituisce un valore di data pari a 2016-12-31

TO_DATE('2018/junio/17', 'yyyy/MMMM/dd', 'es-ES') restituisce un valore di data pari a 2018-06-17

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, format_string deve utilizzare i codici di formato strftime. Altrimenti, i pattern di formato supportati sono:

  • aa: anno composto da due cifre.
  • yyyy: anno composto da quattro cifre.
  • M: mese numerico, ad esempio 1 per gennaio
  • MM: mese numerico, ad esempio 01 per gennaio
  • MMM: mese abbreviato, ad esempio Gen
  • MMMM: mese completo, ad esempio gennaio
  • d: giorno numerico del mese, ad esempio 1 per il 1° giugno
  • dd: giorno numerico del mese, ad esempio 01 per il 1° giugno
  • DDD: giorno numerico dell'anno compreso tra 001 e 366, ad esempio 002 per il 2 gennaio
  • F: giorno numerico della settimana in un mese, ad esempio 3 per il 3° lunedì di giugno.
  • EEE o E: il giorno della settimana denominato abbreviato, ad esempio Sole per domenica
  • EEEE: il giorno della settimana, ad esempio la domenica.
  • HH: formato di 24 ore da 00 a 23
  • H: formato di 24 ore da 0 a 23
  • hh: formato di 12 ore da 01 a 12
  • h: formato di 12 ore da 1 a 12
  • mm: minuti da 00 a 59
  • ss: secondi da 00 a 59
  • SSS: millisecondi da 000 a 999
  • a: AM o PM
  • z: fuso orario come PDT
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.

ADD_MONTHS('2017-07-30', 1) restituisce 2017-08-30

ADD_MONTHS('2017-07-30 09:07:21', 1) restituisce 2017-08-30

MONTHS_BETWEEN(start_date_expr, end_date_expr)

Restituisce il numero di mesi compresi tra start_date_expr e end_date_expr. start_date_expr e end_date_expr possono essere una data, un indicatore orario o una stringa con un formato quale yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS

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.

MONTHS_BETWEEN('2022-01-01', '2022-01-31') restituisce 1

MONTHS_BETWEEN('2022-07-28', '2020-07-25') restituisce 24

MONTHS_BETWEEN('2022-07-28 13:24:30', '2020-07-25 13:24:30') restituisce 24

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: yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS

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: yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS

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 fmt viene omesso, il formato predefinito è yyyy-MM-dd HH:mm:ss

FROM_UNIXTIME(1255033470) restituisce '2009-10-08 13:24:30'

FROM_UNIXTIME(1637258854) restituisce '2021-11-18 10:07:34'

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.

time_expr è una data, un indicatore orario o una stringa con un formato quale yyyy-MM-dd o yyyy-MM-dd HH:mm:ss.SSS

Se time_expr non viene fornito, l'ora corrente viene convertita.

Se time_expr è una stringa e fmt viene omesso, l'impostazione predefinita è yyyy-MM-dd HH:mm:ss

UNIX_TIMESTAMP('1970-01-01 00:00:00', 'yyyy-MM-dd HH:mm:ss') restituisce 28800

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 '1' YEAR restituisce un intervallo di 1 anno

INTERVAL '200' YEAR(3) restituisce un intervallo di 200 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
Funzioni analitiche
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 di stringa
Funzionidescrizione;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(',' col1)

CONCAT_WS('-', 'Hello', 'Oracle') restituisce Hello-Oracle

CONCAT_WS(' ', address, city, postal_code) restituisce 123 MyCity 987654

Se un elemento figlio della funzione è un array, l'array viene appiattito:

CONCAT_WS(',', 1,2,3, to_array(4,5,6), to_array(7,8), 9) restituisce 1,2,3,4,5,6,7,8,9

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('https://www.oracle.com/products', 'https://([[:alnum:]]+\.?){3,4}/?') restituisce https://www.oracle.com

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 search non viene trovato nella stringa, la stringa viene restituita invariata.

Se replacement non è specificato o è una stringa vuota, nulla sostituisce search che viene rimosso da string.

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, format_string deve utilizzare i codici di formato strftime. In caso contrario, i pattern di formato data supportati sono i seguenti:

  • aa: anno composto da due cifre.
  • yyyy: anno composto da quattro cifre.
  • M: mese numerico, ad esempio 1 per gennaio
  • MM: mese numerico, ad esempio 01 per gennaio
  • MMM: mese abbreviato, ad esempio Gen
  • MMMM: mese completo, ad esempio gennaio
  • d: giorno numerico del mese, ad esempio 1 per il 1° giugno
  • dd: giorno numerico del mese, ad esempio 01 per il 1° giugno
  • DDD: giorno numerico dell'anno compreso tra 001 e 366, ad esempio 002 per il 2 gennaio
  • F: giorno numerico della settimana in un mese, ad esempio 3 per il 3° lunedì di giugno.
  • EEE o E: il giorno della settimana denominato abbreviato, ad esempio Sole per domenica
  • EEEE: il giorno della settimana, ad esempio la domenica.
  • HH: formato di 24 ore da 00 a 23
  • H: formato di 24 ore da 0 a 23
  • hh: formato di 12 ore da 01 a 12
  • h: formato di 12 ore da 1 a 12
  • mm: minuti da 00 a 59
  • ss: secondi da 00 a 59
  • SSS: millisecondi da 000 a 999
  • a: AM o PM
  • z: fuso orario come PDT

Esempio numerico: TO_CHAR(123) restituisce 123

Esempio di data: TO_CHAR(Date '2020-10-30', 'yyyy.MM.dd', 'en-US') restituisce la stringa 2020.10.30. Il primo argomento è un oggetto Date che rappresenta il 30 ottobre 2020.

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+++'
Funzioni operatore (confronto)
Funzionedescrizione;Esempio
CASE WHEN condition1 THEN result1 ELSE result2 ENDRestituisce 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
ANDL'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"
OROperatore 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"
NOTL'operatore NOT logico.
LIKEEsegue 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'
BETWEENValuta un intervallo.FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007
INVerifica se un'espressione corrisponde a una lista di valori.FILTER_2.ORDERS.ORDER_ID IN (1003, 1007)
Funzioni ID univoco
Funzionedescrizione;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
Funzioni condizionali
Funzionedescrizione;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
Funzioni gerarchiche
Funzionedescrizione;Esempio
SCHEMA_OF_JSON(string)Analizza una stringa JSON e inserisce lo schema in formato DDL.

SCHEMA_OF_JSON('[{\"Zipcode\":704,\"ZipCodeType\":\"STANDARD\",\"City\":\"ORACLECITY\",\"State\":\"OC\"}]') restituisce 'ARRAY<STRUCT<City:string,State:string,ZipCodeType:string,Zipcode:bigint>>'

SCHEMA_OF_JSON('[{\"col\":0}]') restituisce 'ARRAY<STRUCT<col: BIGINT>>'

FROM_JSON(column, string)

Analizza una colonna contenente una stringa JSON in uno dei tipi seguenti, con lo schema specificato.

  • Mappa, con String come tipo di chiave
  • Struttura
  • Array

FROM_JSON('{\"Zipcode\":704,\"City\":\"ORACLE CITY\"}', 'STRUCT<Zipcode: BIGINT, City: STRING>') restituisce una colonna di tipo Struttura con lo schema specificato: {704, ORACLE CITY}

FROM_JSON('{\"a\":1, \"b\":0.8}', 'STRUCT<a: BIGINT, b: DOUBLE>') restituisce una colonna di tipo Struttura con lo schema specificato: {1, 0.8}

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_MAP('Ename',Expression_1.attribute1) restituisce una colonna di tipo Mappa: {"ENAME" -> 100}

TO_MAP('block', EXPRESSION_1.MYSOURCE.address.block, 'unit', EXPRESSION_1.MYSOURCE.address.unit) restituisce una colonna di tipo Mappa: {"block" -> 1,"unit" -> 1}

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_STRUCT('Ename',Expression_1.attribute1) restituisce {100}

TO_STRUCT('Id',Expression_1.attribute1, 'Name', Expression_1.attribute2) restituisce {100, "John"}

TO_ARRAY(column[,column]*)Crea una nuova colonna come tipo di array. Le colonne di input devono avere tutte lo stesso tipo di dati.

TO_Array(Expression_1.attribute1) restituisce [100]

TO_ARRAY(EXPRESSION_1.attribute2,EXPRESSION_1.attribute3) restituisce ["John","Friend"]

Funzioni ordine superiore

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

Funzionedescrizione;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 ARRAY_SORT.

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.

array_sort(to_array(5, 6, 1),
                   (left, right) -> CASE WHEN left < right THEN -1
                                         WHEN left > right THEN 1 ELSE 0 END)

L'array restituito è:

[1,5,6]

Operatore funzione

Utilizzare l'operatore di funzione per richiamare Oracle Cloud Infrastructure Functions dall'interno di Data Integration.

Nota

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.

Informazioni preliminari

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:

allow any-user to use fn-invocation in compartment <compartment-name> where ALL {request.principal.type='disworkspace', request.principal.id='<workspace-ocid>'}

allow any-user to read fn-function in compartment <compartment-name> where ALL {request.principal.type='disworkspace', request.principal.id='<workspace-ocid>'}

Per limitare gli utenti a richiamare una funzione specifica in un'area di lavoro, effettuare le operazioni riportate di seguito.

allow any-user to use fn-invocation in compartment <compartment-name> where ALL {request.principal.type='disworkspace', request.principal.id='<workspace-ocid>', target.function.id='<function-ocid>'}

allow any-user to read fn-function in compartment <compartment-name> where ALL {request.principal.type='disworkspace', request.principal.id='<workspace-ocid>', target.function.id='<function-ocid>'}

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.

Vedere Creazione di applicazioni (in Funzioni).

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.

Vedere Creazione e distribuzione di funzioni.

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.

  • Il compartimento con l'applicazione OCI Functions in cui viene distribuita la funzione che si desidera utilizzare
  • L'applicazione in OCI Functions con la funzione distribuita
  • Il nome della funzione distribuita
  • I campi definiti nella funzione
Aggiunta e configurazione di un operatore di funzione

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.

  1. Nel pannello Operatori trascinare un operatore Funzione sull'area di creazione.
  2. Con l'operatore di funzione attivo, nella scheda Dettagli del pannello Proprietà, immettere un nome nel campo Identificativo o lasciare il nome così com'è.
  3. Selezionare la funzione OCI da utilizzare per questo operatore. Vedere Selezione di una funzione.
  4. Selezionare il formato di serializzazione e definire i dati di input e output della funzione.
  5. Specificare gli attributi di input e gli attributi di output per l'operatore e i valori della configurazione delle funzioni per la funzione. Vedere Aggiunta di una proprietà dell'operatore di funzione.

    Gli attributi di input definiscono la forma di input per l'operatore di funzione, ovvero uno o più attributi in entrata su cui la funzione deve lavorare. Gli attributi di input vengono mappati agli attributi in entrata dall'origine dell'entità dati.

    I valori della configurazione delle funzioni definiscono la forma di input della funzione, ovvero uno o più campi definiti nella funzione. Definire un campo funzione con un nome e un valore. Il valore di un campo corrisponde a un attributo di input. È possibile parametrizzare un valore di configurazione della funzione.

    Gli attributi di output definiscono la forma di output per l'operatore di funzione, ovvero uno o più attributi in cui la funzione deve scrivere l'output. Aggiungere un attributo di output per ogni campo funzione desiderato nell'output. Gli operatori a valle successivi possono utilizzare gli attributi di output.

    Nota

    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".
  6. (Facoltativo) In Proprietà funzione, espandere Configurazione funzione per rivedere i valori di configurazione della funzione. È possibile modificare o parametrizzare un valore.

    BATCH_SIZE è una configurazione di funzione predefinita che rappresenta il numero di righe elaborate da una funzione alla volta. L'impostazione predefinita è 10,000 righe.

    Per un valore di configurazione funzione, è possibile effettuare le operazioni riportate di seguito.

  7. Nella scheda Attributi selezionare questa opzione per visualizzare gli attributi o gli attributi di output in entrata. Gli attributi in entrata si collegano all'operatore sul lato sinistro. Gli attributi di output si collegano all'operatore sul lato destro e passano all'operatore successivo.

    È possibile selezionare singoli attributi o utilizzare le icone di filtro per filtrare l'elenco di attributi. Applica quindi regole di esclusione di massa agli attributi selezionati o filtrati.

    • Fare clic sull'icona del filtro nella colonna Nome per filtrare gli attributi in base a un pattern di nomi. Nel campo Filtro, immettere un'espressione regolare semplice. È possibile utilizzare i caratteri jolly ? e * nel pattern regex.
    • Fare clic sull'icona del filtro nella colonna Tipo per filtrare gli attributi in base a un tipo di dati. Utilizzare il menu per selezionare il tipo da utilizzare come filtro.
      Nota

      È possibile applicare un solo filtro pattern di nomi, ma più filtri di tipo alla volta. Ad esempio, per filtrare in base al pattern di nomi *_CODE e al tipo numerico o varchar, applicare un filtro di pattern di nomi (*_CODE) e due filtri di tipo (numerico, varchar).
    • Utilizzare il menu Azioni per applicare regole di esclusione di massa agli attributi selezionati o agli attributi filtrati. Selezionare Escludi per selezione o Escludi per filtro applicato.
    • Fare clic su Visualizza regole per aprire il pannello Regole. È possibile visualizzare e gestire le regole applicate all'entità dati. Per impostazione predefinita, la prima regola nel pannello Regole include tutti gli elementi.

    Un tipo complesso viene visualizzato come ARRAY (data type), COMPOSITE o MAP (key type, value type). Vedere Tipi di dati gerarchici per comprendere gli elementi supportati per i tipi complessi.

  8. Nella scheda Mappa trascinare un attributo dall'origine dell'entità dati all'attributo di input corrispondente nella funzione per creare un mapping manuale.
  9. Nella scheda Dati visualizzare una campionatura dei dati, in base alla configurazione dell'operatore e alle regole applicate nella scheda Attributi.

    Gli attributi di output della funzione vengono aggiunti al data set.

    Il profilo dati non viene visualizzato per gli attributi dati complessi. Per gli attributi dati complessi, per visualizzare la gerarchia della struttura dati in una struttura semplificata, selezionare i dati complessi visualizzati. Ad esempio, [...] o {…}.

    È possibile applicare le trasformazioni a singoli attributi oppure eseguire una trasformazione di massa in un gruppo di attributi.

    Per le entità con tipi di dati gerarchici, vedere Tipi di dati gerarchici per comprendere gli elementi supportati.

  10. Nella scheda Convalida verificare la presenza di avvertenze o errori che potrebbero causare l'errore del flusso di dati.
Selezione di una funzione

La funzione che si desidera utilizzare con un operatore di funzione deve essere distribuita in un'applicazione in Oracle Cloud Infrastructure Functions.

  1. Nell'area di creazione selezionare l'operatore di funzione.
  2. Nella scheda Dettagli del pannello Proprietà, per Funzione OCI, fare clic su Seleziona.
  3. Nel pannello, selezionare il compartimento con l'applicazione OCI Functions in cui è stata distribuita la funzione che si desidera utilizzare.
  4. Selezionare l'applicazione in OCI Functions con la funzione distribuita.
  5. Nella sezione Funzione OCI, selezionare la funzione.
  6. Fare clic su OK.
Aggiunta di una proprietà operatore funzione

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.

Nota

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".
  1. In Proprietà funzione, fare clic su Aggiungi proprietà.
  2. 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.
  3. 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.
  4. Selezionare il tipo di dati della proprietà.
  5. 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.
  6. 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.
  7. 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.

  8. 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 (Menu Azioni) alla fine della riga.

    Impossibile eliminare l'elemento dello schema padre.

  9. Nel pannello Aggiungi proprietà, fare clic su Aggiungi.
  10. 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.

Informazioni sulle preferenze di proiezione

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
Crea e progetta indici di array

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
Conserva tutti gli attributi fino all'array appiattito

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
Produci una singola riga con valori nulli per l'array padre mancante

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 |
Conserva derivazione nome padre nei nomi degli attributi

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
Aggiunta e configurazione di un operatore appiattito

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.

  1. Dal pannello Operatori, trascinare l'operatore Flatten sull'area di creazione e collegare l'operatore all'operatore di origine.

    Nel pannello Proprietà viene visualizzata la scheda Dettagli per l'operatore di appiattimento.

    La tabella degli attributi mostra la struttura ad albero dei dati in entrata. Per impostazione predefinita, tutti i nodi vengono espansi. Ogni nodo ha un tipo di dati e un percorso come VARCHAR e parent1.parent2.node1. Ad esempio: vehicle.insurance.company

    Nel campo di ricerca è possibile cercare solo i nodi di livello superiore.

  2. Con l'operatore di appiattimento attivo, utilizzare la scheda Dettagli per effettuare le operazioni riportate di seguito.
    1. Immettere un nome per l'operatore nel campo Identificativo oppure lasciare il nome così com'è.
    2. In Preferenze di proiezione, rivedere le impostazioni. Per impostazione predefinita, vengono selezionate tutte le impostazioni. Deselezionare la casella di controllo delle impostazioni che non si desidera configurare per questa operazione.
    3. Nelle tabelle degli attributi, selezionare la casella di controllo accanto al nodo di array in cui si desidera appiattire la struttura dati. Selezionare quindi Applica dati all'attributo selezionato.

      È possibile selezionare solo una casella di controllo.

      Dopo l'appiattimento, il percorso dell'attributo complesso selezionato e appiattito viene visualizzato sopra la tabella, accanto a Espandi di. Ad esempio: FLATTEN_1.MYFILE_JSON.vehicle.maintenance.dealerdetails.servicestation2.dealeraddress

    4. (Facoltativo) Se applicabile nella struttura appiattita, selezionare l'icona delle azioni accanto a un nodo di array nella tabella e selezionare Converti array in stringa. Vedere anche Conversioni di array.
    5. (Facoltativo) Per ripristinare l'appiattimento selezionato nel passo c, selezionare Cancella accanto al percorso Appiattisci per. Vedere Rimozione di un percorso di appiattimento.
  3. Nella scheda Attributi selezionare questa opzione per visualizzare gli attributi o gli attributi di output in entrata. Gli attributi in entrata si collegano all'operatore sul lato sinistro. Gli attributi di output si collegano all'operatore sul lato destro e passano all'operatore successivo.

    È possibile selezionare singoli attributi o utilizzare le icone di filtro per filtrare l'elenco di attributi. Applica quindi regole di esclusione di massa agli attributi selezionati o filtrati.

    • Fare clic sull'icona del filtro nella colonna Nome per filtrare gli attributi in base a un pattern di nomi. Nel campo Filtro, immettere un'espressione regolare semplice. È possibile utilizzare i caratteri jolly ? e * nel pattern regex.
    • Fare clic sull'icona del filtro nella colonna Tipo per filtrare gli attributi in base a un tipo di dati. Utilizzare il menu per selezionare il tipo da utilizzare come filtro.
      Nota

      È possibile applicare un solo filtro pattern di nomi, ma più filtri di tipo alla volta. Ad esempio, se si applica un filtro pattern di nomi (*_CODE) e due filtri di tipo (numerico, varchar), gli attributi vengono filtrati in base al pattern di nomi *_CODE e al tipo numerico o varchar.
    • Utilizzare il menu Azioni per applicare regole di esclusione di massa agli attributi selezionati o agli attributi filtrati. Selezionare Escludi per selezione o Escludi per filtro applicato.
    • Fare clic su Visualizza regole per aprire il pannello Regole. È possibile visualizzare e gestire le regole applicate all'entità dati. Per impostazione predefinita, la prima regola nel pannello Regole include tutti gli elementi.

    Un tipo complesso viene visualizzato come ARRAY (data type), COMPOSITE o MAP (key type, value type). Vedere Tipi di dati gerarchici per comprendere gli elementi supportati per i tipi complessi.

  4. Nella scheda Dati visualizzare una campionatura dei dati, in base alla configurazione dell'operatore e alle regole applicate nella scheda Attributi.

    Il profilo dati non viene visualizzato per gli attributi dati complessi. Per gli attributi dati complessi, per visualizzare la gerarchia della struttura dati in una struttura semplificata, selezionare i dati complessi visualizzati. Ad esempio, [...] o {…}.

    È possibile applicare le trasformazioni a singoli attributi oppure eseguire una trasformazione di massa in un gruppo di attributi.

    Per le entità con tipi di dati gerarchici, vedere Tipi di dati gerarchici per comprendere gli elementi supportati.

  5. Nella scheda Convalida verificare la presenza di avvertenze o errori che potrebbero causare l'errore del flusso di dati.
Conversione di altri array in stringhe

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.

  1. Con l'operatore di appiattimento attivo sullo sfondo del flusso di dati, andare alla scheda Dettagli nel pannello Proprietà.
  2. Nella tabella degli attributi verificare che la struttura dei dati sia appiattita.

    Accanto a Espandi di si trova il percorso dell'attributo complesso selezionato per l'appiattimento. Ad esempio: FLATTEN_1.MYFILE_JSON.vehicle.maintenance.dealerdetails.servicestation2.dealeraddress

    L'icona delle azioni (tre punti) viene visualizzata per i nodi array disponibili nella struttura appiattita per la conversione.

  3. Se applicabile, selezionare l'icona delle azioni accanto a un nodo di array, quindi selezionare Converti array in stringa.

    Esempi di attributi convertiti:

    Tipo di array Attributo convertito

    Array di stringhe

    "goods": [
        "laptop",
        "charger",
        "chair"
      ]

    ["laptop","charger","chair"]

    Array di numeri

    "numbers": [
        234,
        455,
        98
      ]

    [234,455,98] 
Visualizzazione, modifica e rimozione delle conversioni degli array

La procedura riportata di seguito presuppone che sia stato selezionato un nodo di array da convertire in una stringa, se applicabile.

  1. Con l'operatore di appiattimento attivo sullo sfondo del flusso di dati, andare alla scheda Dettagli nel pannello Proprietà.
  2. Selezionare Visualizza conversioni di array.
  3. Nel pannello Conversioni di array visualizzato, esaminare gli attributi complessi che sono stati convertiti in una stringa.
  4. Per modificare il tipo di dati di una stringa di conversione, selezionare un'azione di aggiornamento dall'icona delle azioni. A seconda del tipo di dati, selezionare Aggiorna tipo di dati a CLOB o Aggiorna tipo di dati a VARCHAR.
  5. Per rimuovere le conversioni, eseguire una delle operazioni riportate di seguito.
    • Per rimuovere una singola conversione, selezionare la casella di controllo accanto a una conversione, quindi selezionare Rimuovi. In alternativa, è possibile selezionare Rimuovi dall'icona delle azioni per una conversione.
    • Per rimuovere tutte le conversioni, selezionare la casella di controllo nella parte superiore dell'elenco (accanto all'intestazione Conversioni array), quindi selezionare Rimuovi.

    Una conversione selezionata viene rimossa e l'attributo convertito in precedenza viene ripristinato nella struttura gerarchica originale e nel tipo di dati.

Rimozione di un percorso di appiattimento

Quando si configura un operatore di appiattimento in un flusso di dati, è possibile annullare l'appiattimento cancellando il percorso Flatten by.

  1. Con l'operatore di appiattimento attivo sullo sfondo del flusso di dati, andare alla scheda Dettagli nel pannello Proprietà.
  2. Al di sopra della tabella degli attributi, accanto al percorso Flatten by, selezionare Cancella.
  3. Nella finestra di dialogo Cancella appiattimento visualizzata, confermare il nome dell'attributo complesso che si desidera sbloccare, quindi selezionare Cancella per continuare.

    Rimuovendo l'appiattimento, viene ripristinata la struttura dati originale prima dell'appiattimento:

    • Se creato, gli attributi con il suffisso _INDEX vengono rimossi.
    • Se i nomi padre sono stati rimossi dai nomi nodo figlio, viene ripristinata la gerarchia di derivazione del nome padre-figlio.
    • Se alcuni array sono stati convertiti in stringhe, le conversioni di array vengono rimosse e gli attributi convertiti in precedenza vengono ripristinati alla struttura gerarchica originale e al tipo di dati.

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.

Aggiunta di un operatore di funzione tabella
  1. Nel pannello Operatori trascinare un operatore Funzione tabella sull'area di creazione.
  2. Con l'operatore attivo, nella scheda Dettagli del pannello Proprietà, immettere un nome nel campo Identificativo o lasciare il nome così com'è.
  3. Per Tipo di trasformazione, selezionare la funzione tabella che si desidera utilizzare per questo operatore.
  4. In Configura parametri, effettuare le operazioni riportate di seguito.
    1. Configurare la logica di base della funzione tabella specificando i dettagli della funzione. È possibile configurare solo tasti di input funzione specifici e i relativi valori, come illustrato nella scheda Dettagli per la funzione tabella selezionata.
    2. (Facoltativo) Per parametrizzare una coppia chiave-valore di input, fare clic su Assegna parametro per utilizzare i parametri. Vedere Assegnazione di un parametro.
    3. Dopo aver completato i campi di input, fare clic su Calcola forma di output.

      Integrazione dati genera i campi di output utilizzando i dettagli della logica di base e materializza le forme di input/output. Utilizzare la scheda Attributi per visualizzare le forme di input/output.

  5. Nella scheda Attributi selezionare questa opzione per visualizzare gli attributi o gli attributi di output in entrata. Gli attributi in entrata si collegano all'operatore sul lato sinistro. Gli attributi di output si collegano all'operatore sul lato destro e passano all'operatore successivo.

    È possibile selezionare singoli attributi o utilizzare le icone di filtro per filtrare l'elenco di attributi. Applica quindi regole di esclusione di massa agli attributi selezionati o filtrati.

    • Fare clic sull'icona del filtro nella colonna Nome per filtrare gli attributi in base a un pattern di nomi. Nel campo Filtro, immettere un'espressione regolare semplice. È possibile utilizzare i caratteri jolly ? e * nel pattern regex.
    • Fare clic sull'icona del filtro nella colonna Tipo per filtrare gli attributi in base a un tipo di dati. Utilizzare il menu per selezionare il tipo da utilizzare come filtro.
      Nota

      È possibile applicare un solo filtro pattern di nomi, ma più filtri di tipo alla volta. Ad esempio, per filtrare in base al pattern di nomi *_CODE e al tipo numerico o varchar, applicare un filtro di pattern di nomi (*_CODE) e due filtri di tipo (numerico, varchar).
    • Utilizzare il menu Azioni per applicare regole di esclusione di massa agli attributi selezionati o agli attributi filtrati. Selezionare Escludi per selezione o Escludi per filtro applicato.
    • Fare clic su Visualizza regole per aprire il pannello Regole. È possibile visualizzare e gestire le regole applicate all'entità dati. Per impostazione predefinita, la prima regola nel pannello Regole include tutti gli elementi.

    Un tipo complesso viene visualizzato come ARRAY (data type), COMPOSITE o MAP (key type, value type). Vedere Tipi di dati gerarchici per comprendere gli elementi supportati per i tipi complessi.

  6. Nella scheda Dati visualizzare una campionatura dei dati, in base alla configurazione dell'operatore e alle regole applicate nella scheda Attributi.

    Il profilo dati non viene visualizzato per gli attributi dati complessi. Per gli attributi dati complessi, per visualizzare la gerarchia della struttura dati in una struttura semplificata, selezionare i dati complessi visualizzati. Ad esempio, [...] o {…}.

    È possibile applicare le trasformazioni a singoli attributi oppure eseguire una trasformazione di massa in un gruppo di attributi.

    Per le entità con tipi di dati gerarchici, vedere Tipi di dati gerarchici per comprendere gli elementi supportati.

  7. Nella scheda Convalida verificare la presenza di avvertenze o errori che potrebbero causare l'errore del flusso di dati.
Informazioni sulle funzioni della tabella

Di seguito è riportato un elenco delle funzioni tabella incorporate supportate dall'operatore della funzione tabella.

Cache

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:

MEMORY_ONLY: consente di memorizzare come oggetti Java deserializzati nella JVM. Se la memoria è insufficiente, alcune partizioni RDD non vengono inserite nella cache, ma vengono ricalcolate come e quando necessario.

MEMORY_AND_DISK: consente di memorizzare come oggetti Java deserializzati nella JVM. Se la memoria è insufficiente, alcune partizioni RDD vengono memorizzate sul disco e lette dal disco come e quando necessario.

MEMORY_ONLY_SER: consente di memorizzare come oggetti Java deserializzati.

MEMORY_AND_DISK_SER: consente di memorizzare come oggetti Java deserializzati. Le partizioni che non corrispondono vengono memorizzate sul disco.

DISK_ONLY: memorizza le partizioni RDD solo su disco.

MEMORY_ONLY_2, MEMORY_AND_DISK_2, etc: simile ad altri livelli, ma ogni partizione viene replicata su due nodi cluster.

Analisi tabulazione incrociata

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, dove col1 è la prima colonna e col2 è la seconda prima della trasformazione. La prima colonna di ogni riga sono i valori distinti di col1.
  • 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 col1 costituiscono il primo elemento di ogni riga nel dataframe restituito.

col2

Nome della seconda colonna. Per informazioni sulle limitazioni, vedere la nota riportata di seguito.

Gli elementi distinti di co2 creano i nomi delle colonne nel dataframe restituito.

Nota

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  |
+----------+---+---+---+
Cubo

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: salary -> avg, age -> max

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      |
+----------+-------+-----------------+--------+
Generazione di dati

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:

  • CSV
  • JSON
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  |
+---+---+---+
Rimozione duplicati

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  |
+---+---+
Articoli frequenti

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 0.0001).

Ad esempio, 0.6 rappresenta il 60%. Cioè, un elemento che appare in almeno il 60% delle righe è un elemento frequente.

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]|
+------------------------+
Na Drop

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:

  • any: eliminare la riga che contiene valori nulli o NaN nel valore cols specificato.
  • all: eliminare la riga solo se ogni cols specificato è nullo o NaN per quella riga.

Il parametro how viene ignorato se si specifica il parametro minNonNulls.

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 minNonNulls sostituisce il parametro how.

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|
+---+--------+----+
Na Fill

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: name -> Tom indica la sostituzione di valori nulli nella colonna name con Tom.

Un valore di sostituzione viene convertito nel tipo di dati della colonna. Un valore sostitutivo deve essere del tipo seguente:

  • Numero intero
  • Long
  • float
  • Double
  • Stringa
  • Boolean
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 |
+---+-------+---+
Na Sostituisci

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 cols è *, la sostituzione viene applicata a tutte le colonne stringa, numeriche o booleane.

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: Alice -> Tom significa sostituire Alice con Tom.

La coppia chiave-valore di sostituzione deve avere lo stesso tipo. Sono supportati solo i seguenti tipi:

  • Boolean
  • Double
  • Stringa
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  |
+----+-------+----+
Ripartizione

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.

Rollup

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: salary -> avg, age -> max

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      |
+----------+-------+-----------------+--------+
Spark SQL

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: select * from table1

tableName

Nome di tabella o lista separata da virgole di nomi di tabella in base alla quale Spark crea tabelle temporanee.

Esempio: table1, table2

Campionamento stratificato

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 0.0 a 1.0.

Ad esempio, 0.1 restituisce il 10% delle righe e 1.0 restituisce il 100% delle righe.

Se non viene specificata una frazione, viene assunto zero.

sample_size

Se non si specifica fractions, specificare una parte del set di dati da campionare, da 0.0 a 1.0.

seed

Utilizzare qualsiasi numero casuale in seed per restituire lo stesso campione ogni volta, mantenendo il risultato coerente.

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|
+---+-----+
Riepilogo

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:

  • COUNT
  • MEAN
  • STDDEV
  • MIN
  • uno o più percentile approssimativi arbitrari specificati come percentuale (ad esempio, 75%)
  • MAX

Esempio: count, mean, stddev, min, 27%, 41%, 95%, max

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              |
+-------+----------+-----+------+----------------+----------------+