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:
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 } }| Klucz | Typ | Efekt |
|---|---|---|
caption | string | Nadpisuje etykietę pola / displayName metryki w odpowiedzi schemy AI. Wygrywa nad zmianami nazw <datasource>.generated.json. |
format | string | Wzorzec formatu liczb (składnia DecimalFormat), który workbench stosuje przy renderowaniu wartości. |
unit | string | Dowolna wskazówka jednostki ("USD", "hours", "%"). Nakłada się na pole unit schemy. |
hidden | boolean | true 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"] } }| Klucz | Typ | Efekt |
|---|---|---|
allow | string[] | Pusta / brakująca = dopuść wszystkich wywołujących. Niepusta = wywołujący musi mieć co najmniej jedną pasującą rolę. |
deny | string[] | 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:
| Poziom | Zachowanie na drucie | Użyj, gdy … |
|---|---|---|
redact | Wartość to null. To samo co dawny boolean "pii": true. | Cokolwiek wrażliwego, co nie może opuścić serwera. |
mask | Wartość zastąpiona stałym tokenem (np. "***") zachowując kształt wiersza. | Komórka musi być widocznie obecna, ale zasłonięta. |
hash | Wartość 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: SAIKUna 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: PREFECTi 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.