Raccolta dei file di storage degli oggetti come entità di dati logiche
In genere, il data lake include molti file che rappresentano un singolo data set. Le conversioni di denominazione dei file indicano che più file fanno parte di una singola entità di dati logica.
È possibile raggruppare più file di storage degli oggetti in entità di dati logiche nel Data Catalog utilizzando i modelli di nomi file . Un'entità dati logica è come qualsiasi altra entità dati e può essere utilizzata per la ricerca e la ricerca automatica. Utilizzando le entità di dati logiche, puoi organizzare il contenuto del data lake in modo significativo e impedire l'esplosione di entità e attributi di dati nel Data Catalog.
Task standard eseguiti durante la raccolta dei file di storage degli oggetti come entità di dati logiche:
- Creare un pattern.
- Assegnare il pattern a un asset dati di storage degli oggetti.
- Raccogliere l'asset dati.
- Visualizza le entità di dati logiche raccolte.
Descrizione delle entità di dati logiche
Considerare il seguente set di file:
myserv/20191205_yny_myIOTSensor.json
myserv/20191105_yny_myIOTSensor.json
myserv/20191005_yny_myIOTSensor.json
myserv/20190905_yny_myIOTSensor.json
myserv/20191005_hyd_my2ndIOTSensor.json
myserv/20190905_hyd_my2ndIOTSensor.json
myserv/20191005_bom_my3rdIOTSensor.json
myserv/20190905_bom_my3rdIOTSensor.json
myserv/somerandomfile_2019AUG05.json
Se si raccolgono questi file nell'origine dati dello storage degli oggetti Oracle senza creare modelli di nomi file , Data Catalog crea nove singole entità dati nel Data Catalog. Immagina questa situazione con centinaia di file nell'origine dati che generano centinaia di entità dati nel tuo Data Catalog.
myserv/20191205_yny_myIOTSensor.json
myserv/20191105_yny_myIOTSensor.json
myserv/20191005_yny_myIOTSensor.json
myserv/20190905_yny_myIOTSensor.json
myserv/20191005_hyd_my2ndIOTSensor.json
myserv/20190905_hyd_my2ndIOTSensor.json
myserv/20191005_bom_my3rdIOTSensor.json
myserv/20190905_bom_my3rdIOTSensor.json
myserv/somerandomfile_2019AUG05.json
Introduzione alle espressioni
In Data Catalog, un pattern di nomi file viene definito mediante espressioni.
Un'espressione può avere uno o più componenti separati mediante un delimitatore. Ogni componente specifica una regola di corrispondenza per il pattern. I pattern di nomi file vengono creati utilizzando espressioni regolari Java. È possibile specificare l'espressione regolare da utilizzare per raggruppare i file in entità di dati logiche richieste.
È possibile specificare i qualificatori utilizzati per l'analisi dell'espressione. È possibile utilizzare i seguenti qualificatori:
bucketName
: utilizzare questo qualificatore per specificare che il nome del bucket deve essere derivato dal percorso che corrisponde all'espressione specificata. Il qualificatorebucketName
viene utilizzato una sola volta nell'espressione e sempre come primo componente dell'espressione. Il valore del qualificatorebucketName
può essere un testo statico o un'espressione.logicalEntity
: utilizzare questo qualificatore per specificare che il nome dell'entità dati logica deve essere derivato dal percorso che corrisponde all'espressione specificata. È possibile utilizzarelogicalEntity
più volte in un'espressione. I valori del qualificatorelogicalEntity
possono essere costituiti da testo o espressioni statiche.
Considerare i seguenti nomi di file:
bling_metering/1970120520_yny_hourly_region_res_delayed.json
bling_metering/1973110523_yny_hourly_region_res_delayed.json
bling_metering/1988101605_hyd_daily_region_res_delayed.json
bling_metering/1991042302_yny_hourly_region_res_delayed.json
bling_metering/2019073019_zrh_daily_region_res_delayed.json
bling_metering/2019073020_zrh_monthly_region_res_delayed.json
bling_metering/some_random_file_123.json
Per derivare entità di dati logiche in base alla frequenza (oraria, giornaliera, mensile) menzionata nel nome file, è possibile utilizzare la seguente espressione di pattern:
{bucketName:bling_metering}/[0-9]*_[a-z]*_{logicalEntity:[a-z]*}_.*.json
Questa espressione utilizza i qualificatori bucketName
e logicalEntity
. In questo esempio, [0-9]*
corrisponde a un numero qualsiasi; [a-z]*
corrisponde a una lettera minuscola e .*
corrisponde a un carattere qualsiasi. L'espressione restituisce le seguenti entità di dati logiche:
- bling_metering_monthly
bling_metering/2019073020_zrh_monthly_region_res_delayed.json
- bling_metering_hourly
bling_metering/1970120520_yny_hourly_region_res_delayed.json bling_metering/1973110523_yny_hourly_region_res_delayed.json bling_metering/1991042302_yny_hourly_region_res_delayed.json
- bling_metering_daily
bling_metering/1988101605_hyd_daily_region_res_delayed.json bling_metering/2019073019_zrh_daily_region_res_delayed.json
Non corrispondenti
bling_metering/some_random_file_123.json
Per derivare entità di dati logiche in base alle aree (yny, hyd, zrh) menzionate nel nome file, è possibile utilizzare una delle seguenti espressioni di pattern:
{bucketName:bling_metering}/[0-9]*_{logicalEntity:yny|hyd|zrh}_[a-z]*_region_res_delayed.json
{bucketName:bling_metering}/[0-9]*_{logicalEntity:[a-z]*}_[a-z]*_.*.json
Questa espressione restituisce le seguenti entità di dati logiche:
- bling_metering_zrh
bling_metering/2019073020_zrh_monthly_region_res_delayed.json bling_metering/2019073019_zrh_daily_region_res_delayed.json
bling_metering_yny
bling_metering/1970120520_yny_hourly_region_res_delayed.json bling_metering/1973110523_yny_hourly_region_res_delayed.json bling_metering/1991042302_yny_hourly_region_res_delayed.json
- bling_metering_hyd
bling_metering/1988101605_hyd_daily_region_res_delayed.json
Non corrispondenti
bling_metering/some_random_file_123.json
Per derivare entità di dati logiche in base alle aree e alla frequenza (oraria, giornaliera, mensile) menzionate nel nome file, è possibile utilizzare la seguente espressione di pattern:
{bucketName:bling_metering}/[0-9]*_{logicalEntity:[a-z]*}_{logicalEntity:[a-z]*}_region_res_delayed.json
L'espressione precedente utilizza il valore bucketName
e due qualificatori logicalEntity
. L'espressione restituisce le seguenti entità di dati logiche:
- bling_metering_zrh_monthly
bling_metering/2019073020_zrh_monthly_region_res_delayed.json
- bling_metering_hyd_daily
bling_metering/1988101605_hyd_daily_region_res_delayed.json
- bling_metering_zrh_daily
bling_metering/2019073019_zrh_daily_region_res_delayed.json
- bling_metering_yny_hourly
bling_metering/1970120520_yny_hourly_region_res_delayed.json bling_metering/1973110523_yny_hourly_region_res_delayed.json bling_metering/1991042302_yny_hourly_region_res_delayed.json
Non corrispondenti
bling_metering/some_random_file_123.json
Se non viene specificato alcun qualificatore logicalEntity
, come nome dell'entità dati logica viene utilizzato il nome del pattern di nomi file. Ad esempio, si consideri l'espressione seguente per il pattern di nomi file bling pattern
:
{bucketName:bling_metering}/[0-9]*_[a-z]*_[a-z]*_.*.json
L'espressione precedente utilizza il qualificatore bucketName
, ma nessun qualificatore logicalEntity
. L'espressione restituisce le seguenti entità di dati logiche:
- pattern di bling
bling_metering/2019073020_zrh_monthly_region_res_delayed.json bling_metering/1970120520_yny_hourly_region_res_delayed.json bling_metering/1973110523_yny_hourly_region_res_delayed.json bling_metering/1991042302_yny_hourly_region_res_delayed.json bling_metering/1988101605_hyd_daily_region_res_delayed.json bling_metering/2019073019_zrh_daily_region_res_delayed.json
Non corrispondenti
bling_metering/some_random_file_123.json
Quando si esegue il test di questa espressione senza qualificatore
logicalEntity
, nell'entità dati logica risultante l'espressione viene visualizzata come nome dell'entità logica. Durante la raccolta, tuttavia, il nome del pattern di nomi file viene utilizzato come nome dell'entità dati logica.