Mit der timr REST API holt Power BI Ihre Projektzeiten, Arbeitszeiten und Stammdaten selbst ab und hält sie automatisch aktuell. Sie richten dafür einmalig sechs vorbereitete Abfragen ein. Das dauert etwa 15 Minuten. Danach erstellen Sie Ihre Auswertungen selbst.
Diese Anleitung beschreibt die Einrichtung im Browser (Power BI Service) sowie für Power BI Desktop.
Die Menübegriffe stehen auf Englisch, die deutsche Bezeichnung in Klammern.
1. Was Sie brauchen
- Administratorrechte in timr, um einen API-Zugang anzulegen
- Eine Power BI Pro- oder Premium-Per-User-Lizenz
- Einen Arbeitsbereich (Workspace) mit Pro- oder PPU-Lizenz. „My workspace" (Mein Arbeitsbereich) funktioniert dafür nicht.
- Die sechs Abfrage-Dateien aus dem Paket:
| Datei | Wird zu Abfrage | Inhalt |
|---|---|---|
1-timrGet.pq |
timrGet | Hilfsfunktion für Anmeldung und Datenabruf (wird nicht als Tabelle geladen) |
2-ProjectTimes.pq |
ProjectTimes | Projektzeiten: Mitarbeiter, Aufgabe inkl. Pfad, Start/Ende, Minuten und Stunden (netto und gerundet), verrechenbar, Status, Notizen |
3-WorkingTimes.pq |
WorkingTimes | Arbeitszeiten und Abwesenheiten: Mitarbeiter, Arbeitszeittyp, Start/Ende, Minuten und Stunden |
4-Users.pq |
Users | Mitarbeiter: Name, E-Mail, Personalnummer, Ein- und Austrittsdatum |
5-Tasks.pq |
Tasks | Aufgabenbaum: Name, Pfad, übergeordnete Aufgabe, verrechenbar, Budget, Zusatzfelder |
6-WorkingTimeTypes.pq |
WorkingTimeTypes | Arbeitszeittypen mit Kategorie (Anwesenheit, Urlaub, Zeitausgleich usw.) |
Sie brauchen nur Projektzeiten? Dann reichen timrGet und ProjectTimes. Für die Auswertung nach Aufgaben oder Mitarbeitern empfehlen wir zusätzlich Tasks und Users.
2. API-Zugang in timr anlegen
- Öffnen Sie in timr Administration → Einstellungen → Integrationen.
- Klicken Sie unter API Credentials auf + Hinzufügen.
- Vergeben Sie einen Namen, z. B. „Power BI", und wählen Sie als Grant Type Client Credentials.
- Speichern Sie. timr zeigt jetzt die Client ID und das Client Secret an.
Die vollständige Anleitung finden sie hier unter 1. REST-API.
3. Einrichtung in Power BI Web-Version
3.1. Semantisches Modell anlegen
- Öffnen Sie app.powerbi.com und wechseln Sie in Ihren Arbeitsbereich.
- Klicken Sie auf + New item (+ Neues Element) und wählen Sie Semantic model (Semantisches Modell).
- Wählen Sie im Fenster Get data (Daten abrufen) den Eintrag Blank query (Leere Abfrage). Power Query öffnet sich.
Fehlt der Eintrag „Semantic model"? Dann ist die Bearbeitung im Browser in Ihrer Organisation deaktiviert. Ihr Power-BI-Administrator kann sie im Admin-Portal mit der Einstellung „Users can edit data models in the Power BI service" freischalten. Alternativ nutzen Sie Power BI Desktop.
3.2. Parameter anlegen
- Klicken Sie auf Home → Manage parameters → New parameter (Start → Parameter verwalten → Neuer Parameter).
- Legen Sie diese drei Parameter an. Schreiben Sie die Namen genau so, denn die Abfragen verweisen darauf.
| Name | Type (Typ) | Current value (Aktueller Wert) |
|---|---|---|
timrClientId |
Text | Client ID aus Schritt 1 |
timrClientSecret |
Text | Client Secret aus Schritt 1 |
timrStartDate |
Date (Datum) | Ab diesem Tag werden Zeiten geladen. Wählen Sie das Datum über den Kalender aus. |
- Klicken Sie auf OK.
3.3. Die Abfragen einfügen
Wiederholen Sie diese Schritte für jede Datei, in der Reihenfolge der Nummern. Beginnen Sie mit 1-timrGet.pq, denn alle anderen Abfragen nutzen diese Funktion.
-
Nur bei
1-timrGet.pq: Klicken Sie links in der Abfrageliste auf die leere Abfrage aus Schritt 2.Bei allen weiteren Dateien: Home → Get data → Blank query (Start → Daten abrufen → Leere Abfrage).
- Home → Advanced editor (Start → Erweiterter Editor).
- Löschen Sie den vorhandenen Text. Öffnen Sie die .pq-Datei mit einem Texteditor, kopieren Sie den gesamten Inhalt und fügen Sie ihn ein. Klicken Sie auf OK.
- Benennen Sie die Abfrage rechts unter Query settings → Name (Abfrageeinstellungen → Name) um, genau wie in der Tabelle oben angegeben, z. B.
timrGet.
Danach nur bei timrGet: Rechtsklick in der Abfrageliste → Enable load (Laden aktivieren) ausschalten. timrGet ist ein Hilfsbaustein und keine Tabelle. Dass timrGet selbst keine Daten anzeigt, sondern ein Eingabeformular, ist richtig so.
3.4. Verbindung bestätigen
Power Query meldet jetzt, dass Anmeldeinformationen fehlen („invalid or missing credentials"). Das ist erwartet. Sie richten die Verbindung für genau zwei Adressen ein, jeweils mit denselben Werten.
- Klicken Sie auf Configure connection (Verbindung konfigurieren).
- Stellen Sie im Dialog ein:
| Feld | Beim 1. Mal | Beim 2. Mal |
|---|---|---|
| Connection path / URL (Verbindungspfad / URL) | https://system.timr.com |
https://api.timr.com |
| Authentication kind (Authentifizierungsart) | Anonymous (Anonym) | Anonymous (Anonym) |
| Privacy level (Datenschutzebene) | Organizational (Organisation) | Organizational (Organisation) |
- Klicken Sie auf Connect (Verbinden). Fragt Power Query danach nach der zweiten Adresse, wiederholen Sie den Dialog mit den Werten aus der Spalte „Beim 2. Mal".
„Anonymous" ist hier richtig. Die eigentliche Anmeldung erledigt die Abfrage selbst mit Client ID und Secret aus Ihren Parametern.
Klicken Sie auf ProjectTimes. In der Vorschau sollten jetzt Ihre Projektzeiten erscheinen.
Laufende oder pausierte Buchungen werden nicht geladen, weil sie noch keine endgültige Dauer haben. Uhrzeiten erscheinen so, wie sie erfasst wurden, also in der Ortszeit der Buchung.
3.5. Speichern
- Klicken Sie unten rechts auf Save (Speichern) bzw. Create (Erstellen).
- Geben Sie dem Modell einen Namen, z. B. „timr", und wählen Sie Ihren Arbeitsbereich.
Power BI lädt die Daten und öffnet anschließend das Modell.
3.6. Datenmodell einrichten
Öffnet sich das Modell nicht direkt im Bearbeitungsmodus, klicken Sie oben auf Open data model (Datenmodell öffnen) bzw. schalten Sie auf Editing (Bearbeiten) um.
Beziehungen
Verbinden Sie in der Modellansicht die Spalten per Drag & Drop, jeweils als „viele zu eins" (Many to one):
-
ProjectTimes[user_id]→Users[user_id] -
ProjectTimes[task_id]→Tasks[task_id] -
WorkingTimes[user_id]→Users[user_id] -
WorkingTimes[working_time_type_id]→WorkingTimeTypes[working_time_type_id]
Oft erkennt Power BI diese Beziehungen schon selbst.
Kalendertabelle
Klicken Sie auf New table (Neue Tabelle) und fügen Sie ein:
Kalender =
ADDCOLUMNS (
CALENDARAUTO (),
"Jahr", YEAR ( [Date] ),
"Monat", FORMAT ( [Date], "YYYY-MM" ),
"KW", WEEKNUM ( [Date], 21 ),
"Wochentag", FORMAT ( [Date], "dddd" )
)Verbinden Sie anschließend ProjectTimes[date] und WorkingTimes[date] mit Kalender[Date].
Beispiel-Measures
Über New measure (Neues Measure):
Projektstunden = SUM ( ProjectTimes[hours] )
Projektstunden verrechenbar = CALCULATE ( [Projektstunden], ProjectTimes[billable] = TRUE () )
Verrechenbarkeitsquote = DIVIDE ( [Projektstunden verrechenbar], [Projektstunden] )
Anwesenheitsstunden = CALCULATE ( SUM ( WorkingTimes[hours] ), WorkingTimeTypes[category] = "attendance_time" )
Für Auswertungen nach Abrechnung verwenden Sie statt hours die Spalte hours_rounded. Sie enthält die Stunden nach der Rundungsregel, die in timr eingestellt ist.
Ihre Berichte erstellen Sie über Create report (Bericht erstellen) direkt auf diesem Modell.
3.7. Automatisch aktualisieren
- Klicken Sie im Arbeitsbereich beim semantischen Modell auf ⋯ → Settings (⋯ → Einstellungen).
- Öffnen Sie Refresh (Aktualisierung), aktivieren Sie die geplante Aktualisierung und legen Sie die Uhrzeiten fest. Mit Power BI Pro sind bis zu 8 Aktualisierungen pro Tag möglich.
- Testen Sie einmal mit Refresh now (Jetzt aktualisieren).
Startdatum oder ein neues Client Secret ändern Sie unter Settings → Parameters (Einstellungen → Parameter).
4. Einrichtung in Power BI Desktop
Die Abfragen, Parameter und Namen sind identisch zur Web-Version. Folgende Schritte sind abweichend:
Statt Schritt 3.1 (Modell anlegen): Öffnen Sie einen neuen, leeren Bericht und klicken Sie auf Home → Transform data (Start → Daten transformieren). Neue leere Abfragen legen Sie in Schritt 4 über Home → New Source → Blank Query (Start → Neue Quelle → Leere Abfrage) an. Im erweiterten Editor heißt die Schaltfläche Done (Fertig).
Statt Schritt 3.4 (Verbindung):
- Klicken Sie in der gelben Leiste auf Edit Credentials (Anmeldeinformationen bearbeiten).
- Wählen Sie links Anonymous (Anonym).
- Wählen Sie im Feld Select which level to apply these settings to (Ebene, auf die diese Einstellungen angewendet werden sollen) beim 1. Mal genau
https://system.timr.com/, beim 2. Mal genauhttps://api.timr.com/. - Klicken Sie auf Connect (Verbinden).
- Fragt Power BI nach dem Datenschutz (Privacy), setzen Sie beide Adressen auf Organizational (Organisation) und klicken Sie auf Save (Speichern). Nachträglich finden Sie das unter File → Options and settings → Data source settings → Edit Permissions (Datei → Optionen und Einstellungen → Datenquelleneinstellungen → Berechtigungen bearbeiten).
Statt Schritt 3.5 (Speichern): Klicken Sie auf Home → Close & Apply (Start → Schließen & übernehmen) und speichern Sie die Datei.
Schritt 3.6 (Datenmodell): Beziehungen legen Sie in der Model view (Modellansicht) an, Tabellen und Measures über Modeling → New table / New measure (Modellierung → Neue Tabelle / Neues Measure).
Statt Schritt 3.7 (Aktualisierung):
- Klicken Sie auf Publish (Veröffentlichen) und wählen Sie einen Arbeitsbereich.
- Öffnen Sie im Power BI Service beim semantischen Modell Settings → Data source credentials (Einstellungen → Anmeldeinformationen der Datenquelle).
- Für
api.timr.comundsystem.timr.comjeweils Edit credentials (Anmeldeinformationen bearbeiten): Anonymous, Organizational und Skip test connection (Testverbindung überspringen) aktivieren. - Richten Sie unter Refresh (Aktualisierung) den Zeitplan ein.
5. Weitere Daten
Weitere Endpunkte wie Teams, Fahrtenbuch oder Zeitkonten können Sie nach demselben Muster ergänzen, z. B. mit timrGet("teams"). Alle Endpunkte finden Sie unter developer.timr.com.
6. Wichtige Hinweise
- Client Secret schützen: Das Secret ist als Parameter im Modell gespeichert. Wer das Modell bearbeiten darf oder eine heruntergeladene .pbix-Datei hat, kann es sehen. Vergeben Sie Bearbeitungsrechte im Arbeitsbereich nur an Personen, die Zugriff auf alle timr-Daten haben dürfen. Für alle anderen teilen Sie den fertigen Bericht.
- Datenschutz: Arbeitszeiten und Abwesenheiten sind personenbezogene Daten. Legen Sie fest, wer den Bericht sehen darf, z. B. mit Arbeitsbereichsrollen oder Row-Level Security.
- Ladezeit: Bei vielen Buchungen dauert die erste Aktualisierung länger. Setzen Sie das Startdatum nur so weit zurück wie nötig.
7. Häufige Fehler
| Meldung | Lösung |
|---|---|
| „invalid or missing credentials" | Verbindung einrichten wie in Schritt 5 beschrieben. |
„We couldn't authenticate with the credentials provided" / 401 Unauthorized
|
Client ID oder Secret falsch oder der API-Zugang wurde gelöscht. Parameter prüfen oder in timr neue Zugangsdaten anlegen. |
| „Formula.Firewall: Query … references other queries or steps" | Datenschutzebene für beide Adressen auf Organizational setzen (siehe Schritt 5). |
| „Expression.Error: The name 'timrGet' wasn't recognized" | Die Hilfsfunktion fehlt oder heißt anders. Abfrage genau timrGet nennen. Dasselbe gilt für die Parameternamen. |
| Aktualisierung im Service schlägt fehl | Unter Settings → Data source credentials für beide Adressen Anonymous wählen und Skip test connection aktivieren. |
| Tabellen sind leer | Startdatum prüfen. Außerdem prüfen, ob der API-Zugang die Daten sehen darf. |
Fragen oder ein Endpunkt fehlt? Unser Support hilft gerne weiter.
Comments
0 comments
Article is closed for comments.