機械翻訳について

フォルダ・フォーマット・ソース・ファイル編成を使用した外部パーティション・データの問合せ

DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLEを使用して、外部パーティション表を作成し、Cloud Object Storeファイル・パスからパーティション情報を生成します。

フォルダ形式のデータ・ファイルを含む外部表を作成する場合、パーティション列のタイプを指定するための2つのオプションがあります:

  • column_listパラメータを使用して、列とそのデータ型を手動で指定できます。 column_listパラメータの使用例は、「Hive形式のソース・ファイル編成を使用した外部パーティション・データの問合せ」を参照してください。

  • DBMS_CLOUDは、Avro、ORC、Parquetデータ・ファイルなどの構造化データ・ファイルの情報からデータ・ファイルの列とその型を導出できます。 この場合、formatパラメータとともにpartition_columnsオプションを使用して、パーティション列に列名とそのデータ型を指定し、column_listまたはfield_listパラメータを指定する必要はありません。

オブジェクト・ストアでは、次のサンプル・ソース・ファイルを考慮します:

.../sales/USA/2020/01/sales1.parquet

.../sales/USA/2020/02/sales2.parquet

このサンプル・フォルダ形式のファイルからパーティションを定義するクラウド・オブジェクト・ストア・ファイル・パスでパーティション化された外部表を作成するには、次の手順を実行します:

  1. プロシージャDBMS_CLOUD.CREATE_CREDENTIALを使用してオブジェクト・ストアの資格証明を保存します。

    たとえば:

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL (
        credential_name => 'DEF_CRED_NAME',
        username => 'adb_user@example.com',
        password => 'password' );
    END;
    /
    

    リソース・プリンシパル資格証明を有効にした場合、Oracle Cloud Infrastructureオブジェクト・ストアにアクセスするための資格証明の作成は必要ありません。 詳細については、「リソース・プリンシパルを使用したOracle Cloud Infrastructureリソースへのアクセス」を参照してください。

    この操作では、資格証明がデータベースに暗号化された形式で保存されます。  資格証明名には任意の名前を使用できます。 このステップは、オブジェクト・ストア資格証明が変更されないかぎり、1回のみ実行すれば済みます。  資格証明を保存したら、外部表の作成に同じ資格証明名を使用できます。

    様々なオブジェクト・ストレージ・サービスのusernameおよびpasswordパラメータの詳細は、「CREATE_CREDENTIALプロシージャ」を参照してください。

  2. DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLEプロシージャを使用して、ソース・ファイルに基づいて外部パーティション表を作成します。

    プロシージャDBMS_CLOUD.CREATE_EXTERNAL_PART_TABLEは、サポートされているクラウド・オブジェクト・ストレージ・サービスで外部パーティション化されたファイルをサポートします。 資格証明は表レベルのプロパティであるため、外部ファイルはすべて同じクラウド・オブジェクト・ストアに存在する必要があります。

    たとえば:

    BEGIN DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
        table_name => 'MYSALES',
        credential_name => 'DEF_CRED_NAME',
        file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/sales/*.parquet',
        format =>
            json_object('type' value 'parquet', 'schema' value 'first',
                        'partition_columns' value
                              json_array(
                                    json_object('name' value 'country', 'type' value 'varchar2(100)'),
                                    json_object('name' value 'year', 'type' value 'number'),
                                    json_object('name' value 'month', 'type' value 'varchar2(2)')
                              )
             )
        );
    END;
    /

    構造化データ・ファイルのDBMS_CLOUD.CREATE_EXTERNAL_PART_TABLEパラメータ(Parquetデータ・ファイルの場合など)では、column_listまたはfield_listパラメータは必要ありません。 列名およびデータ型は、プロシージャがスキャンする最初のparquetファイルの列に対して導出されます(したがって、すべてのファイルのシェイプが同じである必要があります)。 生成された列リストにはオブジェクト名から導出された列が含まれ、これらの列にはpartition_columns formatパラメータで指定されたデータ型が含まれます。

    パラメータは次のとおりです:

    • table_name: 外部表名です。

    • credential_name: 前のステップで作成した資格証明の名前です。

    • file_uri_list: ソース・ファイルURIのカンマ区切りリストです。 このリストには2つのオプションがあります:

      • ワイルドカードを使用せずに個々のファイルURIのカンマ区切りリストを指定します。

      • ワイルドカードは最後のスラッシュ"/""の後にのみ指定できる、ワイルドカードを含む単一のファイルURIを指定します。 文字「*」は複数の文字のワイルドカードとして使用でき、文字「?」は1文字のワイルドカードとして使用できます。

    • column_list: 外部表の列名とデータ型のカンマ区切りリストです。 リストには、ファイル内の列と、オブジェクト名から導出された列が含まれます。

      データファイルが構造化ファイル(Parquet、AvroまたはORC)の場合、column_listは必要ありません。

    • field_list: ソース・ファイル内のフィールドとそのデータ型を識別します。 デフォルト値はNULLで、フィールドとそのデータ型はcolumn_listパラメータによって決定されます。

      データファイルが構造化ファイル(Parquet、AvroまたはORC)の場合、field_listは必要ありません。

    • format: ソース・ファイルの形式を記述するために指定できるオプションを定義します。 partition_columns formatパラメータは、パーティション列の名前を指定します。 詳細については、「DBMS_CLOUDパッケージ・フォーマット・オプション」を参照してください。

      ソース・ファイル内のデータが暗号化されている場合は、encryption形式オプションを指定してデータを復号化します。 データの復号化の詳細は、「オブジェクト・ストレージからのインポート中のデータの復号化」を参照してください。

    この例では、namespace-stringがOracle Cloud Infrastructureオブジェクト・ストレージのネームスペースで、bucketnameがバケット名です。 詳細については、「オブジェクト・ストレージのネームスペースについて」を参照してください。

    パラメータの詳細は、「CREATE_EXTERNAL_PART_TABLEプロシージャ」を参照してください。

    サポートされているクラウド・オブジェクト・ストレージ・サービスの詳細は、「DBMS_CLOUD URIの書式」を参照してください。

    指定したフォーマット・オプションと一致しない行がソース・ファイル内にある場合、問合せはエラーを通知します。 rejectlimitなどのDBMS_CLOUDパラメータを使用して、これらのエラーを抑制できます。 または、作成した外部パーティション表を検証してエラー・メッセージと拒否行を表示し、書式オプションを適宜変更することもできます。 詳細については、「外部データの検証」「外部パーティション化されたデータの検証」を参照してください。

  3. これで、前のステップで作成した外部パーティション表に対して問合せを実行できます。

    Autonomous Databaseでは、外部パーティション表のパーティション化情報を利用して、問合せがオブジェクト・ストアの関連データ・ファイルにのみアクセスできるようにしています。 たとえば、次の問合せは、1つのパーティションからのみデータファイルを読み取ります。

    たとえば:

    SELECT year, month, product, units 
    FROM SALES WHERE year='2020' AND month='02' AND country='USA'

    DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLEで作成した外部パーティション表には、2つの非表示列file$pathおよびfile$nameが含まれます。 これらの列は、レコードの起点となるファイルの識別に役立ちます。 詳細については、「外部表のMetadata列」を参照してください。