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-Key: 364277

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

Printed on: April 18, 2024 at 07:04 o'clock

Member: em-pie
em-pie Feb 09, 2018 updated at 08:30:14 (UTC)
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
Member: BirdyB
BirdyB Feb 09, 2018 at 08:48:28 (UTC)
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
Member: thaenhusen
thaenhusen Feb 09, 2018 at 09:23:13 (UTC)
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
Member: ukulele-7
ukulele-7 Feb 09, 2018 at 10:58:59 (UTC)
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)
Member: BirdyB
BirdyB Feb 09, 2018 at 11:26:46 (UTC)
Goto Top
Hallo ukulele-7,
bei uns läuft ein SQL Anywhere 16.
Ich werde deinen Code mal ausprobieren. Vielen Dank!