Schema-CLI
Das mondrian-schema-Skript umhüllt das Java-Tool mondrian.schema.yaml.SchemaCli, sodass Sie sich keine lange mvn exec:java-Beschwörung merken müssen. Verwenden Sie es, um bestehende XML-Schemas in YAML zu konvertieren, YAML für das Deployment zurück in XML zu konvertieren oder eine Schema-Datei zu validieren, bevor Sie sie in Saiku speichern.
Befehle
to-yaml — XML zu YAML konvertieren
./scripts/mondrian-schema to-yaml <input.xml> [-o output.yaml]Liest ein Mondrian-4-XML-Schema und schreibt die äquivalente YAML-Darstellung. Wenn -o weggelassen wird, wird das YAML nach stdout geschrieben.
Beispiel — FoodMart konvertieren:
./scripts/mondrian-schema to-yaml demo/FoodMart.mondrian.xml -o demo/FoodMart.yamlBeispiel — Vorschau ohne Speichern:
./scripts/mondrian-schema to-yaml demo/FoodMart.mondrian.xml | head -40to-xml — YAML zu XML konvertieren
./scripts/mondrian-schema to-xml <input.yaml> [-o output.xml]Liest ein Mondrian-4-YAML-Schema und schreibt die äquivalente XML. Wenn -o weggelassen wird, wird die XML nach stdout geschrieben. Dies ist dieselbe Konvertierung, die die Saiku-Engine zur Laufzeit automatisch ausführt — sie manuell auszuführen ist nützlich, um die Ausgabe vor dem Deployment zu inspizieren oder zu einem XML-nativen Toolchain zurück zu migrieren.
Beispiel — zurück zu XML konvertieren:
./scripts/mondrian-schema to-xml demo/FoodMart.yaml -o FoodMart-generated.xmlBeispiel — durch ein Diff pipen, um die Round-Trip-Treue zu verifizieren:
./scripts/mondrian-schema to-xml demo/FoodMart.yaml | diff demo/FoodMart.mondrian.xml -lint — eine Schema-Datei validieren
./scripts/mondrian-schema lint <input.{yaml,xml}>Parst und validiert eine Schema-Datei — entweder YAML oder XML. Fehler und Warnungen werden nach stderr geschrieben. Bei Erfolg beendet sich der Befehl still mit Code 0.
Beispiel — ein YAML-Schema linten:
./scripts/mondrian-schema lint demo/FoodMart.yamlBeispiel — ein XML-Schema linten:
./scripts/mondrian-schema lint demo/FoodMart.mondrian.xmlExit-Codes
| Code | Bedeutung |
|---|---|
0 | Erfolg — keine Fehler |
1 | Falsche Argumente oder fehlende Eingabedatei |
2 | Parse- oder Validierungsfehler — Diagnose in stderr geschrieben |
Diese Codes sind für die Verwendung in CI-Pipelines und Pre-Save-Hooks geeignet.
Typische Workflows
-
Konvertieren Sie Ihr bestehendes XML-Schema in YAML:
Terminal-Fenster ./scripts/mondrian-schema to-yaml my-schema.xml -o my-schema.yaml -
Linten Sie das YAML, um zu bestätigen, dass es gültig ist:
Terminal-Fenster ./scripts/mondrian-schema lint my-schema.yaml -
Überprüfen und annotieren Sie
my-schema.yamlmit Kommentaren, dann laden Sie es über die Schemas-Seite zu Saiku hoch.
-
Erstellen oder bearbeiten Sie Ihr YAML-Schema lokal.
-
Führen Sie lint aus, um Fehler vor dem Hochladen zu erkennen:
Terminal-Fenster ./scripts/mondrian-schema lint my-schema.yamlEin
0-Exit-Code bedeutet, dass das Schema sauber geparst wurde. Etwaige Fehler erscheinen auf stderr mit einem Zeilenverweis. -
Wenn Sie XML an ein externes Tool bereitstellen müssen (z. B. einen Legacy-Reporting-Client), konvertieren Sie bei Bedarf:
Terminal-Fenster ./scripts/mondrian-schema to-xml my-schema.yaml -o my-schema.xml
Fügen Sie einen Lint-Schritt zu Ihrer CI-Pipeline hinzu, um Schema-Fehler zu erkennen, bevor sie die Produktion erreichen:
# In .github/workflows/ci.yml oder äquivalent- name: Lint Mondrian schemas run: | for f in schemas/*.yaml; do ./scripts/mondrian-schema lint "$f" doneDas Skript beendet sich bei jedem Parse- oder Validierungsfehler mit Code 2, was den CI-Job automatisch fehlschlagen lässt.
Voraussetzungen
Das Skript benötigt:
- Java — verfügbar auf
$PATH(gleiche JVM-Version, die zum Bauen des Projekts verwendet wird) - Maven — für den einmaligen Classpath-Build; nicht erforderlich, nachdem der Cache existiert
- Das
mondrian-saiku-Repository lokal ausgecheckt (das Skript ist Teil dieses Repos, kein eigenständiges Binary)
Verwandt
- YAML-Schemas — die vollständige YAML-Element-Referenz.
- Schemas — Schemas im Saiku-Dashboard hochladen und verwalten.
- Schema-Designer — ein Schema aus einer Natural-Language-Beschreibung generieren.