Aller au contenu

Extensions Ossie bien connues

Chaque entrée custom_extensions[] d’Ossie porte un vendor_name + une charge utile JSON data en forme libre. Saiku réserve l’emplacement vendor_name: SAIKU pour un petit vocabulaire typé qui pilote les surcharges d’affichage, la visibilité basée sur les rôles et le caviardage PII gradué — le tout depuis un unique blob créé par l’administrateur sur le field / la métrique / le dataset.

Livré dans saiku v4.7 sous saiku#1409.

Les trois well-knowns

Format de fichier

Les trois voyagent sous une unique entrée d’extension vendor_name: SAIKU. Plusieurs clés peuvent coexister dans un seul blob :

pharma.ossie.yaml
datasets:
- name: fact_pharma
source: FACT_PHARMA
fields:
- name: NETREVENUE
expression:
dialects: [{ dialect: ANSI_SQL, expression: NETREVENUE }]
custom_extensions:
- vendor_name: SAIKU
data: |
{
"display": {
"caption": "Net Revenue",
"format": "$#,##0.00",
"unit": "USD"
},
"roles": {
"allow": ["ROLE_SALES", "ROLE_ANALYST"]
},
"pii": {
"level": "redact"
}
}

Chaque clé est indépendamment optionnelle. Un blob avec seulement pii défini se comporte exactement comme le blob historique PII-uniquement ; les autres consommateurs ne voient rien et ne font rien.

saiku.display — surcharges de présentation

custom_extensions:
- vendor_name: SAIKU
data: |
{
"display": {
"caption": "Net Revenue",
"format": "$#,##0.00",
"unit": "USD",
"hidden": false
}
}
CléTypeEffet
captionstringSurcharge le libellé du field / le displayName de la métrique dans la réponse du schéma IA. L’emporte sur les renommages <datasource>.generated.json.
formatstringMotif de format numérique (syntaxe DecimalFormat) que le workbench applique lors du rendu des valeurs.
unitstringIndice d’unité en forme libre ("USD", "hours", "%"). Se superpose au champ unit du schéma.
hiddenbooleantrue retire entièrement le field / la métrique du schéma IA.

Hidden vs PII

saiku.roles — visibilité basée sur les rôles

custom_extensions:
- vendor_name: SAIKU
data: |
{
"roles": {
"allow": ["ROLE_SALES", "ROLE_ANALYST"],
"deny": ["ROLE_EMBED_GUEST"]
}
}
CléTypeEffet
allowstring[]Vide / absent = autorise tous les appelants. Non vide = l’appelant doit détenir au moins un rôle correspondant.
denystring[]L’emporte sur allow. Un appelant avec un rôle refusé perd l’accès.

Les chaînes de rôle correspondent aux noms d’autorité de Spring Security (ROLE_ADMIN, ROLE_SALES, etc.). Saiku ne dicte pas de convention de nommage au-delà de cela — choisissez des noms qui correspondent au fournisseur d’identité de votre opérateur.

saiku.pii — PII gradué

custom_extensions:
- vendor_name: SAIKU
data: '{"pii":{"level":"hash"}}'

Étend le booléen historique "pii": true en une forme graduée. Trois niveaux :

NiveauComportement sur le wireÀ utiliser quand …
redactLa valeur est null. Identique au booléen historique "pii": true.Tout ce qui est sensible et ne doit pas quitter le serveur.
maskLa valeur est remplacée par un jeton fixe (par ex. "***") préservant la forme de ligne.La cellule doit être visiblement présente mais obscurcie.
hashLa valeur est un préfixe hex de hachage à clé déterministe (préserve la joignabilité).Les joins en aval ont besoin d’une valeur stable ; l’original est secret.

Rétrocompatibilité : "pii": true et "pii": {"level": "redact"} sont équivalents — la forme historique garde son sens exact.

Règles d’extensibilité

Verrouillées en v4.7 comme un contrat stable :

  • Les clés inconnues au sein du blob SAIKU font un round-trip intact. Un futur well-known peut être livré dans un exporteur plus récent sans aucune release coordonnée — les consommateurs plus anciens ignorent la clé plutôt que d’échouer.
  • La première entrée SAIKU l’emporte. Si un YAML déclare plusieurs entrées vendor_name: SAIKU sur le même objet, la première fait autorité et les autres sont ignorées. La fusion inter-entrées créerait une ambiguïté d’ordonnancement.
  • Les fournisseurs non-SAIKU font un round-trip inchangé. vendor_name: DBT, vendor_name: PREFECT et le blob de tout autre intégrateur circule à travers le tableau customExtensions[] du schéma IA tel qu’il a été créé.

Convention d’espace de noms

vendor_name: SAIKU est réservé aux well-knowns créés par Saiku. Les intégrateurs tiers DEVRAIENT utiliser leurs propres noms de fournisseur pour que les consommateurs en aval puissent distinguer les sources sans nommage coordonné.

Où cela apparaît

Les surcouches circulent aujourd’hui vers deux endroits :

  • Navigateur de schéma du workbench — lit le DTO directement, donc la caption / le format / l’unité d’affichage s’affichent dans l’arbre et l’inspecteur.
  • Schéma IA Ossie (GET /ai/ossie/schema/…) — les fields et métriques cachés disparaissent ; la caption + l’unité d’affichage surchargent les libellés que le LLM voit.

Où aller ensuite