論理データ・エンティティとしてのオブジェクト・ストレージ・ファイルの収集

データ・レイクには通常、単一のデータ・セットを表す多くのファイルがあります。ファイル・ネーミング変換は、複数のファイルが単一の論理データ・エンティティの一部であることを示します。

ファイル名パターンを使用して、複数のオブジェクト・ストレージ・ファイルをデータ・カタログ内の論理データ・エンティティにグループ化できます。論理データ・エンティティは、他のデータ・エンティティと同様に、検索および検出に使用できます。論理データ・エンティティを使用すると、データ・レイクの内容を意味のある方法で編成し、データ・カタログ内のデータ・エンティティおよび属性の展開を防止できます。

オブジェクト・ストレージ・ファイルを論理データ・エンティティとして収集する際に実行する一般的なタスクは、次のとおりです:

  1. パターンを作成します。
  2. オブジェクト・ストレージのデータ・アセットにパターンを割り当てます。
  3. データ・アセットを収集します。
  4. 収集した論理データ・エンティティを表示します。

論理データ・エンティティの理解

次の一連のファイルについて考えてみます:

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
1つのlogicalEntity修飾子を持つ式

ファイル名に示されている頻度(時間、日、月)に基づいて論理データ・エンティティを導出するには、次のパターン式を使用できます:

{bucketName:bling_metering}/[0-9]*_[a-z]*_{logicalEntity:[a-z]*}_.*.json

この式では、bucketNameおよびlogicalEntity修飾子を使用します。この例では、[0-9]*は任意の数字に一致し、[a-z]*は任意の小文字のアルファベットに一致し、.*は任意の文字に一致します。この式の結果、次の論理データ・エンティティが生成されます:

  1. bling_metering_monthly
    bling_metering/2019073020_zrh_monthly_region_res_delayed.json
  2. 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
  3. 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

この式の結果、次の論理データ・エンティティが生成されます:

  1. bling_metering_zrh
    bling_metering/2019073020_zrh_monthly_region_res_delayed.json
    bling_metering/2019073019_zrh_daily_region_res_delayed.json
  2. 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
  3. bling_metering_hyd
    bling_metering/1988101605_hyd_daily_region_res_delayed.json
    

一致しません

bling_metering/some_random_file_123.json
複数のlogicalEntity修飾子を持つ式

ファイル名に指定されているリージョンおよび頻度(時間、日、月)に基づいて論理データ・エンティティを導出するには、次のパターン式を使用できます:

{bucketName:bling_metering}/[0-9]*_{logicalEntity:[a-z]*}_{logicalEntity:[a-z]*}_region_res_delayed.json

前述の式では、bucketNameおよび2つのlogicalEntity修飾子が使用されています。この式の結果、次の論理データ・エンティティが生成されます:

  1. bling_metering_zrh_monthly
    bling_metering/2019073020_zrh_monthly_region_res_delayed.json
  2. bling_metering_hyd_daily
    bling_metering/1988101605_hyd_daily_region_res_delayed.json
  3. bling_metering_zrh_daily
    bling_metering/2019073019_zrh_daily_region_res_delayed.json
  4. 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修飾子のない式

logicalEntity修飾子が指定されていない場合は、ファイル名パターン名が論理データ・エンティティ名として使用されます。たとえば、ファイル名パターンbling patternの次の式を考えてみます:

{bucketName:bling_metering}/[0-9]*_[a-z]*_[a-z]*_.*.json

前述の式ではbucketName修飾子を使用していますが、logicalEntity修飾子は使用していません。この式の結果、次の論理データ・エンティティが生成されます:

  1. 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修飾子を使用せずにこの式をテストすると、結果の論理データ・エンティティでは、式が論理エンティティ名として表示されます。ただし、収集時には、ファイル名パターンの名前が論理データ・エンティティ名として使用されます。