Przejdź do głównej zawartości

Dobrze znane rozszerzenia Ossie

Każdy wpis custom_extensions[] Ossie niesie vendor_name + dowolny payload JSON data. Saiku rezerwuje slot vendor_name: SAIKU na małe typowane słownictwo, które napędza nadpisania wyświetlania, widoczność opartą na rolach i stopniowaną redakcję PII — wszystko z jednego bloba autorstwa administratora na polu / metryce / zbiorze danych.

Dostarczane w saiku v4.7 jako saiku#1409.

Trzy dobrze znane

Format pliku

Wszystkie trzy jadą pod pojedynczym wpisem rozszerzenia vendor_name: SAIKU. Wiele kluczy może współistnieć w jednym blobie:

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

Każdy klucz jest niezależnie opcjonalny. Blob z ustawionym tylko pii zachowuje się dokładnie jak dawny blob tylko-PII; pozostali konsumenci nic nie widzą i nic nie robią.

saiku.display — nadpisania prezentacji

custom_extensions:
- vendor_name: SAIKU
data: |
{
"display": {
"caption": "Net Revenue",
"format": "$#,##0.00",
"unit": "USD",
"hidden": false
}
}
KluczTypEfekt
captionstringNadpisuje etykietę pola / displayName metryki w odpowiedzi schemy AI. Wygrywa nad zmianami nazw <datasource>.generated.json.
formatstringWzorzec formatu liczb (składnia DecimalFormat), który workbench stosuje przy renderowaniu wartości.
unitstringDowolna wskazówka jednostki ("USD", "hours", "%"). Nakłada się na pole unit schemy.
hiddenbooleantrue usuwa pole / metrykę ze schemy AI całkowicie.

Hidden vs PII

saiku.roles — widoczność oparta na rolach

custom_extensions:
- vendor_name: SAIKU
data: |
{
"roles": {
"allow": ["ROLE_SALES", "ROLE_ANALYST"],
"deny": ["ROLE_EMBED_GUEST"]
}
}
KluczTypEfekt
allowstring[]Pusta / brakująca = dopuść wszystkich wywołujących. Niepusta = wywołujący musi mieć co najmniej jedną pasującą rolę.
denystring[]Nadpisuje allow. Wywołujący z jakąkolwiek zabronioną rolą traci dostęp.

Łańcuchy ról pasują do nazw uprawnień Spring Security (ROLE_ADMIN, ROLE_SALES itd.). Saiku nie dyktuje konwencji nazewnictwa poza tym — wybierz nazwy pasujące do dostawcy tożsamości twojego operatora.

saiku.pii — stopniowane PII

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

Rozszerza dawny boolean "pii": true w stopniowany kształt. Trzy poziomy:

PoziomZachowanie na drucieUżyj, gdy …
redactWartość to null. To samo co dawny boolean "pii": true.Cokolwiek wrażliwego, co nie może opuścić serwera.
maskWartość zastąpiona stałym tokenem (np. "***") zachowując kształt wiersza.Komórka musi być widocznie obecna, ale zasłonięta.
hashWartość to deterministyczny prefiks hex hashu z kluczem (zachowuje łączalność).Złączenia downstream potrzebują stabilnej wartości; oryginał jest tajny.

Wsteczna kompatybilność: "pii": true i "pii": {"level": "redact"} są równoważne — dawna forma zachowuje swoje dokładne znaczenie.

Reguły rozszerzalności

Zablokowane w v4.7 jako stabilny kontrakt:

  • Nieznane klucze wewnątrz bloba SAIKU przechodzą round-trip nietknięte. Przyszłe dobrze znane może zostać dostarczone w nowszym eksporterze bez żadnego skoordynowanego wydania — starsi konsumenci ignorują klucz zamiast błądzić.
  • Pierwszy wpis SAIKU wygrywa. Jeśli YAML deklaruje wiele wpisów vendor_name: SAIKU na tym samym obiekcie, pierwszy jest miarodajny, a reszta jest ignorowana. Scalanie między wpisami tworzyłoby niejednoznaczność kolejności.
  • Dostawcy nie-SAIKU przechodzą round-trip niezmienieni. vendor_name: DBT, vendor_name: PREFECT i blob dowolnego innego integratora przepływa przez tablicę customExtensions[] schemy AI jak autorzony.

Konwencja przestrzeni nazw

vendor_name: SAIKU jest zarezerwowany dla dobrze znanych autorstwa Saiku. Integratorzy zewnętrzni POWINNI używać własnych nazw dostawców, aby konsumenci downstream mogli rozróżniać źródła bez skoordynowanego nazewnictwa.

Gdzie się to ujawnia

Nakładki wpływają dziś w dwa miejsca:

  • Przeglądarka schemy w workbench — czyta DTO bezpośrednio, więc caption / format / unit wyświetlania renderują się w drzewie i inspektorze.
  • Schema AI Ossie (GET /ai/ossie/schema/…) — ukryte pola i metryki znikają; caption + unit wyświetlania nakładają się na etykiety, które widzi LLM.

Dokąd dalej