Interroger des données externes à l'aide de fichiers sources ORC, Parquet ou Avro

La base de données autonome d'IA facilite l'accès aux données ORC, Parquet ou Avro stockées dans le magasin d'objets à l'aide de tables externes. Les sources ORC, Parquet et Avro comportent des métadonnées et la procédure DBMS_CLOUD.CREATE_EXTERNAL_TABLE peut utiliser ces métadonnées pour simplifier la création de tables externes.

Vous n'avez pas besoin de connaître la structure des données. DBMS_CLOUD peut examiner le fichier et convertir le contenu ORC, Parquet ou Avro en colonnes et types de données Oracle équivalents. Il vous suffit de connaître l'emplacement des données dans le magasin d'objets, de spécifier leur type, ORC, Parquet ou Avro, et de disposer de données d'identification pour accéder au fichier source de votre magasin d'objets.

Note

Les étapes d'utilisation des tables externes sont très similaires pour ORC, Parquet et Avro. Ces étapes montrent comment utiliser un fichier source au format Parquet.

Le fichier source de cet exemple, sales_extended.parquet, contient des données au format Parquet. Pour interroger ce fichier dans Autonomous AI Database, procédez de la façon suivante :

  1. Stockez les données d'identification du magasin d'objets, pour accéder au magasin d'objets, à l'aide de la procédure DBMS_CLOUD.CREATE_CREDENTIAL :
    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_NAME',
        username => 'adb_user@example.com',
        password => 'password' );
    END;
    /
    

    La création de données d'identification pour accéder au magasin d'objets Oracle Cloud Infrastructure n'est pas requise si vous activez les données d'identification du principal de ressource. Pour plus d'informations, voir Utiliser un principal de ressource pour accéder aux ressources Oracle Cloud Infrastructure.

    Cette opération stocke les données d'identification dans la base de données dans un format chiffré. Vous pouvez utiliser n'importe quel nom pour le nom des données d'identification. Notez que cette étape n'est requise qu'une seule fois, sauf si les données d'identification du magasin d'objets changent. Une fois les données d'identification stockées, vous pouvez utiliser le même nom pour créer des tables externes.

    Voir Procédure CREATE_CREDENTIAL pour plus d'informations sur les paramètres username et password pour différents services de stockage d'objets.

  2. Créez une table externe pour ORC, Parquet ou Avro au-dessus de vos fichiers sources à l'aide de la procédure DBMS_CLOUD.CREATE_EXTERNAL_TABLE.

    La procédure DBMS_CLOUD.CREATE_EXTERNAL_TABLE prend en charge les fichiers externes dans les services de stockage d'objets en nuage pris en charge, notamment : Oracle Cloud Infrastructure Object Storage, Azure Blob Storage ou Azure Data Lake Storage, Amazon S3 et compatible Amazon S3, notamment : Oracle Cloud Infrastructure Object Storage, Google Cloud Storage et Wasabi Hot Cloud Storage. Les informations d'identification sont une propriété de niveau table. Par conséquent, les fichiers externes doivent se trouver dans le même magasin d'objets.

    Par défaut, les colonnes créées dans la table externe mappent automatiquement leurs types de données aux types de données Oracle pour les champs trouvés dans les fichiers sources et les noms de colonne de table externe correspondent aux noms de champ source.

    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;
    /     
    

    Les paramètres sont les suivants :

    • table_name : Nom de la table externe.

    • credential_name : Nom des données d'identification créées à l'étape précédente. Le paramètre credential_name doit être conforme aux conventions d'attribution de nom d'objet Oracle. Pour plus d'informations, voir Règles d'attribution de nom aux objets de base de données.

    • file_uri_list : Liste délimitée par des virgules des fichiers sources à interroger. Le format d'URI pour les points d'extrémité dédiés est pris en charge dans les domaines commerciaux (OC1). Pour plus d'informations, voir Points d'extrémité dédiés du service de stockage d'objets et Formats d'URI DBMS_CLOUD.

    • format : Définit les options pour décrire le format du fichier source. Pour un fichier Parquet, utilisez le paramètre format pour spécifier type parquet. Pour un fichier Avro, utilisez le paramètre format pour spécifier type avro. Pour un fichier ORC, utilisez le paramètre format pour spécifier type orc.

    Dans cet exemple, namespace-string est l'espace de noms du stockage d'objets pour Oracle Cloud Infrastructure et bucketname est le nom du seau. Pour plus d'informations, voir Présentation des espaces de noms du stockage d'objets.

    Par défaut, le paramètre format schema est défini et les colonnes et les types de données sont dérivés automatiquement et les champs de la source correspondent aux colonnes de la table externe par nom. Les types de données sources sont convertis en types de données Oracle de colonne de table externe en fonction du mappage DBMS_CLOUD pour les types de données ORC, Parquet ou Avro. Les valeurs de paramètre schema valides sont les suivantes :

    • first : Analysez le schéma du premier fichier ORC, Parquet ou Avro trouvé par DBMS_CLOUD dans file_uri_list spécifié (first est la valeur par défaut pour schema).

    • all : Analysez tous les schémas pour tous les fichiers ORC, Parquet ou Avro trouvés dans file_uri_list. Comme il s'agit simplement de fichiers capturés dans un magasin d'objets, rien ne garantit que les métadonnées de chaque fichier sont identiques. Par exemple, File1 peut contenir un champ appelé "adresse", alors que File2 peut manquer ce champ. L'examen de chaque fichier pour dériver les colonnes est un peu plus coûteux, mais peut être nécessaire si le premier fichier ne contient pas tous les champs obligatoires.

    Note

    Si le paramètre column_list est spécifié, vous fournissez les noms de colonne et les types de données pour la table externe et la valeur schema, si elle est spécifiée, elle est ignorée. À l'aide de column_list, vous pouvez limiter les colonnes de la table externe. Si column_list n'est pas spécifié, la valeur par défaut de schema est first.
  3. Vous pouvez maintenant exécuter des interrogations sur la table externe que vous avez créée à l'étape précédente :
    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
    

    Cette interrogation affiche les valeurs des rangées de la table externe. Si vous voulez interroger ces données fréquemment, après avoir examiné les données, vous pouvez les charger dans une table avec DBMS_CLOUD.COPY_DATA.

See CREATE_EXTERNAL_TABLE Procedure for Avro, ORC, or Parquet Files and COPY_DATA Procedure for Avro, ORC, or Parquet Files for more information.

Voir Formats d'URI DBMS_CLOUD pour plus d'informations sur les services de stockage d'objets en nuage pris en charge.

Interroger des données externes à l'aide de fichiers sources ORC, Parquet ou Avro et définir explicitement la taille de la colonne de texte

Lorsque vous accédez aux données ORC, Parquet ou Avro stockées dans le magasin d'objets à l'aide de tables externes dans Autonomous AI Database, vous pouvez définir automatiquement ou explicitement la taille maximale des colonnes de texte.

Par défaut, la taille de la colonne de texte est définie en fonction de la valeur de MAX_STRING_SIZE.

Le fichier source de cet exemple, sales_extended.parquet, contient des données au format Parquet. Pour interroger ce fichier dans Autonomous AI Database et définir la taille maximale de colonne de texte, procédez de la façon suivante :

  1. Stockez les données d'identification du magasin d'objets, pour accéder au magasin d'objets, à l'aide de la procédure DBMS_CLOUD.CREATE_CREDENTIAL :
    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_NAME',
        username => 'adb_user@example.com',
        password => 'password' );
    END;
    /
    

    La création de données d'identification pour accéder au magasin d'objets Oracle Cloud Infrastructure n'est pas requise si vous activez les données d'identification du principal de ressource. Pour plus d'informations, voir Utiliser un principal de ressource pour accéder aux ressources Oracle Cloud Infrastructure.

    Cette opération stocke les données d'identification dans la base de données dans un format chiffré. Vous pouvez utiliser n'importe quel nom pour le nom des données d'identification. Notez que cette étape n'est requise qu'une seule fois, sauf si les données d'identification du magasin d'objets changent. Une fois les données d'identification stockées, vous pouvez utiliser le même nom pour créer des tables externes.

    Voir Procédure CREATE_CREDENTIAL pour plus d'informations sur les paramètres username et password pour différents services de stockage d'objets.

  2. Créez une table externe pour ORC, Parquet ou Avro au-dessus de vos fichiers sources à l'aide de la procédure DBMS_CLOUD.CREATE_EXTERNAL_TABLE et spécifiez le paramètre de format maxvarchar.

    La procédure DBMS_CLOUD.CREATE_EXTERNAL_TABLE prend en charge les fichiers externes dans les services de stockage d'objets en nuage pris en charge, notamment : Oracle Cloud Infrastructure Object Storage, Azure Blob Storage ou Azure Data Lake Storage, Amazon S3 et compatible Amazon S3, notamment : Oracle Cloud Infrastructure Object Storage, Google Cloud Storage et Wasabi Hot Cloud Storage. Les informations d'identification sont une propriété de niveau table. Par conséquent, les fichiers externes doivent se trouver dans le même magasin d'objets.

    Par défaut, les colonnes créées dans la table externe mappent automatiquement leurs types de données aux types de données Oracle pour les champs trouvés dans les fichiers sources et les noms de colonne de table externe correspondent aux noms de champ source.

    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;
    /     
    

    Les paramètres sont les suivants :

    • table_name : Nom de la table externe.

    • credential_name : Nom des données d'identification créées à l'étape précédente. Le paramètre credential_name doit être conforme aux conventions d'attribution de nom d'objet Oracle. Pour plus d'informations, voir Règles d'attribution de nom aux objets de base de données.

    • file_uri_list : Liste délimitée par des virgules des fichiers sources à interroger. Le format d'URI pour les points d'extrémité dédiés est pris en charge dans les domaines commerciaux (OC1). Pour plus d'informations, voir Points d'extrémité dédiés du service de stockage d'objets et Formats d'URI DBMS_CLOUD.

    • format : Définit les options pour décrire le format du fichier source. Pour un fichier Parquet, utilisez le paramètre format pour spécifier type parquet. Pour un fichier Avro, utilisez le paramètre format pour spécifier type avro. Pour un fichier ORC, utilisez le paramètre format pour spécifier type orc.

      L'option maxvarchar avec la valeur extended spécifie que les colonnes de texte sont créées en tant que varchar(32767) sur une instance de base de données d'intelligence artificielle autonome avec une taille de chaîne étendue. Les valeurs possibles sont standard avec varchar(4000), extended avec varchar(32767) et auto. La valeur par défaut de maxvarchar est auto. Avec cette valeur, la taille de texte maximale est basée sur la valeur de MAX_STRING_SIZE.

    Dans cet exemple, namespace-string est l'espace de noms du stockage d'objets pour Oracle Cloud Infrastructure et bucketname est le nom du seau. Pour plus d'informations, voir Présentation des espaces de noms du stockage d'objets.

    Par défaut, le paramètre format schema est défini et les colonnes et les types de données sont dérivés automatiquement et les champs de la source correspondent aux colonnes de la table externe par nom. Les types de données sources sont convertis en types de données Oracle de colonne de table externe en fonction du mappage DBMS_CLOUD pour les types de données ORC, Parquet ou Avro. Les valeurs de paramètre schema valides sont les suivantes :

    • first : Analysez le schéma du premier fichier ORC, Parquet ou Avro trouvé par DBMS_CLOUD dans file_uri_list spécifié (first est la valeur par défaut pour schema).

    • all : Analysez tous les schémas pour tous les fichiers ORC, Parquet ou Avro trouvés dans file_uri_list. Comme il s'agit simplement de fichiers capturés dans un magasin d'objets, rien ne garantit que les métadonnées de chaque fichier sont identiques. Par exemple, File1 peut contenir un champ appelé "adresse", alors que File2 peut manquer ce champ. L'examen de chaque fichier pour dériver les colonnes est un peu plus coûteux, mais peut être nécessaire si le premier fichier ne contient pas tous les champs obligatoires.

    Note

    Si le paramètre column_list est spécifié, vous fournissez les noms de colonne et les types de données pour la table externe et la valeur schema, si elle est spécifiée, elle est ignorée. À l'aide de column_list, vous pouvez limiter les colonnes de la table externe. Si column_list n'est pas spécifié, la valeur par défaut de schema est first.
  3. Vous pouvez maintenant exécuter des interrogations sur la table externe que vous avez créée à l'étape précédente :
    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
    

    Cette interrogation affiche les valeurs des rangées de la table externe. Si vous voulez interroger ces données fréquemment, après avoir examiné les données, vous pouvez les charger dans une table avec DBMS_CLOUD.COPY_DATA.

    Si vous spécifiez l'option format maxvarchar comme standard, les colonnes de texte varchar2() sont créées avec la taille 4000. Exemple :

    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;
    /     
    

    Le paramètre format avec l'option maxvarchar réglée à la valeur standard spécifie que les colonnes de texte sont créées en tant que 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)
    

See CREATE_EXTERNAL_TABLE Procedure for Avro, ORC, or Parquet Files and COPY_DATA Procedure for Avro, ORC, or Parquet Files for more information.

Voir Formats d'URI DBMS_CLOUD pour plus d'informations sur les services de stockage d'objets en nuage pris en charge.