機械翻訳について

ORC、ParquetまたはAvroソース・ファイルを使用した外部データの問合せ

Autonomous Databaseを使用すると、外部表を使用してオブジェクト・ストアに格納されているORC、ParquetまたはAvroデータに簡単にアクセスできます。 ORC、ParquetおよびAvroソースにはメタデータが埋め込まれており、DBMS_CLOUD.CREATE_EXTERNAL_TABLEプロシージャではこのメタデータを使用して外部表の作成を簡略化できます。

データの構造を知る必要はありません。DBMS_CLOUDでは、ファイルを調べてORC、ParquetまたはAvroコンテンツを同等のOracle列およびデータ型に変換できます。 オブジェクト・ストア内のデータのロケーションを把握し、そのタイプ(ORC、ParquetまたはAvro)を指定し、オブジェクト・ストア上のソース・ファイルにアクセスするための資格証明を持っていることのみが必要です。

ノート:

ORC、ParquetおよびAvroでは、外部表を使用するステップはよく似ています。 これらのステップは、Parquetフォーマットのソース・ファイルの操作を示しています。

この例のsales_extended.parquetのソース・ファイルには、Parquet形式のデータが含まれます。 Autonomous Databaseでこのファイルを問い合せる手順は、次のとおりです:

  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_TABLEプロシージャを使用して、ORC、ParquetまたはAvroの外部表をソース・ファイルの上に作成します。

    プロシージャDBMS_CLOUD.CREATE_EXTERNAL_TABLEは、サポートされているクラウド・オブジェクト・ストレージ・サービスの外部ファイルをサポート: Oracle Cloud Infrastructure Object StorageAzure BlobストレージまたはAzure Data LakeストレージAmazon S3およびAmazon S3互換: Oracle Cloud Infrastructure Object StorageGoogle Cloud StorageおよびWasabi Hot Cloud Storage 資格証明は表レベルのプロパティであるため、外部ファイルは同じオブジェクト・ストア上にある必要があります。

    デフォルトでは、外部表で作成された列のデータ型は、ソース・ファイルで見つかったフィールドのOracleデータ型に自動的にマップされ、外部表の列名はソース・フィールド名と一致します。

    BEGIN
       DBMS_CLOUD.CREATE_EXTERNAL_TABLE(
        table_name =>'sales_extended_ext',
        credential_name =>'DEF_CRED_NAME',
        file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/sales_extended.parquet',
        format =>  '{"type":"parquet", "schema": "first"}'
     );
    END;
    /     
    

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

    • table_name: 外部表名です。

    • credential_name: 前のステップで作成した資格証明の名前です。 credential_nameパラメータは、Oracleオブジェクトのネーミング規則に準拠している必要があります。 詳細については、「データベース・オブジェクトのネーミング・ルール」を参照してください。

    • file_uri_list: 問い合せるソース・ファイルのカンマ区切りリストです。 専用エンドポイントの「The URI」形式は、商用(OC1)レルムでサポートされています。 詳細は、「オブジェクト・ストレージ専用エンドポイント」および「DBMS_CLOUD URIの書式」を参照してください。

    • format: ソース・ファイルのフォーマットを記述するオプションを定義します。 Parquetファイルの場合は、formatパラメータを使用してtype parquetを指定します。 Avroファイルの場合、formatパラメータを使用してtype avroを指定します。 ORCファイルの場合は、formatパラメータを使用してtype orcを指定します。

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

    デフォルトでは、format schemaパラメータが設定され、列とデータ型が自動的に導出され、ソースのフィールドは名前で外部表の列と一致します。 ソース・データ型は、ORC、ParquetまたはAvroデータ型のDBMS_CLOUDマッピングに従って、外部表の列のOracleデータ型に変換されます。 有効なschemaパラメータ値は次のとおりです:

    • first: 指定されたfile_uri_list (firstschemaのデフォルト値)でDBMS_CLOUDによって検出された最初のORC、ParquetまたはAvroファイルのスキーマを分析します。

    • all: file_uri_listで見つかったORC、ParquetまたはAvroファイルのすべてのスキーマを分析します。 これらはオブジェクト・ストア内で取得されるファイルのみであるため、各ファイルのメタデータが同じであることは保証されません。 たとえば、File1には"address"というフィールドが含まれ、File2ではそのフィールドが欠落している場合があります。 各ファイルを調べて列を導出するほうが、費用がかかりますが、最初のファイルにすべての必須フィールドが含まれていない場合は必須です。

    ノート:

    column_listパラメータを指定すると、外部表とschema値の列名およびデータ型を指定します(指定した場合は無視されます)。 column_listを使用して、外部表の列を制限できます。 column_listが指定されていない場合、schemaのデフォルト値はfirstです。
  3. これで、前のステップで作成した外部表に対して問合せを実行できます:
    DESC sales_extended_ext;
    Name           Null? Type           
    -------------- ----- -------------- 
    PROD_ID              NUMBER(10)     
    CUST_ID              NUMBER(10)     
    TIME_ID              VARCHAR2(32767) 
    CHANNEL_ID           NUMBER(10)     
    PROMO_ID             NUMBER(10)     
    QUANTITY_SOLD        NUMBER(10)     
    AMOUNT_SOLD          NUMBER(10,2)   
    GENDER               VARCHAR2(32767) 
    CITY                 VARCHAR2(32767) 
    STATE_PROVINCE       VARCHAR2(32767) 
    INCOME_LEVEL         VARCHAR2(32767)
    
    SELECT prod_id, quantity_sold, gender, city, income_level 
         FROM sales_extended_ext 
         WHERE ROWNUM < 8;
    
         PROD_ID     QUANTITY_SOLD     GENDER    CITY              INCOME_LEVEL
    1    13          1                 M         Adelaide          K: 250,000 – 299,999
    2    13          1                 M         Dolores           L: 300,000 and above
    3    13          1                 M         Cayuga            F: 110,000 – 129,999
    4    13          1                 F         Bergen op Zoom    C: 50,000 – 69,999
    5    13          1                 F         Neuss             J: 190,000 – 249,999
    6    13          1                 F         Darwin            F: 110,000 – 129,999
    7    13          1                 M         Sabadell          K:250,000 – 299,999
    

    この問合せは、外部表の行の値を表示します。 このデータを頻繁に問い合せる場合は、データを調査した後、DBMS_CLOUD.COPY_DATAを使用してデータを表にロードできます。

詳細については、「Avro、ORCまたはParquetファイル用のCREATE_EXTERNAL_TABLEプロシージャ」「Avro、ORCまたはParquetファイル用のCOPY_DATAプロシージャ」を参照してください。

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

ORC、ParquetまたはAvroソース・ファイルを使用して外部データを問い合せ、テキスト列サイズを明示的に設定

Autonomous Databaseの外部表を使用して、オブジェクト・ストアに格納されているORC、ParquetまたはAvroデータにアクセスする場合、テキスト列の最大サイズを自動または明示的に設定できます。

デフォルトでは、テキスト列サイズはMAX_STRING_SIZEの値に基づいて設定されます。

この例のsales_extended.parquetのソース・ファイルには、Parquet形式のデータが含まれます。 Autonomous Databaseでこのファイルを問い合せて、最大テキスト列サイズを設定するには、次の手順を実行します:

  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_TABLEを使用して、ソース・ファイルの上にORC、ParquetまたはAvroの外部表を作成し、maxvarcharフォーマット・パラメータを指定します。

    プロシージャDBMS_CLOUD.CREATE_EXTERNAL_TABLEは、サポートされているクラウド・オブジェクト・ストレージ・サービスの外部ファイルをサポート: Oracle Cloud Infrastructure Object StorageAzure BlobストレージまたはAzure Data LakeストレージAmazon S3およびAmazon S3互換: Oracle Cloud Infrastructure Object StorageGoogle Cloud StorageおよびWasabi Hot Cloud Storage 資格証明は表レベルのプロパティであるため、外部ファイルは同じオブジェクト・ストア上にある必要があります。

    デフォルトでは、外部表で作成された列のデータ型は、ソース・ファイルで見つかったフィールドのOracleデータ型に自動的にマップされ、外部表の列名はソース・フィールド名と一致します。

    BEGIN
       DBMS_CLOUD.CREATE_EXTERNAL_TABLE(
        table_name =>'sales_extended_ext',
        credential_name =>'DEF_CRED_NAME',
        file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/sales_extended.parquet',
        format =>  '{"type":"parquet", "schema": "first", "maxvarchar":"extended"}'
     );
    END;
    /     
    

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

    • table_name: 外部表名です。

    • credential_name: 前のステップで作成した資格証明の名前です。 credential_nameパラメータは、Oracleオブジェクトのネーミング規則に準拠している必要があります。 詳細については、「データベース・オブジェクトのネーミング・ルール」を参照してください。

    • file_uri_list: 問い合せるソース・ファイルのカンマ区切りリストです。 専用エンドポイントの「The URI」形式は、商用(OC1)レルムでサポートされています。 詳細は、「オブジェクト・ストレージ専用エンドポイント」および「DBMS_CLOUD URIの書式」を参照してください。

    • format: ソース・ファイルのフォーマットを記述するオプションを定義します。 Parquetファイルの場合は、formatパラメータを使用してtype parquetを指定します。 Avroファイルの場合、formatパラメータを使用してtype avroを指定します。 ORCファイルの場合は、formatパラメータを使用してtype orcを指定します。

      値がextendedのオプションmaxvarcharは、テキスト列が拡張文字列サイズを持つAutonomous Databaseインスタンスでvarchar(32767)として作成されるように指定します。 指定可能な値は、varchar(4000)が指定されたstandardvarchar(32767)が指定されたextendedおよびautoです。 デフォルトのmaxvarchar値はautoです。 この値の場合、最大テキスト・サイズはMAX_STRING_SIZEの値に基づきます。

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

    デフォルトでは、format schemaパラメータが設定され、列とデータ型が自動的に導出され、ソースのフィールドは名前で外部表の列と一致します。 ソース・データ型は、ORC、ParquetまたはAvroデータ型のDBMS_CLOUDマッピングに従って、外部表の列のOracleデータ型に変換されます。 有効なschemaパラメータ値は次のとおりです:

    • first: 指定されたfile_uri_list (firstschemaのデフォルト値)でDBMS_CLOUDによって検出された最初のORC、ParquetまたはAvroファイルのスキーマを分析します。

    • all: file_uri_listで見つかったORC、ParquetまたはAvroファイルのすべてのスキーマを分析します。 これらはオブジェクト・ストア内で取得されるファイルのみであるため、各ファイルのメタデータが同じであることは保証されません。 たとえば、File1には"address"というフィールドが含まれ、File2ではそのフィールドが欠落している場合があります。 各ファイルを調べて列を導出するほうが、費用がかかりますが、最初のファイルにすべての必須フィールドが含まれていない場合は必須です。

    ノート:

    column_listパラメータを指定すると、外部表とschema値の列名およびデータ型を指定します(指定した場合は無視されます)。 column_listを使用して、外部表の列を制限できます。 column_listが指定されていない場合、schemaのデフォルト値はfirstです。
  3. これで、前のステップで作成した外部表に対して問合せを実行できます:
    DESC sales_extended_ext;
    Name           Null? Type           
    -------------- ----- -------------- 
    PROD_ID              NUMBER(10)     
    CUST_ID              NUMBER(10)     
    TIME_ID              VARCHAR2(32767) 
    CHANNEL_ID           NUMBER(10)     
    PROMO_ID             NUMBER(10)     
    QUANTITY_SOLD        NUMBER(10)     
    AMOUNT_SOLD          NUMBER(10,2)   
    GENDER               VARCHAR2(32767) 
    CITY                 VARCHAR2(32767) 
    STATE_PROVINCE       VARCHAR2(32767) 
    INCOME_LEVEL         VARCHAR2(32767)
    
    SELECT prod_id, quantity_sold, gender, city, income_level 
         FROM sales_extended_ext 
         WHERE ROWNUM < 8;
    
         PROD_ID     QUANTITY_SOLD     GENDER    CITY              INCOME_LEVEL
    1    13          1                 M         Adelaide          K: 250,000 – 299,999
    2    13          1                 M         Dolores           L: 300,000 and above
    3    13          1                 M         Cayuga            F: 110,000 – 129,999
    4    13          1                 F         Bergen op Zoom    C: 50,000 – 69,999
    5    13          1                 F         Neuss             J: 190,000 – 249,999
    6    13          1                 F         Darwin            F: 110,000 – 129,999
    7    13          1                 M         Sabadell          K:250,000 – 299,999
    

    この問合せは、外部表の行の値を表示します。 このデータを頻繁に問い合せる場合は、データを調査した後、DBMS_CLOUD.COPY_DATAを使用してデータを表にロードできます。

    formatオプションmaxvarcharstandardとして指定した場合、varchar2()テキスト列はサイズ4000で作成されます。 たとえば:

    BEGIN
       DBMS_CLOUD.CREATE_EXTERNAL_TABLE(
        table_name =>'sales_extended_ext',
        credential_name =>'DEF_CRED_NAME',
        file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/sales_extended.parquet',
        format =>  '{"type":"parquet", "schema": "first", "maxvarchar":"standard"}'
     );
    END;
    /     
    

    オプションmaxvarcharを値standardに設定したformatパラメータは、テキスト列をvarchar(4000)として作成することを指定します。

    DESC sales_extended_ext;
    Name           Null? Type           
    -------------- ----- -------------- 
    PROD_ID              NUMBER(10)     
    CUST_ID              NUMBER(10)     
    TIME_ID              VARCHAR2(4000) 
    CHANNEL_ID           NUMBER(10)     
    PROMO_ID             NUMBER(10)     
    QUANTITY_SOLD        NUMBER(10)     
    AMOUNT_SOLD          NUMBER(10,2)   
    GENDER               VARCHAR2(4000) 
    CITY                 VARCHAR2(4000) 
    STATE_PROVINCE       VARCHAR2(4000) 
    INCOME_LEVEL         VARCHAR2(4000)
    

詳細については、「Avro、ORCまたはParquetファイル用のCREATE_EXTERNAL_TABLEプロシージャ」「Avro、ORCまたはParquetファイル用のCOPY_DATAプロシージャ」を参照してください。

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