AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

JSON -> Database -> Auswertung ?

Ein Thema von bernhard_LA · begonnen am 1. Mai 2022 · letzter Beitrag vom 8. Mai 2022
Antwort Antwort
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#1

AW: JSON -> Database -> Auswertung ?

  Alt 1. Mai 2022, 12:16
Für mich klingt das sehr nach Datenbankanwendung.

In 'ner DB eine Tabelle mit der gleichen Struktur, die in der Klasse abgebildet ist, anlegen.
JSons in die Tabelle einfügen und dann alle Freiheiten der Auswertung per SQL genießen.

Sortieren, gruppieren, summieren, Durchschnittswerte ermitteln, Maximum und/oder Minimum ermitteln, ...

Als Code brauchst Du nur das Einlesen der JSons zu implementieren, wenn die DB das nicht schon kann.

Oder eingebaute Funktionalitäten der DB nutzen.

https://docs.microsoft.com/de-de/sql...l-server-ver15

https://www.informatik-aktuell.de/be...datenbank.html
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: JSON -> Database -> Auswertung ?

  Alt 1. Mai 2022, 12:41
An so etwas hatte ich auch schon gedacht


      TJSON.SavetoDB(.....) /// nur leider nicht gefunden :-(

wir verwenden MSSQL Server, dieser SQL Code erzeugt bei mir keine permanente Tabelle ( create table statement)
und ich muss im select statement auch wieder alle Feldnamen angeben .
Wir haben ja 100 + Feldnamen und die können sich permanent auch ändern, da will sehr flexibel bleiben

Delphi-Quellcode:
DECLARE @json NVARCHAR(MAX);
SET @json = N'[
{"id": 2, "info": {"name": "John", "surname": "Smith"}, "age": 25},
....
]
';

/// hier muss ich dann alle Feldnamen definieren ??

SELECT *
FROM OPENJSON(@json)
  WITH (
    id INT 'strict $.id',
    firstName NVARCHAR(50) '$.info.name',
    lastName NVARCHAR(50) '$.info.surname',
    age INT,
    dateOfBirth DATETIME2 '$.dob'
  );


und mit diesem code kann ich keine Querys platzieren oder ?

Delphi-Quellcode:
Declare @JSON varchar(max)

SELECT @JSON = BulkColumn
FROM OPENROWSET (BULK 'E:\tempout.txt', SINGLE_CLOB) as j

Select @JSON

If (ISJSON(@JSON)=1)
Print 'Valid JSON'

Geändert von bernhard_LA ( 1. Mai 2022 um 12:56 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#3

AW: JSON -> Database -> Auswertung ?

  Alt 1. Mai 2022, 12:57
Statt die Klasse als JSon zu speichern, ihr eine Methode "gönnen", mit der sie von sich selbst eine Insert-Statement für die Datenbank generiert und dieses dann als Textdatei speichern.

Das könnte mit Hilfe von RTTI realisierbar sein. In dem Fall wären zusätzliche Attribute oder ggfls. deren Wegfall transperant für die Exportroutine, so dass sie nur einmalig erstellt werden muss und eine Anpassung dieser Routine bei Änderungen an der Klasse nicht erforderlich werden.

Die Struktur der Datenbanktabelle müsste dann aber halt (bei Änderungen an der Klasse) händisch synchron zur Klasse gehalten werden.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: JSON -> Database -> Auswertung ?

  Alt 1. Mai 2022, 12:51
Wenn Du "nichts" machen willst, würde ich einfach die Logfiles in Graphana kippen. (z.B. Du musst natürlich einen Server / Docker dafür aufsetzen)
Wenn Du mehr machen willst, also eine Vorverarbeitung, würde ich die Daten in Postgres importieren. Dort kannst Du damit nach Herzenslust rumtoben. Es gibt super JSON Funktionen und Operatoren, Objekt Zerlegung - Erzeugung.
Vorgehen wäre bspw. ein JSON Logfile in eine BLOB Spalte (Typ bytea) schreiben, versehen mit ein paar generellen Merkmalen (Systemname, Datum, Maschine, ..)
Du kannst alles was Du in der Importtabelle an "Randnotizen" in weiteren Spalten einträgst, bequem mit den JSON Daten mischen, auswerten, filtern, aggregieren. Ob das notwendig ist, sei dahin gestellt. Aber der Appetit kommt ja beim Essen. Import und Zwischenverarbeitung würde ich nur durch Scripting, Views machen.

https://grafana.com/
https://grafana.com/docs/grafana/lat...rces/postgres/
https://www.postgresql.org/docs/14/functions-json.html
https://www.postgresql.org/docs/curr...aggregate.html

Wenn es wirklich viele Daten sind, kannst Du als Typ in Postgres JSONB nehmen. Das ist ein indizierbares Binärformat, funktionale Einschränkung verglichen mit JSON gibt es m.W. nicht.
Gruß, Jo
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz