Sources de données
Parcourir la base de données qu’une source de données installée lit, et vérifier des manifestes de source de données, par deux opérations en lecture seule
Deux opérations en lecture seule travaillent avec les sources de données de
votre organisation. data.sources.browse liste ce que contient la base de
données qu’une source de données de requête installée lit : ses schémas, les
tables d’un schéma ou les colonnes d’une table. Elle renvoie des noms et des
types, jamais une ligne. data.sources.connectorProfiles vérifie des
manifestes de source de données : elle compile les manifestes que vous envoyez
et liste ce qui ne va pas dans chacun de ceux qui ne compilent pas.
import { createHttpPlatformTransport, createScrydonSDK } from '@scrydon/sdk/platform'
const platform = createScrydonSDK(
createHttpPlatformTransport({
baseUrl: 'https://scrydon.com',
headers: () => ({ authorization: `Bearer ${accessToken}` }),
})
)
const schemas = await platform.data.sources.browse({
sourceId: 'orders-db',
connectionRef: connectionId,
browse: { level: 'schemas' },
})
const { profiles, refusals } = await platform.data.sources.connectorProfiles({
sources: [{ sourceId: 'draft', manifestSnapshot: manifest }],
})| Opération | HTTP | Ce qu’elle fait |
|---|---|---|
data.sources.browse | POST /api/platform/v1/data/sources/browse | Liste un niveau de la base de données qu’une source de données de requête installée lit. |
data.sources.connectorProfiles | POST /api/platform/v1/data/sources/connector-profiles | Compile des manifestes de source de données en profils de connecteur, et liste chaque manifeste qui ne compile pas. |
Par HTTP, les deux demandent le scope tables:read. Elles sont en lecture
seule et peuvent être relancées sans risque.
Dans un workflow, sélectionnez les outils Scrydon Browse data source
database et Check data source manifests parmi les outils d’un bloc Agent.
Dans un outil Scrydon, les mêmes opérations sont ctx.data.sources.browse et
ctx.data.sources.connectorProfiles. Cortex exécute les deux outils sans
demander d’approbation, car ils ne font que lire. Sur ce chemin, aucun scope
par opération n’est vérifié : ce qu’un parcours peut atteindre est fixé par
l’autorisation de l’exécution, par l’usage de la connexion par la personne
(vérifié quand l’exécution agit pour une personne), et par la source de données
configurée pour lire par cette connexion.
Parcourir
| Champ | Type | Signification |
|---|---|---|
sourceId | chaîne, 1 à 256 caractères | La source de données installée. |
connectionRef | chaîne, 1 à 256 caractères | La connexion par laquelle la source de données lit. |
browse | objet | Ce qu’il faut lister : voir ci-dessous. |
browse.level choisit ce qui est listé :
level | Autres champs | Renvoie |
|---|---|---|
schemas | cursor, limit (facultatifs) | schemas : chacun avec name et selectable, plus nextCursor. |
tables | schemaName, et facultativement cursor et limit | tables : chacune avec name, selectable, selected, rowCountEstimate, primaryKey, classification et, pour une table dont les colonnes ressemblent à des données personnelles, personalData. Plus nextCursor. |
columns | schemaName, tableName | columns : chacune avec name, type, nullable, selectable et, si elle ressemble à des données personnelles, personalData. Plus selected, classification, primaryKey de la table, et truncated. |
- Les noms arrivent par pages.
limitva de 1 à 500, 100 par défaut. Pour lire la page suivante, passez lenextCursorde la page précédente commecursor. UnnextCursorànullsignifie qu’il n’y a pas de page suivante. - Un nom de schéma ou de table est en minuscules. C’est une lettre ou
_, puis jusqu’à 62 lettres, chiffres ou_: les noms qu’un manifeste de source de données peut sélectionner. rowCountEstimateest la statistique du moteur de base de données, pas un comptage. Il vautnulllà où le moteur n’en expose pas.- Les données personnelles sont jugées sur les noms et les types. Aucune ligne n’est lue pour en décider.
La lecture s’exécute en tant que la personne qui l’appelle, dans l’environnement d’espace de travail où l’appel est fait. La personne doit être autorisée à utiliser la connexion. La source de données doit être installée dans cet environnement d’espace de travail et configurée pour lire par cette connexion.
Vérifier des manifestes
| Champ | Type | Signification |
|---|---|---|
sources | tableau, au plus 2 000 | Chaque entrée est { sourceId, manifestSnapshot }. sourceId (1 à 256 caractères) nomme le manifeste dans le résultat, et manifestSnapshot est le manifeste. |
Le résultat est { profiles, refusals }.
profilesa une entrée par profil de connecteur distinct. SonsourceIdsliste chaque manifeste qui a compilé vers lui.profileporte laversionet lesdigestsdu profil, etlineageliste d’où la valeur de chaque colonne est lue.refusalsa une entrée par manifeste qui n’a pas compilé, avec sonsourceIdet unereason:invalid_manifest,incoherent_profileouunpinned_format.issuesliste jusqu’à 100 problèmes, chacun avec lepathdu champ et unmessage.issuesTruncatedvauttruequand il y en avait davantage.
L’opération ne lit rien de votre organisation. Elle compile seulement les manifestes que vous envoyez.
@scrydon/sdk/platform exporte les bornes (DATA_SOURCE_BROWSE_LIMITS,
CONNECTOR_PROFILES_LIST_LIMITS) et les niveaux (DATA_SOURCE_BROWSE_LEVEL).
Les champs inconnus, y compris un champ d’organisation ou d’espace de travail,
sont refusés.
Erreurs
| Code | Quand |
|---|---|
INVALID_REQUEST | L’entrée n’a pas passé la validation. Un parcours a été fait sans environnement d’espace de travail. La source de données ne lit pas par cette connexion. |
FORBIDDEN | La personne n’est pas autorisée à utiliser la connexion ; le refus est écrit dans le journal d’audit. Ou la source de données n’est pas installée dans cet environnement d’espace de travail. |
CAPABILITY_NOT_CONFIGURED | La source de données est encore en train de se connecter à sa base de données. |
RATE_LIMITED | La base de données est occupée par d’autres lectures. Réessayez. |
PROVIDER_UNAVAILABLE | La base de données n’a pas répondu, ou l’accès de la personne n’a pas pu être vérifié. |
INTERNAL_ERROR | Le refus n’a pas pu être enregistré. |