Demandes de données de vol

Vous pouvez définir l'accès à un ensemble de données à l'aide d'objets de métadonnées appelés « demandes de données ». Une requête de données est la représentation du format générique open source pyarrow.flight.FlightDescriptor. Il s'agit d'un document de métadonnées qui décrit une requête visant à récupérer ou à générer un ensemble de données. La requête de données peut contenir des identifiants ou des paramètres de connexion, ou bien renvoyer à un identifiant de ressource de données connectée ou à un identifiant de connexion.

Dans les notebooks, vous pouvez utiliser du code généré pour charger des données à partir d'une source de données. Le code généré qui est ajouté à une cellule du cahier est une méthode qui vous aide à exploiter les données provenant d'une source de données.

Le code généré utilise l'interface Flight service, basée sur Apache Arrow Flight, pour communiquer avec un fichier, une connexion à une base de données ou une ressource de données connectée (données accessibles via une connexion) lors du chargement des données dans une structure de données.

En utilisant une requête de données de vol, vous pouvez définir la source de données et les propriétés interactives pour les requêtes de lecture ou d'écriture.

Les sections suivantes fournissent plus de détails sur la syntaxe et les propriétés des requêtes de données de vol pour l' Flight service.

Syntaxe et propriétés des requêtes de données

Pour savoir quelles propriétés d'interaction sont prises en charge par chaque connecteur, consultez l'API Data and AI Common Core. Vous pouvez également appeler le v2/datasources_types point de terminaison correspondant aux types de sources de données définis dans la liste des API Data and AI Common Core.

Une requête de données présente la structure suivante. En pratique, les requêtes de données ne contiennent généralement pas toutes les propriétés répertoriées et peuvent utiliser d'autres propriétés d'interaction spécifiques à une source de données donnée.

Exemple de demande adressée à /v2/datasource_types:

curl --request GET --url 'https://<host:port>/v2/datasource_types?connection_properties=true&interaction_properties=true' --header 'Accept: application/json' --header 'Authorization: Bearer ${TOKEN}'

Exemple de demande adressée à /v2/connections:

curl --request GET --url 'https://<host:port>/v2/connections?entity.name=<your_connection_name>' --header 'Accept: application/json' --header 'Authorization: Bearer ${TOKEN}'

Syntaxe de l'objet de requête de données

La requête de données suivante présente la syntaxe en notation « Python ». Cette description s'applique également à R.

data_request = {

    # The Flight Service expects assets to be identified by their GUID.
    # "asset_id" is the ID of connected data asset or a connection asset.
    "asset_id": "ASSET_GUID",
    "project_id|space_id|catalog_id": "GUID",

    # itc_utils.flight_service adds support for using asset names
    # use either one of ...
    "data_name" : "name of a plain data asset",
    "connection_name" : "name of a connection asset",
    "connected_data_name" : "name of a 'connected data' asset",
    # by default the assets will be looked up in the current project
    # itc_utils will set "asset_id" from the provided name.

    # "asset_id" and "connection_properties" are mutually exclusive
    "connection_properties": { # optional
        # not needed in most cases
    },

    "interaction_properties": {
        # commonly used properties, all optional
        "file_name" : "file in a connected data source",
        "schema_name" : "schema of a table in a connected database",
        "table_name" : "name of a table in a connected database",
        "row_limit" : NROWS,
        "infer_schema" : false|true,
        "invalid_data_handling" : "fail|row|column",
        ...
    },
    "fields": [...] # optional
    "num_partitions": N, # optional
    "batch_size": NROWS, # optional
    "commit_frequency" : NROWS # optional

}

Propriétés, valeurs et descriptions prises en charge

Propriété Valeur Descriptif
asset_id L'identifiant unique global (GUID) d'un élément de données, d'un élément de connexion ou d'un élément de données connecté dans le projet, le catalogue ou l'espace de déploiement.
batch_size Un nombre entier positif inférieur ou égal à 100 000. La valeur par défaut est 10 000. Flight lit les lignes des bases de données par blocs, gérés en interne sous forme d'objets de type RecordBatch. Ce paramètre batch_size définit le nombre de lignes à lire dans la source par bloc. Définir une taille de lot trop faible peut nuire aux performances, car cela entraîne des lectures trop fréquentes de la source.
commit_frequency Une valeur valide doit être supérieure à 100 mais inférieure à 100 000. La valeur par défaut est 100. Valide automatiquement la transaction de la base de données après l'écriture n des lignes. À utiliser uniquement lors de l'écriture de données dans une base de données SQL.
connection_properties Les ne connection_properties sont généralement pas utilisés, en particulier sur les ordinateurs portables, où leur utilisation connection_properties peut accroître le risque de fuite d'identifiants. Vous utiliseriez cette option connection_properties si vous n'avez ajouté aucun élément de projet, mais que vous souhaitez accéder à des données provenant d'une source de données externe ou y écrire des données. Si les données proviennent d'une source de données externe, définissez les propriétés de la connexion dans un élément de connexion et faites référence à cette connexion dans la requête de données.
interaction_properties Cela interaction_properties dépend du type de source de données. Pour obtenir la liste des propriétés prises en charge par source de données, consultez la liste [Types de sources de données de l'API Data and AI Common Core] qui répertorie les types de sources de données définis.
interaction_properties.row_limit La valeur peut être un nombre positif. Si la propriété row_limit n'est pas spécifiée, toutes les lignes seront lues. Cette propriété limite le nombre de lignes lues à partir de la source. En général, on peut commencer par une limite lorsqu'on explore des données. Sinon, le moteur d'exécution risque de manquer de mémoire. La définition de row_limit entraîne généralement l'ignorance de num_partitions toute valeur attribuée à; la valeur par défaut est alors 1.
interaction_properties.infer_schema Une valeur booléenne permettant de demander à l' Flight service e de déduire un type. La valeur par défaut est False. Certaines sources de données, telles que les fichiers « CSV », ne fournissent pas de types de données pour les colonnes. Par défaut, toutes les colonnes seront considérées comme des chaînes de caractères. Vous pouvez passer "infer_schema": true et l' Flight service. lira le fichier et déterminera au mieux les formats des champs. Flight service ne lit que les 1 000 premières lignes; il peut donc aboutir à des conclusions erronées si un champ ne présente pas un échantillon représentatif des propriétés disponibles dans ces 1 000 premières lignes. Par exemple, en détectant des valeurs 0 ou 1 dans les 1 000 premières lignes, Flight pourrait conclure qu'une colonne est de type booléen, alors qu'elle devrait être de type entier, car les lignes suivantes contiennent des valeurs supérieures à 1.
interaction_properties.invalid_data_handling L'un des fail ou row ou column. La valeur par défaut est fail. Définit comment traiter les valeurs non valides : par exemple, interrompre la tâche, mettre la colonne à zéro ou supprimer la ligne.
num_partitions Un nombre entier positif. La valeur par défaut est 1. Certaines sources de données permettent d'accéder aux données via plusieurs points de terminaison. Cette technique permet de lire plusieurs flux dans des threads parallèles. La valeur de num_partitions détermine le nombre de points de terminaison que l' Flight service ur doit fournir au client. La valeur de num_partitions est ignorée si la source de données ne prend pas en charge plusieurs points de terminaison. Cette valeur peut également être ignorée si elle entre en conflit avec d'autres attributs, tels que row_limit.
project_id Le GUID de votre projet.
fields fields sont définies sous la forme d'une liste de dictionnaires, qui doivent comporter au minimum les propriétés name type et. Pour plus d'informations sur [... fields], consultez [... fields propriété].
Il est utilisé lors de la lecture de données, mais pas lors de l'écriture de données.

fields Propriété

Cette fields propriété répertorie les champs, également appelés colonnes, à sélectionner dans une source de données. Lors de la lecture d'un fichier au format « CSV » ou d'un fichier délimité, cette liste de champs définit les noms et les types des champs contenus dans le fichier. La disposition des valeurs dans le fichier doit correspondre exactement à la liste des champs. Chaque champ doit indiquer à la fois son nom et son type de données.

Les valeurs prises en charge pour type l'attribut dans fields sont les suivantes (les noms ne sont pas sensibles à la casse) : ARRAY, BIGINT, BINARY, BIT, BLOB, BOOLEAN, CHAR, CLOB, DATALINK, DATE, DECIMAL, DISTINCT, DOUBLE, FLOAT, INTEGER, JAVA_OBJECT, LONGNVARCHAR, LONGVARBINARY, LONGVARCHAR, NCHAR, NCLOB, NULL, NUMERIC, NVARCHAR, OTHER, REAL, REF, REF_CURSOR, ROWID, SMALLINT, SQLXML, STRUCT, TIME, TIME_WITH_TIMEZONE, TIMESTAMP, TIMESTAMP_WITH_TIMEZONE, TINYINT, VARBINARY, VARCHAR, VECTOR
Les valeurs de type l'attribut dans fields sont les noms utilisés par l' Flight service Lors de la lecture des données, ces types sont convertis en types de données utilisés dans l' Arrow Flight open source. Pour plus d'informations, consultez les sections « Types de données » et « Modèle de données en mémoire ». Par exemple, TINYINT est mappé sur int8() et BIGINT sur int64().

Cependant, avec certaines sources de données, par exemple lors de la lecture d'un fichier Parquet ou d'une table dans une base de données SQL externe, la liste des champs peut spécifier un sous-ensemble des colonnes à lire à partir de la source.

Flight service ne lira pas les autres chroniques. Par défaut, toutes les colonnes du tableau seraient récupérées. Chaque champ doit indiquer à la fois son nom et son type de données. Le type peut remplacer celui de la colonne dans la table externe. Par exemple, une colonne enregistrée sous la forme VARCHAR(10) peut être mappée à bigint dans Flight. Cette fields propriété n'est pas utilisée lors de l'écriture dans une base de données; à la place, Flight service utilise le schéma fourni dans do_put(...). L'exemple suivant montre comment utiliser la fields propriété en notation Python. Cependant, cette description s'applique également à R.

```json {: .codeblock}
    "fields": [{"name":"a","type":{"type":"bigint"}},
           {"name":"b","type":{"type":"varchar"}}
          ]
```
: La valeur de l'attribut « type » est un autre dictionnaire comportant un autre attribut « type ».

Si la fields propriété est fournie dans la requête de données, elle infer_schema est implicitement définie sur « false », car la fields propriété définit déjà les types de données.

:

Si vous utilisez pandas DataFrames et que vous souhaitez vérifier la correspondance entre les types de données dans Flight et pandas, consultez la section « Différences entre les types ».

Cette fields propriété indique le nom et le type de données d'une colonne, ainsi que d'autres détails. L'exemple suivant illustre la structure du fields modèle en notation Python. Cependant, cette description s'applique également à R.

{
    "name": "fieldname",
    "type": {
        "type": "typename",
        "length": L ,     # integer, depends on type
        "scale": S,       # integer depends on type, only numeric and decimal
        "signed": true or false   # for numeric types
    }
}

La combinaison de length et scale définit la précision et l'échelle d'un type de données numérique ou décimal.

Cette propriété signed détermine le type et l'étendue des valeurs considérées comme valides.

  • {"type":"TINYINT","signed":true} est mappé au type int8() dans Flight. Les valeurs valides sont -128 <= signed tinyint <= 127.
  • {"type":"TINYINT","signed":False} est mappé au type uint8() dans Flight. Les valeurs valides sont 0 <= unsigned tinyint <= 255. |

En savoir plus