Neu Grafana SQL Abfragen Beispiele

garifulin

Sehr aktives Mitglied
10. Januar 2019
389
57
mal schnell zusammengeklickert

SELECT dShopStart AS 'Abgleich Start',dShopEnde AS 'Abgleich Ende' , DATEDIFF(SECOND, dShopStart, dShopEnde) AS 'Dauer in s' FROM eazybusiness.dbo.tWorkerInfo
 
  • Gefällt mir
Reaktionen: kelvin.

marinw

Aktives Mitglied
2. August 2020
36
9
auch wenn es relativ einfach ist. Ich habe mir eine kleine Übersicht gebastelt mit "Allgemeinen Informationen" bei meinem Dashboard.


Code:
DECLARE @jetzt datetime = CONVERT(datetime, GETDATE())
DECLARE @abholung datetime
DECLARE @abholungdate datetime = CONVERT(date, GETDATE())
DECLARE @abholungtime datetime = CONVERT(time, '15:00:00')
SET @abholung = DATEADD(day, DATEDIFF(day, 0, @abholungdate), @abholungtime)

IF @jetzt > @abholung
BEGIN
    SET @abholungdate = DATEADD(day, 1, @abholungdate)
    SET @abholung = DATEADD(day, DATEDIFF(day, 0, @abholungdate), @abholungtime)
END

SELECT
    CONVERT(VARCHAR(10), GETDATE(), 104) AS Datum,
    DATENAME(WEEKDAY, GETDATE()) AS Wochentag,
    CONVERT(VARCHAR(8), GETDATE(), 108) AS Uhrzeit,
    CONVERT(VARCHAR(8), @abholungtime, 108) AS Abholung_Uhrzeit

Unbenannt.PNG
Natürlich kann man damit auch spielen und nur einzelne Teile davon zeigen.
 

marinw

Aktives Mitglied
2. August 2020
36
9
Hast du da noch Designzeugs gemacht bzw hättest du eine Jason davon??
Moin ich habe kein Designzeugs in einer Json Datei hinzugefügt.

Sondern die Base Farbe auf Blau geändert.
Und unter Cell Options den Cell Type auf colored background & background display mode auf basic.
Visualization ist Table
Column alignment ist center

Dann sollte es genauso aussehen. Hat es bei dir funktioniert @garifulin ?
 

marinw

Aktives Mitglied
2. August 2020
36
9
Moin,
nutzt jemand von euch Grafana auch für Auswertung außerhalb des Lagers? Wenn ja wie sieht es bei euch aus?
Ich weiß einige Dinge kann man in dem Dashboard in JTL abbilden, kaufe ich, aber wenn man sich die Mühe macht kann man es doch auch/zusätzlich in Grafana nachbauen ;).Hier stellt sich mir gerade die Frage gibt es eig. auch die Möglichkeit zu sehen wie die SQL-Abfragen in dem Statistik Profil aussehen in der JTL ?

Für mich wäre tatsächlich spannend zu sehen Retouren-Anzahl pro Tag/Monat von welchen Verkaufskanal, OTIF, CLV, Welcher Kunde in welchem Rhythmus bestellt und jetzt wie viele Tage er außerhalb dieses Musters liegt, Tagesumsatz je Plattform & Marge, sowie der Monatsumsatz je Plattform/Kundenkategorie & Marge.
 

HMside

Aktives Mitglied
14. April 2019
61
16
Hallo zusammen,

eine Frage an die SQL-Experten unter Euch. In den ganzen Beispielen sehe ich immer...

Code:
BEGIN TRANSACTION;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
meine Abfrage..
COMMIT TRANSACTION;

sollte man die TRANSACTION ISOLATION LEVEL für solche Abfragen immer auf READ UNCOMMITTED setzen und was ist der technische Hintergrund?
 

sjk

Sehr aktives Mitglied
16. Januar 2019
446
198
Moin zusammen,
Wir haben kürzlich angefangen, ein kleines Dashboard für das Lager zu bauen und ich habe ein paar Panels von euch eingebaut. Hier sind zwei weitere Panels:

Anzahl lieferbare Aufträge je Lager:
Gibt euch alle vorhandenen Lagernamen in der ersten Spalte und die jeweils lieferbaren Aufträge in der zweiten Spalte aus. Durch den left join seht ihr dabei immer alle Lager. Wenn alles erledigt ist, wird euch für das jeweilige Lager also eine Null angezeigt, die ihr dann riesig & grün machen könnt :) Mit einer WHERE clause könnt ihr natürlich auch nur bestimmte Lager rausziehen.
Wir nutzen Stat mit Show -> All Values und Fields -> lieferbar. Dann wird eine Kachel pro Lager angezeigt, dir ihr mit Background Gradient o.ä. und Thresholds beliebig einfärben könnt. Ginge aber auch ganz einfach mit Table.
SQL:
BEGIN TRANSACTION;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SELECT tWarenLager.cName AS 'Lager', COUNT(lvAuftrag.kWarenlager) AS 'lieferbar'
FROM tWarenLager
LEFT JOIN Versand.lvAuftrag AS lvAuftrag
    ON tWarenLager.kWarenLager = lvAuftrag.kWarenlager
    AND (lvAuftrag.nIstBezahlt = 1)
    AND (lvAuftrag.kRueckhalteGrund = 0)
    AND (lvAuftrag.nAuftragStatus = 0)
    AND (lvAuftrag.nPickstatus IS NULL OR lvAuftrag.nPickstatus = 0)
    AND (lvAuftrag.nVersandstatusEigen = 2)
    AND (lvAuftrag.kWarenlager != '0')
GROUP BY tWarenLager.cName
ORDER BY tWarenLager.cName DESC;
COMMIT TRANSACTION;
lieferbarlager.png

Relative Versandgeschwindigkeit heute: (WIP)
Disclaimer:
- Die Artikelmenge von Aufträgen mit mehr als 130 Artikeln wird stillschweigend unterschlagen. Das ist bei uns in etwa die Grenze, ab wann wir mit Spedition versenden
- Ergibt es überhaupt Sinn, was ich da rechne? Ich habe den Verdacht, einfach die Anzahl Artikel durch die Minuten zu teilen ergäbe dasselbe Ergebnis. Vielleicht kennt hier auch eine bewährte Formel, wie man einen solchen Score üblicherweise ermittelt :)
- Der berechnete Wert hat sich bei uns zwar als sehr aussagekräftig herausgestellt, je nach Struktur/Menge eurer Aufträge und eurer Versandabläufe kann der aber auch totaler Schrott sein.
- Absolut mit der heißen Nadel gestrickt
- Ich tüdel halt so rum, eigentlich hab ich doch gar keine Ahnung von SQL ;)

Ermittelt die Anzahl der Aufträge, Positionen und Artikel der heute versendeten als auch noch zu versendenden (lieferbaren) Aufträge. Dann wird für beides die Anzahl Artikel pro Position über alle Aufträge normalisiert und mit der Anzahl Aufträge multipliziert. Diese Werte werden durch die Minuten seit dem ersten Lieferschein heute bzw. durch die Minuten bis zur Abholung geteilt und schließlich voneinander subtrahiert.
Wenn dieser Score nun negativ ist hat das Lager seit dem ersten Lieferschein langsamer gepackt als nötig, um bis zur Abholung alle Aufträge zu schaffen. Ist der Score positiv war die Geschwindigkeit heute bisher schneller als erforderlich und die Aufträge sind wahrscheinlich vor der Abholung verpackt. Nach der Abholung sowie Samstag/Sonntag steht der Wert auf 0.
Zur Visualisierung habe ich das D3 Gauge benutzt. Im Vergleich zur normalen Gauge gibt es hier nämlich einen Zeiger, der auf einem Nullpunkt ruhen kann. Das normale Gauge füllt den Ring immer von einer Seite aus.
SQL:
BEGIN TRANSACTION;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
-- mögliche POS Aufträge ausschließen
DECLARE @nPlattformPOS AS INT = 9;
-- Großaufträge ab x Artikeln unterschlagen
DECLARE @nArtikelGroßauftrag AS INT = 130;
-- Heute versendete Lieferscheine ermitteln
DECLARE @TotalLieferscheine DEC;
SELECT @TotalLieferscheine = COUNT(*) FROM Versand.lvLieferschein AS lvLieferschein
WHERE Format(lvLieferschein.dErstellt, 'dd-MM-yyyy') = Format(getdate(), 'dd-MM-yyyy') AND (lvLieferschein.nAnzahlPakete <= lvLieferschein.nAnzahlVersendetePakete) AND (lvLieferschein.nPlattformTyp <> @nPlattformPOS);
-- PRINT @TotalLieferscheine;
-- Heute versendete Positionen ermitteln
DECLARE @TotalPositionen DEC;
SELECT @TotalPositionen = SUM(PosZählen)
FROM (
    SELECT count(lvLieferschein.kLieferschein) AS PosZählen
    FROM Versand.lvLieferschein AS lvLieferschein
    LEFT JOIN tLieferscheinPos ON tLieferscheinPos.kLieferschein = lvLieferschein.kLieferschein
    WHERE Format(lvLieferschein.dErstellt, 'dd-MM-yyyy') = Format(getdate(), 'dd-MM-yyyy')
      AND (lvLieferschein.nAnzahlPakete <= lvLieferschein.nAnzahlVersendetePakete)
      AND (lvLieferschein.nPlattformTyp <> @nPlattformPOS)
    GROUP BY lvLieferschein.kLieferschein
    ) AS AnzahlPos;
-- PRINT @TotalPositionen;
-- Heute versendete Artikel ermitteln
DECLARE @TotalArtikel DEC;
SELECT @TotalArtikel = SUM(ArtikelAnzahlListe) FROM (
    SELECT SUM(tLieferscheinPos.fAnzahl) AS ArtikelAnzahlListe
    FROM Versand.lvLieferschein AS lvLieferschein
    LEFT JOIN tLieferscheinPos ON tLieferscheinPos.kLieferschein = lvLieferschein.kLieferschein
    WHERE Format(lvLieferschein.dErstellt, 'dd-MM-yyyy') = Format(getdate(), 'dd-MM-yyyy')
      AND (lvLieferschein.nAnzahlPakete <= lvLieferschein.nAnzahlVersendetePakete)
      AND (lvLieferschein.nPlattformTyp <> '9')
    GROUP BY tLieferscheinPos.kLieferschein) AS ArtikelAnzahlListe
    WHERE ArtikelAnzahlListe < @nArtikelGroßauftrag;
-- PRINT @TotalArtikel;
-- Berechnung des gewichteten Versandwerts
DECLARE @NormalisiertVersandt DEC(10,0);
SET @NormalisiertVersandt = (@TotalArtikel / @TotalPositionen) * @TotalLieferscheine;
-- PRINT @NormalisiertVersandt;
--
-- NOCH ZU VERPACKENDE
DECLARE @warenlager AS INT = 0;
-- Noch zu packende Aufträge ermitteln
BEGIN TRANSACTION;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
DECLARE @TotalAufträgeToDo DEC;
SELECT @TotalAufträgeToDo = AufträgeZählen
FROM (
    SELECT COUNT(*) AS AufträgeZählen FROM Versand.lvAuftrag AS lvAuftrag
    WHERE (lvAuftrag.nIstBezahlt = 1)
        AND (lvAuftrag.kRueckhalteGrund = 0)
        AND (lvAuftrag.nAuftragStatus = 0)
        AND (lvAuftrag.nPickstatus IS NULL OR lvAuftrag.nPickstatus = 0)
        AND (lvAuftrag.nVersandstatusEigen = 2)
        AND (lvAuftrag.kWarenlager = @Warenlager))
    AS AnzahlAufträgeToDo;
-- PRINT @TotalAufträgeToDo;
COMMIT TRANSACTION;
-- Noch zu packende Positionen ermitteln
DECLARE @TotalPositionenToDo DEC;
SELECT @TotalPositionenToDo = SUM(PosZählen)
FROM (
    SELECT count(lvAuftrag.kBestellung) AS PosZählen
    FROM Versand.lvAuftrag AS lvAuftrag
    LEFT JOIN tBestellpos ON tBestellpos.tBestellung_kBestellung = lvAuftrag.kBestellung
    WHERE (lvAuftrag.nIstBezahlt = 1)
        AND (lvAuftrag.kRueckhalteGrund = 0)
        AND (lvAuftrag.nAuftragStatus = 0)
        AND (lvAuftrag.nPickstatus IS NULL OR lvAuftrag.nPickstatus = 0)
        AND (lvAuftrag.nVersandstatusEigen = 2)
        AND (lvAuftrag.kWarenlager = @Warenlager)
        /*AND tBestellpos.tArtikel_kArtikel != '0'*/
    GROUP BY lvAuftrag.kBestellung
    ) AS AnzahlPosToDo;
-- PRINT @TotalPositionenToDo;
-- Noch zu packende Artikel ermitteln
DECLARE @TotalArtikelToDo DEC;
SELECT @TotalArtikelToDo = SUM(ArtikelAnzahlListe) FROM (
    SELECT SUM(tBestellpos.nAnzahl) AS ArtikelAnzahlListe
    FROM Versand.lvAuftrag AS lvAuftrag
    LEFT JOIN tBestellpos ON tBestellpos.tBestellung_kBestellung = lvAuftrag.kBestellung
    WHERE (lvAuftrag.nIstBezahlt = 1)
        AND (lvAuftrag.kRueckhalteGrund = 0)
        AND (lvAuftrag.nAuftragStatus = 0)
        AND (lvAuftrag.nPickstatus IS NULL OR lvAuftrag.nPickstatus = 0)
        AND (lvAuftrag.nVersandstatusEigen = 2)
        AND (lvAuftrag.kWarenlager = @Warenlager)
        /*AND tBestellpos.tArtikel_kArtikel != '0'*/
        GROUP BY tBestellpos.tBestellung_kBestellung) AS ArtikelAnzahlListe
        WHERE ArtikelAnzahlListe < @nArtikelGroßauftrag;
-- PRINT @TotalArtikelToDo;
--Berechnung des gewichteten ToDo Werts
DECLARE @NormalisiertToDo DEC(10,0);
SET @NormalisiertToDo = (@TotalArtikelToDo / @TotalPositionenToDo) * @TotalAufträgeToDo;
-- PRINT @NormalisiertToDo;
--
-- Minuten seit dem ersten Lieferschein heute ermitteln
DECLARE @MinutenSeitErstemLieferschein INT;
SELECT @MinutenSeitErstemLieferschein = DATEDIFF(MINUTE, MIN(dErstellt), GETDATE()) FROM Versand.lvLieferschein AS lvLieferschein
WHERE Format(lvLieferschein.dErstellt, 'dd-MM-yyyy') = Format(getdate(), 'dd-MM-yyyy')
    AND (lvLieferschein.nAnzahlPakete <= lvLieferschein.nAnzahlVersendetePakete)
    /*AND (lvLieferschein.nPlattformTyp <> @nPlattformPOS)*/;
-- PRINT @MinutenSeitErstemLieferschein;
-- Minuten bis zur Abholung ermitteln
DECLARE @MinutenBisZurAbholung INT;
DECLARE @abholungdate DATETIME = CONVERT(DATETIME, FORMAT(GETDATE(), 'yyyy-MM-dd') + ' ' + '12:55:00', 120);
SET @MinutenBisZurAbholung = DATEDIFF(MINUTE, GETDATE(), @abholungdate);
-- PRINT @MinutenBisZurAbholung;
-- Berechnung der Voraussage
DECLARE @ToDoScore DEC(10,2);
SET @ToDoScore = @NormalisiertToDo / @MinutenBisZurAbholung;
DECLARE @VersandtScore DEC(10,2);
SET @VersandtScore = @NormalisiertVersandt / @MinutenSeitErstemLieferschein;
DECLARE @VoraussageScore DEC(10,2);
SET @VoraussageScore = @VersandtScore - @ToDoScore;
SELECT
    CASE
        WHEN DATEDIFF(MINUTE, GETDATE(), @abholungdate) < 0 OR DATEPART(WEEKDAY, GETDATE()) IN (6, 7) THEN '0'
    ELSE @VoraussageScore
END;
COMMIT TRANSACTION;
relgeschw.png
 
  • Gefällt mir
Reaktionen: ps912 und IT-WEFA
Ähnliche Themen
Titel Forum Antworten Datum
Sql Abfrage VK Preise pro Kundengruppe für Grafana JTL-Wawi 1.8 9
Neu SQL Query zum Bilder löschen Arbeitsabläufe in JTL-Wawi 3
Neu List & Label - Eigene SQL-Abfrage als Grundlage für Tabelle im Berichtscontainer? User helfen Usern - Fragen zu JTL-Wawi 10
Neu SQL Server kein Mandant auswählbar und Dienst lässt sich nicht starten Installation von JTL-Wawi 2
Neu Ameise-Vorlage per SQL abrufen und Daten als Ergebnis erhalten JTL Ameise - Eigene Exporte 1
Neu SQL DB läuft mit Fehler voll und crasht Server JTL-Shop - Fehler und Bugs 1
Neu SQL Vartable für Reservierte Artikel gesucht User helfen Usern - Fragen zu JTL-Wawi 2
Neu Innerhalb einer Variable -SQL Abfrage- das Wort "fett" schreiben Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 2
Neu SQL Eigener Export - Eigene Felder im Auftrag User helfen Usern - Fragen zu JTL-Wawi 7
Neu Wie finde ich per SQL heraus welche Aufträge auf Teillieferbar stehen? JTL Ameise - Eigene Exporte 1
Neu Microsoft SQL unter MS365 Installation von JTL-Wawi 2
Neu SQL Abfrage, 3. Mahnstufe User helfen Usern - Fragen zu JTL-Wawi 1
Neu Variable oder SQL zum Feld "Gewinn netto" (im Auftrag) Eigene Übersichten in der JTL-Wawi 9
Neu SQL Code zur Ausgabe des Verkaufspreis je Kundengruppe User helfen Usern 1
Neu MS SQL Server auf Windows vs Linux Starten mit JTL: Projektabwicklung & Migration 9
Beantwortet Hilfe bei SQL Abfrage erbeten User helfen Usern - Fragen zu JTL-Wawi 3
Neu SQL Abfrage - Sendungsnummern als Liste nach Datum Schnittstellen Import / Export 2
Neu DB: kPlattform eines Auftrages ändern (SQL) - Zwecks Lagerplatzreservierung User helfen Usern - Fragen zu JTL-Wawi 0
Neu SQL prozeduren mit #temp Tabellen Eigene Übersichten in der JTL-Wawi 28
Neu Ameise Export in SQL Abfrage umwandeln User helfen Usern - Fragen zu JTL-Wawi 11
Neu Ware direkt in ein Standardlager einbuchen per SQL StoreProcedure dbo.spWarenlagerEingangSchreiben Schnittstellen Import / Export 9

Ähnliche Themen