{"id":205,"date":"2011-02-23T09:43:39","date_gmt":"2011-02-23T08:43:39","guid":{"rendered":"http:\/\/csopro.de\/biblog\/2011\/02\/saeulendiagramme-mit-datum-auf-der-x-achse\/"},"modified":"2011-02-23T09:43:39","modified_gmt":"2011-02-23T08:43:39","slug":"saeulendiagramme-mit-datum-auf-der-x-achse","status":"publish","type":"post","link":"https:\/\/www.csopro.de\/biblog\/2011\/02\/saeulendiagramme-mit-datum-auf-der-x-achse\/","title":{"rendered":"S\u00e4ulendiagramme mit Datum auf der x-Achse"},"content":{"rendered":"<p>Bekannterma\u00dfen kann man in Reporting Services alle Standard-Charts darstellen.<\/p>\n<p>Bei den S\u00e4ulen-Diagrammen hat man sogar &#8211; was ich heute zeigen m\u00f6chte &#8211; die M\u00f6glichkeit, auf der x-Achse Datumswerte anzuzeigen. Dies ist z.B. in (Pseudo-) Gantt-Charts interessant.<\/p>\n<p>F\u00fcr unser Beispiel wollen wir die Laufzeit von zwei Phasen eines Projekts darstellen:<\/p>\n<p>Phase 1 l\u00e4uft vom 1.3.2011 bis zum 20.3.2011, wobei die Zeit ab dem 17.3.2011 rot dargestellt werden soll.<br \/>\nPhase 2 l\u00e4uft vom 15.3.2011 bis zum 7.4.2011, wobei die Zeit ab dem 1.4.2011 rot dargestellt werden soll.<\/p>\n<p>Das Ziel sieht somit so aus:<\/p>\n<p><a href=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2011\/02\/ziel-pseudo-gantt.jpg\"><img loading=\"lazy\" decoding=\"async\" alt=\"Ziel der 2 Phasen mit Datum auf x-Achse\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2011\/02\/ziel-pseudo-gantt-small.jpg\" width=\"450\" height=\"187\" \/><\/a><br \/>\n(Zum Vergr\u00f6\u00dfern anklicken)<\/p>\n<p>Um dies zu erreichen, geben wir folgendes im Chart an:<\/p>\n<ul>\n<li>als Kategorie: die Phase<\/li>\n<li>als Reihe: die Farbe<\/li>\n<li>als Wert: das Datum<\/li>\n<\/ul>\n<p>Allerdings ist das Datum nicht einfach einzugeben. Wir m\u00fcssen vielmehr folgendes einstellen (examplarisch an der Phase 1 gezeigt):<\/p>\n<ul>\n<li>ein transparenter Balken bis zum 1.3.2011<\/li>\n<li>ein gr\u00fcner Balken bis zum 17.3.2011, also 16 Tage breit<\/li>\n<li>ein roter Balken bis zum 20.3.2011, also 3 Tage breit<\/li>\n<\/ul>\n<p>F\u00fcr den ersten Balken k\u00f6nnen wir als Wert einfach den 1.3.2011 angeben. F\u00fcr die darauffolgenden Balken m\u00fcssen wir aber das Datum als Wert angeben, das die Anzahl der Tage auf den 30.12.1899 addiert, also<\/p>\n<ul>\n<li>f\u00fcr einen Balken mit 1 Tag L\u00e4nge: 31.12.1899<\/li>\n<li>f\u00fcr einen Balken mit 2 Tagen L\u00e4nge: 1.1.1900<\/li>\n<li>f\u00fcr einen Balken mit 2,5 Tagen L\u00e4nge: 1.1.1900 12:00<\/li>\n<li>f\u00fcr einen Balken mit 3 Tagen L\u00e4nge: 2.1.1900<\/li>\n<li>f\u00fcr einen Balken mit 16 Tagen L\u00e4nge: 15.1.1900<\/li>\n<li>usw.<\/li>\n<\/ul>\n<p>Nat\u00fcrlich m\u00fcssen wir darauf achten, dass die Reihenfolge der Balken stimmt. Deswegen muss die Reihe entsprechend sortiert sein.<\/p>\n<p>Au\u00dferdem werden wir die x-Achse so formatieren, dass sie die Datumswerte sch\u00f6n anzeigt.<\/p>\n<p>Nun haben wir alles beisammen, um das Projekt zu schaffen:<\/p>\n<p>Als SQL w\u00e4hlen wir:<\/p>\n<blockquote>\n<p>SELECT &#8218;Phase 1&#8216; as Phase, &#8218;transparent&#8216; as Farbe, 1 as sort, convert(Datetime, &#8218;1.3.2011&#8216;, 104) as wert<br \/>\nUNION ALL<br \/>\nSELECT &#8218;Phase 1&#8216; as Phase, &#8218;green&#8216; as Farbe, 2 as sort, convert(Datetime, &#8218;15.1.1900&#8216;, 104) as wert<br \/>\nUNION ALL<br \/>\nSELECT &#8218;Phase 1&#8216; as Phase, &#8218;red&#8216; as Farbe, 3 as sort, convert(Datetime, &#8218;2.1.1900&#8216;, 104) as wert<br \/>\nUNION ALL<br \/>\nSELECT &#8218;Phase 2&#8216; as Phase, &#8218;transparent&#8216; as Farbe, 1 as sort, convert(Datetime, &#8218;15.3.2011&#8216;, 104) as wert<br \/>\nUNION ALL<br \/>\nSELECT &#8218;Phase 2&#8216; as Phase, &#8218;green&#8216; as Farbe, 2 as sort, convert(Datetime, &#8218;16.1.1900&#8216;, 104) as wert<br \/>\nUNION ALL<br \/>\nSELECT &#8218;Phase 2&#8216; as Phase, &#8218;red&#8216; as Farbe, 3 as sort, convert(Datetime, &#8218;5.1.1900&#8216;, 104) as wert<\/p>\n<\/blockquote>\n<p>Und im Chart muss folgendes eingestellt werden:<\/p>\n<p>Es ist ein Stacked Bar Chart:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"Stacked Bar Chart\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2011\/02\/stackedbar-1.jpg\" width=\"363\" height=\"218\" \/><\/p>\n<p>Die Grundeinstellungen sieht man hier:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"Einstellungen des Charts\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2011\/02\/chartsettings.jpg\" width=\"435\" height=\"314\" \/><\/p>\n<p>Die genauen Eigenschaften der Kategorie (Phase) sind:<\/p>\n<p><a href=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2011\/02\/category-general.jpg\"><img loading=\"lazy\" decoding=\"async\" alt=\"General Eigenschaften der Category\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2011\/02\/category-general-small.jpg\" width=\"450\" height=\"274\" \/><\/a><br \/>\n(Zum Vergr\u00f6\u00dfern anklicken)<\/p>\n<p>und<\/p>\n<p><a href=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2011\/02\/category-sorting.jpg\"><img loading=\"lazy\" decoding=\"async\" alt=\"Sorting Category\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2011\/02\/category-sorting-small.jpg\" width=\"450\" height=\"179\" \/><\/a><br \/>\n(Zum Vergr\u00f6\u00dfern anklicken)<\/p>\n<p>Die genauen Eigenschaften der Reihe (Farbe) sind:<\/p>\n<p><a href=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2011\/02\/series-general.jpg\"><img loading=\"lazy\" decoding=\"async\" alt=\"Generelle Eigenschaften der Reihe\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2011\/02\/series-general-small.jpg\" width=\"450\" height=\"299\" \/><\/a><br \/>\n(Zum Vergr\u00f6\u00dfern anklicken)<\/p>\n<p>und<\/p>\n<p><a href=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2011\/02\/series-sorting.jpg\"><img loading=\"lazy\" decoding=\"async\" alt=\"Sortier-Eigenschaften der Reihe\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2011\/02\/series-sorting-small.jpg\" width=\"450\" height=\"196\" \/><\/a><br \/>\n(Zum Vergr\u00f6\u00dfern anklicken)<\/p>\n<p>Die genauen Eigenschaften der Werte sind:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"Einstellungen der Werte 1\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2011\/02\/series-seriesdata.jpg\" width=\"334\" height=\"229\" \/><br \/>\n(Hier darauf achten, dass nicht count(Wert) dort steht (wie es SSRS beim Anklicken erstellt), sondern nur wert!<\/p>\n<p>und<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"F\u00fclleigenschaften der Werte\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2011\/02\/series-fill.jpg\" width=\"356\" height=\"309\" \/><br \/>\n(Hier darauf achten, dass unter Farbe der Wert &#8222;=Fields!Farbe.Value&#8220; steht, zu erreichen \u00fcber das fx-Symbol)<\/p>\n<p>Dann muss nur noch die x-Achse korrekt eingestellt werden:<\/p>\n<p><a href=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2011\/02\/axisoptions.jpg\"><img loading=\"lazy\" decoding=\"async\" alt=\"Optionen der Achse\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2011\/02\/axisoptions-small.jpg\" width=\"450\" height=\"428\" \/><\/a><br \/>\n(Zum Vergr\u00f6\u00dfern anklicken)<\/p>\n<p>Dabei sind in diesem Fall als Minimum &#8222;=DateSerial(2011, 2, 27)&#8220; und als Maximum &#8222;=DateSerial(2011,4,10)&#8220; eingestellt. Nat\u00fcrlich sollte man das &#8222;in Wirklichkeit&#8220; aus den Daten \u00fcber min \/ max und ggf. dateadd von Tagen berechnen.<\/p>\n<p>Als Datumsformat ist das deutsche Format eingestellt:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"Datumsformat der x-Achse\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2011\/02\/axis-number.jpg\" width=\"441\" height=\"241\" \/><\/p>\n<p>Um die kleinen Zacken pro Tag (ohne Datumsanzeige) zu haben (wie man sie oben in dem Ziel-Chart sehen kann), habe ich noch die minor tick marks auf 1 gesetzt:<\/p>\n<p><a href=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2011\/02\/axis-minorticks.jpg\"><img loading=\"lazy\" decoding=\"async\" alt=\"Minor Tick Marks der x-Achse\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2011\/02\/axis-minorticks-small.jpg\" width=\"450\" height=\"428\" \/><\/a><br \/>\n(Zum Vergr\u00f6\u00dfern anklicken)<\/p>\n<p>Die vollst\u00e4ndige rdl-Datei kann <a title=\"Reporting Services File mit diesem Beispiel zu Pseudo Gantt-Diagrammen\" href=\"https:\/\/www.csopro.de\/download\/PseudoGantt.rdl\" target=\"_blank\">hier<\/a> heruntergeladen werden.<\/p>\n<p>Dieses Projekt l\u00e4sst sich zu einem Pseudo-Gantt-Chart ausbauen, in dem dann (nur) die senkrechten Linie und Pfeile fehlen, was f\u00fcr eine erste Orientierung allerdings ausreichend sein d\u00fcrfte.<\/p>\n<p>Nat\u00fcrlich lassen sich auch andere Visualisierungen damit realisieren, z.B. Darstellung von Up-\/Down-Time von Maschinen etc.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bekannterma\u00dfen kann man in Reporting Services alle Standard-Charts darstellen. Bei den S\u00e4ulen-Diagrammen hat man sogar &#8211; was ich heute zeigen m\u00f6chte &#8211; die M\u00f6glichkeit, auf der x-Achse Datumswerte anzuzeigen. Dies ist z.B. in (Pseudo-) Gantt-Charts interessant. F\u00fcr unser Beispiel wollen wir die Laufzeit von zwei Phasen eines Projekts darstellen: Phase 1 l\u00e4uft vom 1.3.2011 bis &hellip; <a href=\"https:\/\/www.csopro.de\/biblog\/2011\/02\/saeulendiagramme-mit-datum-auf-der-x-achse\/\" class=\"more-link\"><span class=\"screen-reader-text\">S\u00e4ulendiagramme mit Datum auf der x-Achse<\/span> weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"class_list":["post-205","post","type-post","status-publish","format-standard","hentry","category-reportingservices"],"_links":{"self":[{"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/posts\/205","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/comments?post=205"}],"version-history":[{"count":0,"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/posts\/205\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/media?parent=205"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/categories?post=205"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/tags?post=205"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}