Zum Inhalt springen

Wohlbekannte Ossie-Extensions

Jeder Ossie-custom_extensions[]-Eintrag trägt einen vendor_name + eine freiformige JSON-data-Payload. Saiku reserviert den vendor_name: SAIKU-Slot für ein kleines typisiertes Vokabular, das Anzeige-Overrides, rollenbasierte Sichtbarkeit und gestufte PII-Redaktion antreibt — alles aus einem einzigen von Admins verfassten Blob auf dem Feld / der Metrik / dem Dataset.

Ausgeliefert in saiku v4.7 als saiku#1409.

Die drei Well-Knowns

Dateiformat

Alle drei reiten unter einem einzigen vendor_name: SAIKU-Extension-Eintrag. Mehrere Schlüssel können in einem Blob koexistieren:

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"
}
}

Jeder Schlüssel ist unabhängig optional. Ein Blob mit nur gesetztem pii verhält sich genau wie der Legacy-PII-only-Blob; die anderen Konsumenten sehen nichts und tun nichts.

saiku.display — Präsentations-Overrides

custom_extensions:
- vendor_name: SAIKU
data: |
{
"display": {
"caption": "Net Revenue",
"format": "$#,##0.00",
"unit": "USD",
"hidden": false
}
}
SchlüsselTypWirkung
captionstringÜberschreibt das Feld-Label / den Metrik-displayName in der AI-Schema-Antwort. Gewinnt über <datasource>.generated.json-Renames.
formatstringZahlenformat-Muster (DecimalFormat-Syntax), das der Workbench beim Rendern von Werten anwendet.
unitstringFreiformiger Einheiten-Hinweis ("USD", "hours", "%"). Schichtet auf das unit-Feld des Schemas.
hiddenbooleantrue entfernt das Feld / die Metrik vollständig aus dem AI-Schema.

Hidden vs PII

saiku.roles — rollenbasierte Sichtbarkeit

custom_extensions:
- vendor_name: SAIKU
data: |
{
"roles": {
"allow": ["ROLE_SALES", "ROLE_ANALYST"],
"deny": ["ROLE_EMBED_GUEST"]
}
}
SchlüsselTypWirkung
allowstring[]Leer / fehlend = alle Aufrufer erlauben. Nicht-leer = Aufrufer muss mindestens eine passende Rolle halten.
denystring[]Überschreibt allow. Ein Aufrufer mit irgendeiner verweigerten Rolle verliert Zugriff.

Rollen-Strings entsprechen den Authority-Namen von Spring Security (ROLE_ADMIN, ROLE_SALES, etc.). Saiku diktiert darüber hinaus keine Namenskonvention — wählen Sie Namen, die zum Identity-Provider Ihres Operators passen.

saiku.pii — gestuftes PII

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

Erweitert das Legacy-"pii": true-Boolean in eine gestufte Form. Drei Level:

LevelWire-VerhaltenVerwenden, wenn …
redactWert ist null. Gleich wie das Legacy-"pii": true-Boolean.Alles Sensible, das den Server nicht verlassen darf.
maskWert wird durch ein festes Token ersetzt (z. B. "***"), Row-Shape bleibt.Zelle muss sichtbar präsent, aber verschleiert sein.
hashWert ist ein deterministisches keyed-Hash-Hex-Präfix (bewahrt Joinbarkeit).Nachgelagerte Joins brauchen einen stabilen Wert; das Original ist geheim.

Abwärtskompatibilität: "pii": true und "pii": {"level": "redact"} sind äquivalent — die Legacy-Form behält ihre exakte Bedeutung.

Erweiterbarkeitsregeln

In v4.7 als stabiler Vertrag festgelegt:

  • Unbekannte Schlüssel innerhalb des SAIKU-Blobs durchlaufen den Round-Trip unangetastet. Ein zukünftiger Well-Known kann in einem neueren Exporter ausgeliefert werden, ohne koordinierten Release — ältere Konsumenten ignorieren den Schlüssel, statt zu erroren.
  • Der erste SAIKU-Eintrag gewinnt. Wenn ein YAML mehrere vendor_name: SAIKU-Einträge auf demselben Objekt deklariert, ist der erste maßgeblich und der Rest wird ignoriert. Cross-Entry-Merging würde Ordnungsmehrdeutigkeit erzeugen.
  • Nicht-SAIKU-Vendoren durchlaufen den Round-Trip unverändert. vendor_name: DBT, vendor_name: PREFECT und der Blob jedes anderen Integrators fließen wie verfasst durch das AI-Schema-customExtensions[]-Array.

Namespace-Konvention

vendor_name: SAIKU ist für Saiku-verfasste Well-Knowns reserviert. Drittanbieter-Integratoren SOLLTEN ihre eigenen Vendor-Namen verwenden, sodass nachgelagerte Konsumenten Quellen ohne koordinierte Benennung unterscheiden können.

Wo es sichtbar wird

Die Overlays fließen heute an zwei Stellen:

  • Workbench-Schema-Browser — liest das DTO direkt, sodass die Anzeige-Caption / -Format / -Unit im Baum und Inspector rendern.
  • AI-Ossie-Schema (GET /ai/ossie/schema/…) — versteckte Felder und Metriken verschwinden; Anzeige-Caption + -Unit überlagern die Labels, die das LLM sieht.

Wohin als Nächstes