機械翻訳について

データ・カタログを使用した外部データの問合せ

Oracle Cloud Infrastructure 「データ・カタログ」は、データの検出およびデータ・ガバナンスのサポートに役立つOracle Cloudのメタデータ管理サービスです。 アセットのインベントリ、ビジネス用語集、およびデータ・レイクの共通メタストアを提供します。

Autonomous Databaseでは、このメタデータを活用して、データ・レイク・オブジェクト・ストアへのアクセスの管理を大幅に簡素化できます。 データ・レイクにアクセスするために外部表を手動で定義するかわりに、自動的に定義および管理される外部表を使用します。 これらの表は、「データ・カタログ」の変更によって最新の状態に保たれるAutonomous Database保護スキーマにあります。

「データ・カタログ」の詳細は、「データ・カタログ」ドキュメントを参照してください。

データ・カタログの問合せについて

Autonomous Databaseは、「データ・カタログ」メタデータと同期することで、「データ・カタログ」で収集される論理エンティティごとに外部表を自動的に作成します。 これらの外部表は、メタデータ同期プロセスによって完全に管理されるデータベース・スキーマで定義されます。 ユーザーは、外部データ・ソースのスキーマ(列およびデータ型)を手動で導出したり、外部表を手動で作成する必要なく、データを即時に問い合せることができます。

同期は動的で、基礎となるデータの変更に関してAutonomous Databaseを最新に維持し、数百から数千の表を自動的に維持するため、管理コストを削減します。 また、複数のAutonomous Databaseインスタンスで同じ「データ・カタログ」を共有できるため、管理コストが削減され、ビジネス定義の共通セットが提供されます。

データ・カタログのフォルダ/バケットは、Autonomous Databaseスキーマと同期するコンテナです。 これらのフォルダ/バケット内の論理エンティティは、Autonomous Database外部表にマップされます。 これらのスキーマおよび外部表は、同期プロセスを介して自動的に生成され、維持されます:

  • フォルダ/バケットは、組織のみを目的としたデータベース・スキーマにマップされます。
  • 組織は、データ・レイクと整合性が保たれ、異なるパスを経由してデータにアクセスする際の混乱を最小限に抑えることを目的としています。
  • データ・カタログは、スキーマ内に含まれる表の真のソースです。 「データ・カタログ」で行われた変更は、後続の同期時にスキーマ表を更新します。

この機能を使用するには、データベース「データ・カタログ」管理者が「データ・カタログ」インスタンスへの接続を開始し、同期するデータ・アセットと論理エンティティを選択し、同期を実行します。 同期プロセスでは、選択した「データ・カタログ」収集されたデータ・アセットおよび論理エンティティに基づいてスキーマおよび外部表が作成されます。 外部表が作成されるとすぐに、データ・アナリストは、外部データ・ソースのスキーマを手動で導出して外部表を作成することなく、データの問合せを開始できます。

ノート:

DBMS_DCATパッケージは、「データ・カタログ」オブジェクト・ストア・データ・アセットの問合せに必要なタスクの実行に使用できます。 「DBMS_DCATパッケージ」を参照してください。

データ・カタログの問合せに関連する概念

データ・カタログを使用した問合せには、次の概念を理解する必要があります。

データ・カタログ

「データ・カタログ」は、Autonomous Databaseを使用して問い合せるオブジェクト・ストアのデータ・ソースを指すデータ・アセットを収集します。 「データ・カタログ」から、収集時のデータの編成方法を指定し、様々なファイル編成パターンをサポートできます。 「データ・カタログ」収集プロセスの一部として、アセット内で管理するバケットおよびファイルを選択できます。 詳細は、「データ・カタログの概要」を参照してください。

オブジェクト・ストア

オブジェクト・ストアには、様々なオブジェクトを含むバケットがあります。 これらのバケットに含まれる一般的なタイプのオブジェクトには、次のようなものがあります: CSV、parquet、avro、jsonおよびORCファイル。 バケットには通常、含まれているオブジェクトへの構造または設計パターンがあります。 データを構造化する方法と、これらのパターンを解釈する様々な方法があります。

たとえば、一般的な設計パターンでは、表を表す最上位フォルダを使用します。 特定のフォルダ内のファイルは同じスキーマを共有し、その表のデータを含みます。 サブフォルダは、表パーティションを表すためによく使用されます(たとえば、毎日のサブフォルダ)。 「データ・カタログ」は、各最上位フォルダを論理エンティティとして参照し、この論理エンティティはAutonomous Database外部表にマップします。

接続

接続は、「データ・カタログ」インスタンスへのAutonomous Database接続です。 Autonomous Databaseインスタンスごとに、複数の「データ・カタログ」インスタンスに接続できます。 Autonomous Database資格証明には、オブジェクト・ストレージから収集された「データ・カタログ」アセットにアクセスする権限が必要です。

収集

オブジェクト・ストレージをスキャンし、データ・セットから論理エンティティを生成する「データ・カタログ」プロセス。

データ・アセット

「データ・カタログ」のデータ・アセットは、データベース、Oracle Object Storage、Kafkaなどを含むデータ・ソースを表します。 Autonomous Databaseは、メタデータの同期にOracle Object Storageアセットを利用します。

データ・エンティティ

「データ・カタログ」のデータ・エンティティは、データベース表またはビューなどのデータのコレクション、または単一のファイルであり、通常、そのデータを記述する多くの属性を持ちます。

論理エンティティ

Data Lakesでは、通常、多数のファイルが1つの論理エンティティで構成されます。 たとえば、毎日クリック・ストリーム・ファイルがあり、これらのファイルは同じスキーマとファイル・タイプを共有できます。

「データ・カタログ」論理エンティティは、データ・アセットに作成および割り当てられたファイル名パターンを適用して、収集中に導出されるオブジェクト・ストレージ・ファイルのグループです。

データ・オブジェクト

「データ・カタログ」のデータ・オブジェクトは、データ・アセットおよびデータ・エンティティを表します。

ファイル名パターン

データ・レイクでは、データを様々な方法で編成できます。 通常、フォルダは同じスキーマとタイプのファイルをキャプチャします。 データの編成方法を「データ・カタログ」に登録する必要があります。 ファイル名パターンは、データの編成方法を識別するために使用されます。 「データ・カタログ」では、正規表現を使用してファイル名パターンを定義できます。 「データ・カタログ」が、割り当てられたファイル名パターンでデータ・アセットを収集すると、ファイル名パターンに基づいて論理エンティティが作成されます。 これらのパターンを定義してデータ・アセットに割り当てることによって、ファイル名パターンに基づいて複数のファイルを論理エンティティとしてグループ化できます。

同期 (Sync)

Autonomous Database「データ・カタログ」との同期を実行し、基礎となるデータの変更に関してデータベースを最新の状態に保ちます。 同期は手動またはスケジュールで実行できます。

同期プロセスでは、「データ・カタログ」データ・アセットおよび論理エンティティに基づいてスキーマおよび外部表が作成されます。 これらのスキーマは保護されており、メタデータは「データ・カタログ」によって管理されます。 メタデータを変更する場合は、「データ・カタログ」で変更を行う必要があります。 Autonomous Databaseスキーマには、次の同期の実行後に変更が反映されます。 詳細は、「同期マッピング」を参照してください。

同期マッピング

同期プロセスでは、「データ・カタログ」データ・アセット、フォルダ、論理エンティティ、属性および関連するカスタム・オーバーライドに基づいて、Autonomous Databaseスキーマおよび外部表を作成および更新します。

データ・カタログ Autonomous Database マッピングの説明

データ・アセットとフォルダ(オブジェクト・ストレージ・バケット)

スキーマ名

デフォルト値:

デフォルトでは、Autonomous Databaseで生成されたスキーマ名の形式は次のとおりです:

DCAT$<dcat-con-id>_<data-asset-name>_<folder-name>

  • dcat-con-idは、一意の「データ・カタログ」接続識別子です。 この識別子の指定の詳細は、「DBMS_DCAT RUN_SYNCプロシージャ」dcat_con_idパラメータを参照してください。
  • data-asset-nameは、「データ・カタログ」データ・アセット名です。
  • folder-nameは、「データ・カタログ」フォルダ名です。 このフォルダはオブジェクト・ストレージ・バケットにマップされます。

カスタマイズ:

デフォルトのdata-asset-nameおよびfolder-nameをカスタマイズするには、カスタム・プロパティ、ビジネス名および表示名を定義してこれらのデフォルト名をオーバーライドします。
  • data-asset-nameは、「データ・カタログ」でデータ・アセットのoracle-db-schema-prefixカスタム・プロパティを定義することで上書きできます。
  • folder-nameは、「データ・カタログ」のフォルダのoracle-db-schemaカスタム・プロパティ(ビジネス名または表示名)を定義することで上書きできます。 次の属性は、folder-nameの生成に優先して使用されます:
    1. oracle-db-schemaカスタム・プロパティ
    2. ビジネス名
    3. 表示名

:

  • 接続IDがDataModelsの場合、アセット名はObjectStorage、フォルダ名はHR、カスタム・プロパティのオーバーライドがない場合、導出されたスキーマ名は次のようになります: DCAT$DATAMODELS_OBJECTSTORAGE_HR
  • データ・アセット名がMYASSETの場合、フォルダ名はMYFOLDERで、カスタム・プロパティ上書きがない場合、スキーマ名は: DCAT$MYASSET_MYFOLDER
  • データ・アセットにoracle-db-prefix = FIRSTASSETがあり、フォルダにoracle-db-schema = FIRSTFOLDERがある場合、スキーマ名は: DCAT$FIRSTASSET_FIRSTFOLDER
論理エンティティ 外部表

論理エンティティは外部表にマップされます。 論理エンティティにパーティション化された属性がある場合は、パーティション化された外部表にマップされます。

外部表名は、対応する論理エンティティの表示名またはビジネス名から導出されます。

oracle-db-schemaが設定されている場合、その値は、対応するフォルダおよびデータ・アセットのすべての名前とカスタム・プロパティをオーバーライドします。

たとえば、エンティティのoracle-db-schemaEntitySchemaに設定されている場合、表はスキーマDCAT$ENTITYSCHEMAに作成されます。

論理エンティティ属性 外部表の列

列名: 外部表の列名は、対応する論理エンティティ属性の表示名またはビジネス名から導出されます。

Parquet、AvroおよびORCファイルから導出された論理エンティティの場合、列名は常に、ソース・ファイルから導出されたフィールド名を表すため、属性の表示名です。

CSVファイルから導出された論理エンティティに対応する属性の場合、次の属性フィールドが列名を生成する際の優先順位で使用されます:

  1. oracle-db-column-name
  2. ビジネス名
  3. 表示名

列タイプ: oracle-db-column-typeカスタム・プロパティは、データ・カタログによって導出されたデフォルトの列タイプをオーバーライドします。

TIME_MICROS, TIME_MILLIS, TIMESTAMP_MICROSまたはTIMESTAMP_MILLISデータ型を持つAvroファイルから導出された論理エンティティに対応する属性については、「データ・カタログ」の対応する属性のoracle-db-column-typeを設定する必要があります。

列の長さ: oracle-db-column-lengthカスタム・プロパティは、データ・カタログによって導出された文字列フィールドのデフォルトの列長をオーバーライドします。

列の精度: oracle-db-column-precisionカスタム・プロパティは、データ・カタログによって導出された数値のデフォルトの精度をオーバーライドします。

TIME_MICROS, TIME_MILLIS, TIMESTAMP_MICROSまたはTIMESTAMP_MILLISデータ型を持つAvroファイルから導出された論理エンティティに対応する属性については、「データ・カタログ」の対応する属性のoracle-db-column-precisionを設定する必要があります。

列の位取り: oracle-db-column-scaleカスタム・プロパティは、データ・カタログによって導出された数値のデフォルトのスケールをオーバーライドします。

データ・カタログの一般的なワークフロー

「データ・カタログ」を使用して問い合せるユーザーが実行するアクションの一般的なワークフローがあります。

データベース「データ・カタログ」管理者は、Autonomous Databaseインスタンスと「データ・カタログ」インスタンス間の接続を作成し、「データ・カタログ」Autonomous Databaseの間の同期(sync)を構成および実行します。 同期により、同期された「データ・カタログ」コンテンツに基づいてAutonomous Databaseインスタンスに外部表およびスキーマが作成されます。

データベース「データ・カタログ」問合せ管理者またはデータベース管理者は、生成された外部表へのREADアクセス権を付与し、データ・アナリストおよび他のデータベース・ユーザーが外部表を参照および問合せできるようにします。

次の表に、各アクションの詳細を示します。 この表に含まれる様々なユーザー・タイプの詳細は、「データ・カタログのユーザーおよびロール」を参照してください。

ノート:

DBMS_DCATパッケージは、「データ・カタログ」オブジェクト・ストア・データ・アセットの問合せに必要なタスクの実行に使用できます。 「DBMS_DCATパッケージ」を参照してください。
アクション ユーザー 説明

ポリシーの作成

データベース「データ・カタログ」管理者

Autonomous Databaseリソース・プリンシパルまたはAutonomous Databaseユーザー資格証明には、「データ・カタログ」を管理してオブジェクト・ストレージから読み取るための適切な権限が必要です。

詳細情報: 必要な資格証明とIAMポリシー

資格証明を作成

データベース「データ・カタログ」管理者

「データ・カタログ」にアクセスしてオブジェクト・ストアを問い合せるためのデータベース資格証明が設定されていることを確認します。 ユーザーは、DBMS_CLOUD.CREATE_CREDENTIALをコールしてユーザー資格証明を作成するか、DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPALをコールしてリソース・プリンシパルを有効にします。

詳細情報: DBMS_CLOUD CREATE_CREDENTIALプロシージャ、 DBMS_CLOUDでのリソース・プリンシパルの使用.

「データ・カタログ」への接続の作成

データベース「データ・カタログ」管理者

Autonomous Databaseインスタンスと「データ・カタログ」インスタンス間の接続を開始するには、ユーザーはDBMS_DCAT.SET_DATA_CATALOG_CONNをコールしてターゲットの「データ・カタログ」インスタンスを指定します。 Autonomous Databaseインスタンスから複数の「データ・カタログ」インスタンスへの接続がサポートされています。

「データ・カタログ」インスタンスへの接続では、十分なOracle Cloud Infrastructure (OCI)権限を持つデータベース資格証明オブジェクトを使用する必要があります。 たとえば、Autonomous Databaseインスタンスのリソース・プリンシパル・サービス・トークンまたは十分な権限を持つOCIユーザーを使用できます。

接続が完了すると、「データ・カタログ」インスタンスはDBMS_DCATネームスペースおよびカスタム・プロパティで更新されます(まだ存在しない場合)。 ユーザーは問合せを実行して、現在のすべての接続を含む新しい接続を表示できます:
select * from all_dcat_connections;

詳細情報: SET_DATA_CATALOG_CONNプロシージャUNSET_DATA_CATALOG_CONNプロシージャ

選択的同期の作成

データベース「データ・カタログ」管理者

同期する「データ・カタログ」オブジェクトを選択して、同期ジョブを作成します。 ユーザーは次を行うことができます:
  • 同期するデータ・アセット/フォルダを選択します。
  • 同期する個別の論理エンティティを選択します。
  • 同期する前に、結果の外部表をプレビューします。
  • 「データ・カタログ」のカスタム・プロパティを変更して、外部表(名前など)を変更します。

詳細情報: CREATE_SYNC_JOBプロシージャDROP_SYNC_JOBプロシージャ同期マッピングを参照してください

データ・カタログとの同期

データベース「データ・カタログ」管理者

ユーザーが同期操作を開始します。 同期は、DBMS_DCAT.RUN_SYNCプロシージャ・コールを通じて手動で開始されるか、スケジュールされた同期ジョブの一部として自動的に開始されます。

同期操作では、「データ・カタログ」コンテンツおよび同期選択に従って外部表およびスキーマが作成、変更および削除されます。 手動構成は、「データ・カタログ」カスタム・プロパティを使用して適用されます。

詳細情報: RUN_SYNCプロシージャCREATE_SYNC_JOBプロシージャ同期マッピングを参照してください

同期の監視とログの表示

データベース「データ・カタログ」管理者

ユーザーは、USER_LOAD_OPERATIONSビューを問い合せて同期ステータスを表示できます。 同期プロセスが完了すると、ユーザーは、論理エンティティと外部表のマッピングの詳細など、同期結果のログを表示できます。

詳細情報: 負荷のモニタリングとトラブルシューティング

権限の付与

データベース「データ・カタログ」問合せ管理者、データベース管理者

データベース「データ・カタログ」問合せ管理者またはデータベース管理者は、生成された外部表に対するREADをデータ・アナリスト・ユーザーに付与する必要があります。 これにより、データ・アナリストは生成された外部表を問い合せることができます。

外部表の参照と問合せ

データ・アナリスト

データ・アナリストは、Oracle SQLをサポートするツールまたはアプリケーションを使用して、外部表を問い合せることができます。

データ・アナリストは、DCATスキーマ内の同期されたスキーマと表を確認し、Oracle SQLを使用して表を問い合せることができます。

詳細情報: 同期マッピング

「データ・カタログ」への接続の終了

データベース「データ・カタログ」管理者

既存の「データ・カタログ」関連付けを削除するには、ユーザーはUNSET_DATA_CATALOG_CONNプロシージャをコールします。

このアクションは、「データ・カタログ」およびカタログから導出された外部表を使用する予定がなくなった場合にのみ実行されます。 このアクションは、「データ・カタログ」メタデータを削除し、同期された外部表をAutonomous Databaseインスタンスから削除します。 「データ・カタログ」およびOCIポリシーのカスタム・プロパティは影響を受けません。

詳細情報: UNSET_DATA_CATALOG_CONNプロシージャ

例: MovieStreamシナリオ

このシナリオでは、Moviestreamがオブジェクト・ストレージのランディング・ゾーンにデータをキャプチャしています。 このデータの多くは、必ずしもすべてではなく、Autonomous Databaseのフィードに使用されます。 Autonomous Databaseにフィードする前に、データは変換され、クレンジングされた後、「ゴールド」領域に格納されます。

「データ・カタログ」は、これらのソースを収集し、データにビジネス・コンテキストを提供するために使用されます。 「データ・カタログ」メタデータはAutonomous Databaseと共有されるため、Autonomous DatabaseユーザーはOracle SQLを使用してこれらのデータ・ソースを問い合せることができます。 このデータは、Autonomous Databaseにロードすることも、外部表を使用して動的に問合せすることもできます。

「データ・カタログ」の使用方法の詳細は、「データ・カタログ・ドキュメント」を参照してください。

  1. オブジェクト・ストア - バケット、フォルダおよびファイルのレビュー
    1. オブジェクト・ストア内のバケットを確認します。
      たとえば、オブジェクト・ストレージのランディング(moviestream_landing)バケットとゴールド・ゾーン(moviestream_gold)バケットを次に示します:
    2. オブジェクト・ストア・バケット内のフォルダおよびファイルを確認します。
      たとえば、オブジェクト・ストレージのランディング・バケット(moviestream_landing)内のフォルダを次に示します:
  2. 「データ・カタログ」 - ファイル名パターンの作成
    1. ファイル名パターンを使用してデータを編成する方法を「データ・カタログ」に通知します。 これらは、ファイルの分類に使用される正規表現です。 ファイル名パターンは、「データ・カタログ」ハーベスタで論理エンティティを導出するために使用されます。 次の2つのファイル名パターンは、MovieStreamの例でバケットを収集するために使用されます。 ファイル名パターンの作成の詳細は、「論理データ・エンティティとしてのオブジェクト・ストレージ・ファイルの収集」を参照してください。
      Hive-style Folder-style
      {bucketName:.*}/{logicalEntity:[^/]+}.db/{logicalEntity:[^/]+}/.* {bucketName:[\w]+}/{logicalEntity:[^/]+}(?<!.db)/.*$
      • オブジェクト名の最初の部分として.dbを含むソースの論理エンティティを作成します。
      • バケット内で一意性を確保するために、生成される名前は(db-name).(folder name)です
      • ルートのフォルダ名に基づいて論理エンティティを作成
      • Hiveとの重複を防ぐために、その中に".db"があるオブジェクト名はスキップされます。
    2. ファイル名パターンを作成するには、「データ・カタログ」「ファイル名パターン」タブに移動し、「ファイル名パターンの作成」をクリックします。 たとえば、moviestream データ・カタログファイル名パターンの作成タブを次に示します:
  3. 「データ・カタログ」 - データ・アセット作成
    1. オブジェクト・ストアからデータを収集するために使用するデータ・アセットを作成します。
      たとえば、phoenixObjStoreという名前のデータ・アセットがmoviestream データ・カタログに作成されます:
    2. データ・アセットへの接続を追加します。
      この例では、データ・アセットはmoviestreamオブジェクト・ストレージ・リソースのコンパートメントに接続します。
    3. 次に、ファイル名パターンをデータ・アセットに関連付けます。 「ファイル名パターンの割当て」を選択し、必要なパターンを確認し、「割り当て」をクリックします。
      たとえば、phoenixObjStoreデータasset:assign_filename_patterns_v1.pngの説明は以下のとおりですに割り当てられたパターンを次に示します
      図assign_filename_patterns_v1.pngの説明
  4. 「データ・カタログ」 - オブジェクト・ストアからデータを収集
    1. 「データ・カタログ」データ・アセットを収集します。 ソース・データを含むオブジェクト・ストア・バケットを選択します。
      この例では、オブジェクト・ストアからのmoviestream_goldおよび moviestream_landingバケットが収集対象として選択されています。
    2. ジョブを実行すると、論理エンティティが表示されます。 「データ・アセットの参照」を使用して確認します。
      この例では、customer-extension論理エンティティとその属性を確認します。

      用語集がある場合、「データ・カタログ」では、エンティティとその属性に関連付けるカテゴリと用語が推奨されます。 これにより、アイテムのビジネス・コンテキストが提供されます。 スキーマ、表および列は、わかりやすいものではありません。

      この例では、様々なタイプのバケットとそのコンテンツの意味を区別します:
      • ランディング・ゾーンとは何ですか。
      • データはどのくらい正確ですか?
      • 最終更新日時
      • 論理エンティティまたはその属性の定義
  5. Autonomous Database - 「データ・カタログ」に接続

    Autonomous Database「データ・カタログ」に接続します。 接続に使用する資格証明が、「データ・カタログ」アセットへのアクセス権限を持つOCIプリンシパルを使用していることを確認する必要があります。 詳細は、「データ・カタログ・ポリシー」および「ポリシーおよびロールの構成によるクラウド・リソースへのアクセス」を参照してください。

    1. 「データ・カタログ」に接続
      -- Variables are used to simplify usage later
      define oci_credential = 'OCI$RESOURCE_PRINCIPAL'
      define dcat_ocid = 'ocid1.datacatalog.oc1.iad.aaaaaaaardp66bg....twiq'
      define dcat_region='us-ashburn-1'
      define uri_root =    'https://objectstorage.us-ashburn-1.oraclecloud.com/n/mytenancy/b/landing/o'
      define uri_private = 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/mytenancy/b/private_data/o'
      
      -- Run as admin
      -------
      -- Enable resource principal support
      -------
      exec dbms_cloud_admin.enable_resource_principal();
      
      -- Test to make sure credential was created. Returns a row if it was successful
      select * 
      from dba_credentials 
      where credential_name = 'OCI$RESOURCE_PRINCIPAL' and owner = 'ADMIN'; 
      
      -- Query a private bucket to test the principal and privileges.
      select * 
      from dbms_cloud.list_objects('&oci_credential', '&uri_private/');
      
      --------
      -- Set the credentials to use for object store and data catalog
      -- Connect to Data Catalog
      -- Review connection
      ---------
      -- Set credentials
      exec dbms_dcat.set_data_catalog_credential(credential_name => '&oci_credential');
      exec dbms_dcat.set_object_store_credential(credential_name => '&oci_credential');
      
      -- Connect to Data Catalog
      begin
         dbms_dcat.set_data_catalog_conn (
           region => '&dcat_region',
           catalog_id => '&dcat_ocid');
      end;
      /
      -- Review the connection
      select * from all_dcat_connections;
      
    2. 「データ・カタログ」をAutonomous Databaseと同期します。 ここでは、すべてのオブジェクト・ストレージ・アセットを同期します:
      
      -- Sync Data Catalog with Autonomous Database
      ---- Let's sync all of the assets.
      begin
       dbms_dcat.run_sync('{"asset_list":["*"]}');
      end;
      /
      
      -- View log
      select type, start_time, status, logfile_table from user_load_operations;  -- Logfile_Table will have the name of the table containing the full log.
      select * from dbms_dcat$1_log;
      
      -- View the new external tables
      select * from dcat_entities;
      select * from dcat_attributes;
      
      
    3. Autonomous Database - オブジェクト・ストアに対する問合せの実行を開始します。
      -- Query the Data !
      select *from dcat$phoenixobjstore_moviestream_gold.genre
      ;
  6. オブジェクトのスキーマの変更

    デフォルトのスキーマ名はかなり複雑です。 「データ・カタログ」にアセットとフォルダOracle-Db-Schemaカスタム属性の両方を指定して、それらを簡略化します。 データ・アセットをPHXに変更し、フォルダをそれぞれlandingおよびgoldに変更します。 スキーマは2つの連結です。

    1. 「データ・カタログ」から、moviestream_landingバケットに移動し、アセットをそれぞれlandingおよびgoldに変更します。

      変更前:

      変更後:

    2. 別の同期を実行します。

例: パーティション化されたデータのシナリオ

このシナリオは、オブジェクト・ストアのパーティション・データから収集された「データ・カタログ」論理エンティティに基づく外部表をAutonomous Databaseで作成する方法を示しています。

次の例は「例: MovieStreamシナリオ」に基づいており、パーティション化されたデータとの統合を示すように適応されています。 「データ・カタログ」は、これらのソースを収集し、データにビジネス・コンテキストを提供するために使用されます。 この例の詳細は、「例: MovieStreamシナリオ」を参照してください。

「データ・カタログ」の使用方法の詳細は、「データ・カタログ・ドキュメント」を参照してください。

  1. オブジェクト・ストア - バケット、フォルダおよびファイルのレビュー
    1. オブジェクト・ストア内のバケットを確認します。
      たとえば、オブジェクト・ストレージのランディング(moviestream_landing)バケットとゴールド・ゾーン(moviestream_gold)バケットを次に示します:
    2. オブジェクト・ストア・バケット内のフォルダおよびファイルを確認します。
      たとえば、オブジェクト・ストレージのランディング・バケット(moviestream_landing)内のフォルダを次に示します:
  2. 「データ・カタログ」 - ファイル名パターンの作成
    1. ファイル名パターンを使用してデータを編成する方法を「データ・カタログ」に通知します。 これらは、ファイルの分類に使用されるフォルダ・プレフィクスまたは正規表現です。 ファイル名パターンは、「データ・カタログ」ハーベスタで論理エンティティを導出するために使用されます。 フォルダ・プレフィクスが指定されると、「データ・カタログ」によって、オブジェクト・ストア内の指定されたフォルダ・プレフィクスから論理エンティティが自動的に生成されます。 次のファイル名パターンは、MovieStreamの例でバケットを収集するために使用されます。 ファイル名パターンの作成の詳細は、「論理データ・エンティティとしてのオブジェクト・ストレージ・ファイルの収集」を参照してください。
      フォルダ接頭辞 説明
      workshop.db/ オブジェクト・ストアに" workshop.db "パスを含むソースの論理エンティティを作成します。
    2. ファイル名パターンを作成するには、「データ・カタログ」「ファイル名パターン」タブに移動し、「ファイル名パターンの作成」をクリックします。 たとえば、moviestream データ・カタログファイル名パターンの作成タブを次に示します:
  3. 「データ・カタログ」 - データ・アセット作成
    1. オブジェクト・ストアからデータを収集するために使用するデータ・アセットを作成します。
      たとえば、amsterdamObjStoreという名前のデータ・アセットがmoviestream データ・カタログに作成されます:
    2. データ・アセットへの接続を追加します。
      この例では、データ・アセットはmoviestreamオブジェクト・ストレージ・リソースのコンパートメントに接続します。
    3. 次に、ファイル名パターンをデータ・アセットに関連付けます。 「ファイル名パターンの割当て」を選択し、必要なパターンを確認し、「割り当て」をクリックします。
      たとえば、amsterdamObjStoreデータ・アセットに割り当てられたパターンを次に示します:
  4. 「データ・カタログ」 - オブジェクト・ストアからデータを収集
    1. 「データ・カタログ」データ・アセットを収集します。 ソース・データを含むオブジェクト・ストア・バケットを選択します。
      この例では、オブジェクト・ストアからのmoviestream_goldおよび moviestream_landingバケットが収集対象として選択されています。
    2. ジョブを実行すると、論理エンティティが表示されます。 「データ・アセットの参照」を使用して確認します。
      この例では、sales_sample_parquet論理エンティティとその属性を確認します。 「データ・カタログ」では、month属性がパーティションとして識別されています。
  5. Autonomous Database - 「データ・カタログ」に接続

    Autonomous Database「データ・カタログ」に接続します。 接続に使用する資格証明が、「データ・カタログ」アセットへのアクセス権限を持つOCIプリンシパルを使用していることを確認する必要があります。 詳細は、「データ・カタログ・ポリシー」および「ポリシーおよびロールの構成によるクラウド・リソースへのアクセス」を参照してください。

    1. 「データ・カタログ」に接続
      -- Variables are used to simplify usage later
      define oci_credential = 'OCI$RESOURCE_PRINCIPAL'
      define dcat_ocid = 'ocid1.datacatalog.oc1.eu-amsterdam-1....leguurn3dmqa'
      define dcat_region='eu-amsterdam-1'
      define uri_root =    'https://objectstorage.us-ashburn-1.oraclecloud.com/n/mytenancy/b/landing/o'
      define uri_private = 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/mytenancy/b/private_data/o'
      
      -- Run as admin
      -------
      -- Enable resource principal support
      -------
      exec dbms_cloud_admin.enable_resource_principal();
      
      -- Test to make sure credential was created. Returns a row if it was successful
      select * 
      from dba_credentials 
      where credential_name = 'OCI$RESOURCE_PRINCIPAL' and owner = 'ADMIN'; 
      
      -- Query a private bucket to test the principal and privileges.
      select * 
      from dbms_cloud.list_objects('&oci_credential', '&uri_private/');
      
      --------
      -- Set the credentials to use for object store and data catalog
      -- Connect to Data Catalog
      -- Review connection
      ---------
      -- Set credentials
      exec dbms_dcat.set_data_catalog_credential(credential_name => '&oci_credential');
      exec dbms_dcat.set_object_store_credential(credential_name => '&oci_credential');
      
      -- Connect to Data Catalog
      begin
         dbms_dcat.set_data_catalog_conn (
           region => '&dcat_region',
           catalog_id => '&dcat_ocid');
      end;
      /
      -- Review the connection
      select * from all_dcat_connections;
      
    2. 「データ・カタログ」をAutonomous Databaseと同期します。 ここでは、すべてのオブジェクト・ストレージ・アセットを同期します:
      
      -- Sync Data Catalog with Autonomous Database
      ---- Let's sync all of the assets.
      begin
       dbms_dcat.run_sync('{"asset_list":["*"]}');
      end;
      /
      
      -- View log
      select type, start_time, status, logfile_table from user_load_operations;  -- Logfile_Table will have the name of the table containing the full log.
      select * from dbms_dcat$1_log;
      
      -- View the new external tables
      select * from dcat_entities;
      select * from dcat_attributes;
      
      
    3. Autonomous Database - オブジェクト・ストアに対する問合せの実行を開始します。
      -- Query the Data !
      select count(*) from DCAT$AMSTERDAMOBJSTORE_MOVIESTREAM_LANDING.SALES_SAMPLE_PARQUET;
      
      -- Examine the generated partitioned table
      select dbms_metadata.get_ddl('TABLE','SALES_SAMPLE_PARQUET','DCAT$AMSTERDAMOBJSTORE_MOVIESTREAM_LANDING') from dual;
      
      CREATE TABLE "DCAT$AMSTERDAMOBJSTORE_MOVIESTREAM_LANDING"."SALES_SAMPLE_PARQUET"
      (    "MONTH" VARCHAR2(4000) COLLATE "USING_NLS_COMP",
           "DAY_ID" TIMESTAMP (6),
           "GENRE_ID" NUMBER(20,0),
           "MOVIE_ID" NUMBER(20,0),
           "CUST_ID" NUMBER(20,0),
      ...
      )  DEFAULT COLLATION "USING_NLS_COMP"
      ORGANIZATION EXTERNAL
       ( TYPE ORACLE_BIGDATA
         ACCESS PARAMETERS
         ( com.oracle.bigdata.fileformat=parquet
           com.oracle.bigdata.filename.columns=["MONTH"]
           com.oracle.bigdata.file_uri_list="https://swiftobjectstorage.eu-amsterdam-1.oraclecloud.com/v1/tenancy/moviestream_landing/workshop.db/sales_sample_parquet/*"
      ...
         )
       )
      REJECT LIMIT 0
      PARTITION BY LIST ("MONTH")
      (PARTITION "P1"  VALUES (('2019-01'))
         LOCATION ( 'https://swiftobjectstorage.eu-amsterdam-1.oraclecloud.com/v1/tenancy/moviestream_landing/workshop.db/sales_sample_parquet/month=2019-01/*'),
      PARTITION "P2"  VALUES (('2019-02'))
         LOCATION ( 'https://swiftobjectstorage.eu-amsterdam-1.oraclecloud.com/v1/tenancy/moviestream_landing/workshop.db/sales_sample_parquet/month=2019-02/*'),
      ...PARTITION "P24"  VALUES (('2020-12'))
         LOCATION ( 'https://swiftobjectstorage.eu-amsterdam-1.oraclecloud.com/v1/tenancy/moviestream_landing/workshop.db/sales_sample_parquet/month=2020-12/*'))
      PARALLEL
  6. オブジェクトのスキーマの変更

    デフォルトのスキーマ名はかなり複雑です。 「データ・カタログ」にアセットとフォルダOracle-Db-Schemaカスタム属性の両方を指定して、それらを簡略化します。 データ・アセットをPHXに変更し、フォルダをそれぞれlandingおよびgoldに変更します。 スキーマは2つの連結です。

    1. 「データ・カタログ」から、moviestream_landingバケットに移動し、アセットをそれぞれlandingおよびgoldに変更します。

      変更前:

      変更後:

    2. 別の同期を実行します。