birdyb
Goto Top

SQL - PowerBI - Daten ohne Aufträge berücksichtigen

Hallo zusammen,

ich sitze hier gerade vor einer Knobelaufgabe für eine grafische Darstellung unserer Einsatzzahlen.
In PowerBI möchte ich ein Diagramm erstellen welches über den Zeitverlauf nach Tagen unsere Einsatzzahlen visualisiert. Dazu gebe ich PowerBI als Quelle eine Abfrage auf unsere Einsatztabelle, die unter anderem das Einsatzdatum enthält. Leider gibt es auch Tage ohne Einsätze, hierzu existiert dann auch keine Zeile mit dem passenden Datum. Daher werden die Null-Einsatz-Tage auch nicht im Diagramm angezeigt.
Wie kann ich es erreichen, dass wirklich jedes Datum berücksichtigt wird? Ich habe da im Moment leider nicht mal im Ansatz eine Idee...

Danke für eure Hilfe!

Beste Grüße!


BirdyB

Content-ID: 364277

Url: https://administrator.de/contentid/364277

Ausgedruckt am: 22.11.2024 um 02:11 Uhr

em-pie
em-pie 09.02.2018 aktualisiert um 09:30:14 Uhr
Goto Top
Moin,

ohne zu wissen, wie dein Statement aussieht, word es schwieirig...

Kannst du im Statement nicht mit
CASE
  WHEN Value IsNull Then 01.01.1900
  ELSE Value
END AS custValue
oder sowas arbeiten?

Gruß
em-pie
BirdyB
BirdyB 09.02.2018 um 09:48:28 Uhr
Goto Top
Moin,

also mein Statement sieht (abgekürzt) so aus
SELECT
edat,
ma_id
FROM
EINSAETZE

Damit bekomme ich ja dann eine Liste aller Einsätze und die werden dann von PowerBI "verwurstet".
Für einige Tage existiert halt nur keine Zeile, wenn es an diesem Tag keinen Auftrag gab.

Beste Grüße!

BirdyB
thaenhusen
thaenhusen 09.02.2018 um 10:23:13 Uhr
Goto Top
Moin.

Daszu brauchst Du eine Tabelle mit allen Datumsangaben, die relevant sind.
Also eine Kalendertabelle, die Du nach Werktagen oder ähnliches Filtern kannst oder einfach alles Tage des Jahres.

Dann sehe das ungefähr so aus:

SELECT
KALENDER.DATUM,
edat,
ma_id
FROM
KALENDER
LEFT JOIN EINSAETZE on EINSAETZE.edat = KALENDER.DATUM

Dann musst Du halt noch mit einer Gruppieren und Summe die Anzahl der Einsätze an jedem Datum zusammenbauen.

HTH
MK
ukulele-7
ukulele-7 09.02.2018 um 11:58:59 Uhr
Goto Top
In SQL kannst du dir auch dynamisch deine Tage-Tabelle erzeugen, allerdings kenne ich Power BI nicht und weiß nicht welches SQL dahinter steckt. (MSSQL?, welcher Version?)

Beispiel:
WITH t(datum) AS (
	SELECT	dateadd(year,datediff(year,0,getdate()),0) AS datum
	UNION ALL
	SELECT	t.datum + 1
	FROM	t
	WHERE	t.datum <= dateadd(year,datediff(year,0,getdate())+1,-1)
	)
SELECT	cast(t.datum AS DATE) AS datum,
		count(e.ma_id) AS anzahl
FROM	t
LEFT JOIN EINSAETZE e
ON		t.datum = e.edat
OPTION (MAXRECURSION 1000)
BirdyB
BirdyB 09.02.2018 um 12:26:46 Uhr
Goto Top
Hallo ukulele-7,
bei uns läuft ein SQL Anywhere 16.
Ich werde deinen Code mal ausprobieren. Vielen Dank!