Zum Inhalt springen

Tutorial: Dein erster Build

In diesem Tutorial erstellst du einen Tenant, schreibst ein Signal, baust einen Knowledge Store (KLS) und erkundest die Ergebnisse im Browser. Kein Domain Pack noetig — du baust alles von Grund auf.

Zeit: 15 Minuten Voraussetzungen: jinflow installiert (Schnellstart)

Ein Tenant ist dein analytischer Arbeitsbereich — er haelt deine Daten, Instrumente und Build-Ausgabe.

Terminal-Fenster
jinflow init --tenant my_first_analysis --source-system opale

Dies erstellt eine Verzeichnisstruktur:

~/.jinflow/live/default/my_first_analysis/
afs/ ← deine Instrumente kommen hierhin
raw/ ← deine Quell-CSVs kommen hierhin
build/ ← Intermediäre (verwaltet von jinflow)
store/ ← KLS-Ausgabe (verwaltet von jinflow)

Setze ihn als Standard, damit du nicht jedes Mal --tenant eingeben musst:

Terminal-Fenster
jinflow us --tenant default.my_first_analysis

Lege CSV-Dateien im raw/-Verzeichnis ab. Fuer dieses Tutorial erstelle einen minimalen Datensatz:

Terminal-Fenster
# Finde das raw-Verzeichnis deines Tenants
jinflow us
# Suche nach "Live Root" in der Ausgabe, dann navigiere zu:
# {live_root}/default/my_first_analysis/raw/opale/csv/

Erstelle eine Datei cases.csv:

case_id,case_type,admission_date,discharge_date,cost_center_id,status
CASE_001,inpatient,2025-01-15,2025-01-20,CC_OR1,closed
CASE_002,outpatient,2025-01-16,,CC_ER,open
CASE_003,inpatient,2025-01-17,2025-01-25,CC_OR1,closed
CASE_004,day_case,2025-01-18,2025-01-18,CC_DAY,closed
CASE_005,inpatient,2025-01-19,2025-01-22,CC_OR2,closed

Und eine Datei billing_events.csv:

billing_id,case_id,material_id,quantity,unit_price,billing_date,status
BILL_001,CASE_001,MAT_A,2,150.00,2025-01-20,posted
BILL_002,CASE_001,MAT_B,1,500.00,2025-01-20,posted
BILL_003,CASE_003,MAT_A,3,150.00,2025-01-25,posted
BILL_004,CASE_005,MAT_C,1,2000.00,2025-01-22,pending

Beachte: CASE_002 und CASE_004 haben keine Abrechnungsereignisse. Das ist die Anomalie, die dein Signal erkennen wird.

Erstelle eine Datei in deinem AFS unter afs/probes/probe_unbilled_cases.yaml:

probe_id: probe_unbilled_cases
version: "1.0.0"
contract: "gold.v1"
type: mandatory_item
severity: high
description: "Detect cases that have no billing events"
scope:
entity_type: Case
group_by: [case_id]
time:
entity: Case
field: admission_date
bucket: month
qualifying:
entity: Case
join_key: case_id
required:
entity: BillingEvent
join_key: case_id
min_count: 1
money_at_risk_fixed: 500

Dieses Signal sagt: “Fuer jeden Fall sollte es mindestens ein Abrechnungsereignis geben. Markiere die, die keines haben.”

Terminal-Fenster
jinflow make

jinflow wird:

  1. Deine CSVs validieren
  2. Dein Signal-YAML zu SQL kompilieren
  3. dbt ausfuehren (Bronze → Silver → Gold → Signals)
  4. Den KLS stempeln

Beobachte die Ausgabe — du solltest sehen wie dein Signal kompiliert und gebaut wird.

Terminal-Fenster
jinflow explore

Dies oeffnet den Explorer in deinem Browser auf localhost:4000. Navigiere zu:

  • Signals — du wirst probe_unbilled_cases gelistet sehen
  • Findings — du wirst Findings fuer CASE_002 und CASE_004 (die nicht abgerechneten Faelle) sehen, jeweils mit severity high und money_at_risk 500

Versuche jetzt dein Signal zu aendern. Oeffne afs/probes/probe_unbilled_cases.yaml und aendere severity: high zu severity: medium. Dann:

Terminal-Fenster
jinflow make

Aktualisiere den Explorer — die Findings zeigen jetzt medium severity. Das ist der make → explore → evolve Zyklus, der alle jinflow-Arbeit antreibt.

Zufrieden mit deiner Analyse? Friere sie ein:

Terminal-Fenster
jinflow make --snapshot first-analysis

Dies erstellt eine unveraenderliche Kopie deines KLS. Du kannst jederzeit zurueckkehren:

Terminal-Fenster
jinflow explore --snapshot first-analysis
  • Ein Tenant ist dein analytischer Arbeitsbereich
  • Signals sind YAML-Dateien, die diagnostische Abfragen definieren
  • jinflow make kompiliert YAML → SQL → DuckDB
  • jinflow explore stellt die Ergebnisse in einer Web-UI bereit
  • Snapshots frieren deine Arbeit fuer zukuenftige Referenz ein
jazzisnow jinflow is a jazzisnow product
v0.45.1 · built 2026-04-17 08:14 UTC