Tabelle

Le tabelle definiscono la struttura dei dati.

È possibile caricare nuovi dati nelle tabelle o dati di riferimento in una posizione esistente. È possibile definire autorizzazioni di controllo dell'accesso con filtro per le tabelle creando autorizzazioni per le tabelle.

Le tabelle possono essere esterne o gestite.

Tabelle esterne

Una tabella esterna definisce una struttura per i dati memorizzati in una posizione non gestita da Oracle AI Data Platform Workbench. Quando si crea una tabella esterna in AI Data Platform Workbench, il ciclo di vita dei metadati viene gestito da AI Data Platform Workbench. Quando si elimina una tabella esterna, viene eliminata solo la definizione della tabella. I dati a cui fa riferimento la tabella esterna non sono stati eliminati.

Assicurarsi che gli utenti dispongano dei criteri IAM seguenti necessari per creare tabelle esterne:

allow group <GroupName> to read buckets in compartment id <external-data-CompartmentId>
allow group <GroupName> to inspect objects in compartment id <external-data-CompartmentId>

Per le tabelle esterne sono necessari criteri IAM aggiuntivi. Per ulteriori informazioni, vedere Policy IAM per Oracle AI Data Platform Workbench.

Tabelle gestite

Una tabella gestita definisce una struttura per i dati memorizzati all'interno di AI Data Platform e accessibili solo agli utenti di AI Data Platform Workbench.

Quando si elimina una tabella gestita, la definizione della tabella e i dati della tabella vengono eliminati.

Formati tabella supportati

Formato Descrizione Utilizzo
Valori CSV (comma-separated-values) I dati vengono memorizzati come file di testo con un formato file basato su riga specificato per strutturare i dati. In genere, la prima riga del file è una riga di intestazione che contiene i nomi delle colonne per i dati. Utilizzato per scambiare dati tabulari tra sistemi. Ogni riga del file è una riga di una tabella.
JavaScript Object Notation (JSON) I dati vengono memorizzati in un formato standard basato su testo per rappresentare i dati strutturati in base alla sintassi dell'oggetto JavaScript. JSON supporta liste di oggetti o strutture gerarchiche. Utilizzato nelle applicazioni di flusso. JSON semplifica lo storage dei dati correlati con relazioni complesse in un singolo documento ed evita la conversione caotica degli elenchi in un modello di dati relazionale. Si noti che JSON non è frazionabile.
Avro I dati vengono memorizzati in un formato binario basato su righe mentre lo schema viene memorizzato in formato JSON per ridurre al minimo le dimensioni dei file e massimizzare l'efficienza. Avro ha un supporto affidabile per l'evoluzione dello schema gestendo i campi aggiunti, mancanti e modificati. Ciò consente al vecchio software di leggere nuovi dati e al nuovo software di leggere i vecchi dati. Conosciuto anche come sistema di serializzazione dei dati. Utilizzato per l'archiviazione dei dati in quanto i file avro sono divisibili e comprimibili. Lo storage serializzato basato su righe è ideale per transazioni di scrittura complesse, come l'inserimento di dati in AI Data Platform. Avro è anche una buona scelta quando l'evoluzione dello schema è critica durante le scritture ad alta velocità.
Parquet I dati vengono memorizzati in un formato di dati colonnari ed è altamente comprimibile e divisibile. Parquet è ottimizzato per il paradigma Write Once Read Many (WORM). Scrive lentamente ma legge incredibilmente rapidamente, soprattutto quando si accede solo a un sottoinsieme di colonne. Utilizzato per risolvere i problemi dei Big Data poiché gli algoritmi di compressione funzionano meglio con il formato dei dati colonnari. È possibile memorizzare i Big Data in vari formati, ad esempio immagini, video, documenti e tabelle di dati strutturati. Parquet è una buona scelta per carichi di lavoro pesanti durante la lettura di porzioni di dati. Ad esempio, quando il set di dati contiene molte colonne, ma si desidera accedere solo a un subset di colonne. Ideale quando si è dipendenti da Spark o quando si desidera che più servizi accedano agli stessi dati memorizzati nello storage degli oggetti.
ORC (Optimized Row Columnar) I dati vengono memorizzati in raccolte di righe in un singolo file in formato colonnare. Utilizzato per l'elaborazione parallela delle raccolte di righe in un cluster. Ideale quando le transazioni di lettura sono più di transazioni di scrittura o quando la compressione è la priorità.
Delta I dati vengono memorizzati in un formato a colonne che estende i file di dati Parquet con un log delle transazioni basato su file JSON per le transazioni ACID e la gestione scalabile dei metadati. Utilizzato per il supporto delle transazioni.

Tipi di dati supportati

Tipo di dati Descrizione
Tipo di byte Rappresenta i numeri interi firmati a 1 byte. L'intervallo di numeri è compreso tra -128 e 127.
Tipo breve Rappresenta i numeri interi firmati a 2 byte. L'intervallo di numeri è compreso tra -32768 e 32767.
Tipo intero Rappresenta i numeri interi firmati a 4 byte. L'intervallo di numeri è compreso tra -2147483648 e 2147483647.
LongType Rappresenta numeri interi firmati a 8 byte. L'intervallo dei numeri è compreso tra -9223372036854775808 e 9223372036854775807.
Tipo float Rappresenta i numeri a virgola mobile a precisione singola a 4 byte.
Doppio tipo Rappresenta i numeri a virgola mobile a doppia precisione a 8 byte.
Tipo decimale Rappresenta numeri decimali firmati con precisione arbitraria. Sostenuto internamente da java.math.BigDecimal. Un valore BigDecimal è costituito da un numero intero di precisione arbitrario senza scala e da una scala intera a 32 bit.
Tipo stringa Rappresenta i valori della stringa di caratteri.
VarcharType(lunghezza) Variante di StringType con limite di lunghezza. La scrittura dei dati non riuscirà se la stringa di input supera il limite di lunghezza.
CharType(lunghezza) Una variante di VarcharType(lunghezza) che è lunghezza fissa. La colonna di lettura di tipo CharType(n) restituisce sempre i valori stringa di lunghezza n. Il confronto delle colonne del tipo di carattere comprimerà la lunghezza più breve a quella più lunga.
Tipo binario Rappresenta i valori della sequenza in byte.
Tipo booleano Rappresenta i valori booleani.
Tipo data Rappresenta i valori dei campi anno, mese e giorno, senza un fuso orario.
Tipo indicatore orario Indicatore orario con il fuso orario locale (TIMESTAMP_LTZ). Rappresenta valori che comprendono i valori dei campi anno, mese, giorno, ora, minuto e secondo, con il fuso orario locale della sessione. Il valore dell'indicatore orario rappresenta un point in time assoluto.
Tipo indicatore orarioNTZ Indicatore orario senza fuso orario (TIMESTAMP_NTZ). Rappresenta i valori dei campi anno, mese, giorno, ora, minuto e secondo. Tutte le operazioni vengono eseguite senza tenere conto del fuso orario.
YearMonthIntervalType(startField, endField) Rappresenta un intervallo di un anno-mese costituito da un sottoinsieme contiguo di MESE, mesi entro gli anni [0..11] e ANNO, anni nell'intervallo [0..178956970].
DayTimeIntervalType(startField, endField) Rappresenta un intervallo diurno costituito da un sottoinsieme contiguo di SECONDO, secondi in minuti ed eventualmente frazioni di secondo [0..59.999999], MINUTO, minuti in ore [0..59], ORA, ore in giorni [0..23] e GIORNO, giorni nell'intervallo [0..106751991].
ArrayType(elementType, containsNull) Rappresenta i valori che comprendono una sequenza di elementi con il tipo di elementType. containsNull viene utilizzato per indicare se gli elementi di un valore ArrayType possono avere valori nulli.
MapType(keyType, valueType, valueContainsNull) Rappresenta i valori che comprendono un set di coppie chiave-valore. Il tipo di dati delle chiavi è descritto da keyType e il tipo di dati dei valori è descritto da valueType. Per un valore MapType, le chiavi non possono avere valori nulli. valueContainsNull viene utilizzato per indicare se i valori di un valore MapType possono avere valori nulli.
StructType(campi) Rappresenta i valori con la struttura descritta da una sequenza di StructFields (campi).
StructField(nome, dataType, annullabile) Rappresenta un campo in StructType. Il nome di un campo è indicato dal nome. Il tipo di dati di un campo è indicato da dataType. Nullable viene utilizzato per indicare se i valori di questi campi possono avere valori nulli.

Limitazioni

Le seguenti limitazioni si applicano alle tabelle di Oracle AI Data Platform:

  • Non è possibile definire una tabella esterna in file di dati o directory all'interno di un volume.
  • Impossibile definire una tabella esterna in un bucket e/o la relativa directory già utilizzata per un'altra tabella esterna o volume esterno
  • Impossibile visualizzare/elencare le viste nel catalogo principale.

Evoluzione degli schemi

L'evoluzione dello schema in Oracle AI Data Platform Workbench consente agli utenti con le autorizzazioni necessarie per aggiornare una tabella gestita utilizzando SQL in un notebook.

Ciò è utile quando una definizione di tabella viene modificata nel tempo per supportare nuove colonne, colonne rimosse, colonne rinominate, modifiche alle partizioni o ridenominazioni di tabelle senza ricreare il set di dati da zero. I formati supportati sono Parquet, Avro e Delta.

Operazioni supportate

Per le tabelle gestite sono state analizzate le seguenti operazioni di evoluzione dello schema:
  • Rinomina tabella: supportato per Delta, Parquet e Avro
  • Aggiungi colonne: supportato per Delta, Parquet e Avro
  • Elimina colonne: supportato per Delta; non supportato per Parquet e Avro
  • Modifica o rinomina colonne: supportato per Delta; non supportato per Parquet e Avro
  • Sostituisci colonne: supportato solo per Delta
  • Aggiungi partizioni: supportato per Parquet e Avro tramite DDL. Per Delta, la gestione delle partizioni è supportata durante l'inserimento dei dati anziché tramite DDL.
  • Elimina partizioni: supportato per Parquet e Avro; per Delta, le partizioni vengono rimosse eliminando i dati ed eseguendo il vuoto anziché tramite DDL diretto.
  • Modifica tipo di dati: non supportato per Parquet o Avro; non supportato per Delta tramite DDL diretto e potrebbe richiedere una soluzione alternativa basata su CTAS o schema di sovrascrittura.

Creare una tabella gestita

È possibile creare tabelle per lo schema gestito.

  1. Passare allo schema per il quale si desidera creare una tabella.
  2. Selezionare la scheda Tabelle.
  3. Fare clic su Icona Crea tabella Crea tabella.

    Crea barra delle tabelle con il tipo di tabella Gestito selezionato

  4. Selezionare Gestito per il tipo di tabella.
  5. Selezionare il formato della tabella nel formato della tabella gestita.
  6. Trascinare e rilasciare un file con i dati della tabella oppure fare clic per individuare la posizione del file.
  7. Fornire il nome e la descrizione della tabella.
  8. Opzionale: per aggiungere partizioni, espandere chiavi di partizione (opzionale). Fare clic su Aggiungi partizione e selezionare una colonna di dati.
  9. Facoltativo: per aggiungere le proprietà della tabella ai metadati del Data Catalog, espandere Proprietà della tabella (facoltativo). Fare clic su Aggiungi proprietà e fornire la proprietà e il relativo valore.
  10. Fare clic su Crea.

Crea tabella esterna

È possibile creare una tabella esterna con dati nello storage degli oggetti OCI.

  1. Passare allo schema per il quale si desidera creare una tabella.
  2. Selezionare la scheda Tabelle.
  3. Fare clic su Icona Crea tabella Crea tabella.

    Crea pagina tabella aperta con tipo di tabella Esterno selezionato

  4. Selezionare Esterno per il tipo di tabella.
  5. Selezionare il compartimento, il bucket e la cartella dallo storage degli oggetti OCI in cui vengono memorizzati i dati. Gli oggetti che è possibile selezionare si basano sulle autorizzazioni IAM dell'utente collegato.
  6. Fornire un nome e un'indicazione per la tabella.
  7. Facoltativo: per aggiungere le proprietà della tabella ai metadati del Data Catalog, espandere Proprietà tabella (facoltativo). Fare clic su Aggiungi proprietà e fornire la proprietà e il relativo valore.
  8. Fare clic su Crea.

Modifica di una tabella

È possibile modificare i dettagli delle tabelle gestite.

Nota

Le modifiche apportate alle tabelle catalogo esterne in Oracle AI Data Platform Workbench non vengono sottoposte a push nel catalogo remoto.
  1. Passare allo schema.
  2. Selezionare la scheda Tabelle.
  3. Avanti alla tabella che si desidera modificare, fare clic su Icona a tre punti Azioni Azioni.
    • Fare clic su Rinomina per modificare il nome della tabella. Immettere un nuovo nome, quindi premere Invio.
    • Fare clic su Modifica descrizione per modificare la descrizione della tabella. Fornire la nuova descrizione e fare clic su Salva.

Visualizza dettagli tabella

È possibile visualizzare i dettagli delle tabelle nello schema.

  1. Passare allo schema. Fare clic sulla scheda Tabelle.
  2. Fare clic sul nome del volume per il quale si desidera visualizzare i dettagli. È inoltre possibile fare clic su Icona a tre punti Azioni Azioni accanto al volume, quindi fare clic su Visualizza.
  3. Fare clic sulla scheda Dettagli.

Elimina una tabella

È possibile eliminare le tabelle dallo schema gestito.

  1. Passare allo schema da cui si desidera eliminare la tabella.
  2. Fare clic sulla scheda Tabelle.
  3. Avanti alla tabella che si desidera eliminare, fare clic su Icona a tre punti Azioni Azioni e fare clic su Elimina.
  4. Fare clic su Elimina.