論理データ・エンティティとしてのオブジェクト・ストレージ・ファイルの収集
データ・レイクには通常、単一のデータ・セットを表す多くのファイルがあります。ファイル・ネーミング変換は、複数のファイルが単一の論理データ・エンティティの一部であることを示します。
ファイル名パターンを使用して、複数のオブジェクト・ストレージ・ファイルをデータ・カタログ内の論理データ・エンティティにグループ化できます。論理データ・エンティティは、他のデータ・エンティティと同様に、検索および検出に使用できます。論理データ・エンティティを使用すると、データ・レイクの内容を意味のある方法で編成し、データ・カタログ内のデータ・エンティティおよび属性の展開を防止できます。
オブジェクト・ストレージ・ファイルを論理データ・エンティティとして収集する際に実行する一般的なタスクは、次のとおりです:
論理データ・エンティティの理解
次の一連のファイルについて考えてみます:
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
ファイル名パターンを作成せずにOracle Object Storageデータ・ソースでこれらのファイルを収集すると、データ・カタログに9つの個別のデータ・エンティティが作成されます。データ・ソース内の数百のファイルによってデータ・カタログ内に数百のデータ・エンティティが生成されるこの状況を考えてみます。
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
式の理解
データ・カタログでは、ファイル名パターンは式を使用して定義されます。
式には、デリミタを使用して区切る1つ以上のコンポーネントを含めることができます。各コンポーネントは、パターンの一致ルールを指定します。ファイル名パターンは、Java正規表現を使用して作成されます。ファイルを必要な論理データ・エンティティにグループ化するために使用する正規表現を指定します。
式の解析時に使用される修飾子を指定できます。次の修飾子を使用できます:
bucketName
: この修飾子を使用すると、指定した式に一致するパスからバケット名を導出するように指定できます。bucketName
修飾子は、式で一度のみ使用され、常に式の最初のコンポーネントとして使用されます。bucketName
修飾子の値には、静的テキストまたは式を指定できます。logicalEntity
: この修飾子を使用すると、指定した式に一致するパスから論理データ・エンティティ名を導出するように指定できます。logicalEntity
は、式で複数回使用できます。logicalEntity
修飾子の値は、静的テキストまたは式で構成できます。
次のファイル名を考えてみます:
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
ファイル名に示されている頻度(時間、日、月)に基づいて論理データ・エンティティを導出するには、次のパターン式を使用できます:
{bucketName:bling_metering}/[0-9]*_[a-z]*_{logicalEntity:[a-z]*}_.*.json
この式では、bucketName
およびlogicalEntity
修飾子を使用します。この例では、[0-9]*
は任意の数字に一致し、[a-z]*
は任意の小文字のアルファベットに一致し、.*
は任意の文字に一致します。この式の結果、次の論理データ・エンティティが生成されます:
- 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
一致しません
bling_metering/some_random_file_123.json
ファイル名に指定されているリージョン(yny、hyd、zrh)に基づいて論理データ・エンティティを導出するには、次のいずれかのパターン式を使用できます:
{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
この式の結果、次の論理データ・エンティティが生成されます:
- 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
一致しません
bling_metering/some_random_file_123.json
ファイル名に指定されているリージョンおよび頻度(時間、日、月)に基づいて論理データ・エンティティを導出するには、次のパターン式を使用できます:
{bucketName:bling_metering}/[0-9]*_{logicalEntity:[a-z]*}_{logicalEntity:[a-z]*}_region_res_delayed.json
前述の式では、bucketName
および2つのlogicalEntity
修飾子が使用されています。この式の結果、次の論理データ・エンティティが生成されます:
- 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
一致しません
bling_metering/some_random_file_123.json
logicalEntity
修飾子が指定されていない場合は、ファイル名パターン名が論理データ・エンティティ名として使用されます。たとえば、ファイル名パターンbling pattern
の次の式を考えてみます:
{bucketName:bling_metering}/[0-9]*_[a-z]*_[a-z]*_.*.json
前述の式ではbucketName
修飾子を使用していますが、logicalEntity
修飾子は使用していません。この式の結果、次の論理データ・エンティティが生成されます:
- bling pattern
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
一致しません
bling_metering/some_random_file_123.json
logicalEntity
修飾子を使用せずにこの式をテストすると、結果の論理データ・エンティティでは、式が論理エンティティ名として表示されます。ただし、収集時には、ファイル名パターンの名前が論理データ・エンティティ名として使用されます。