AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Firebird V3.0 - Neue Aggregatfunktionen
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird V3.0 - Neue Aggregatfunktionen

Ein Thema von lowmax_5 · begonnen am 15. Jan 2015 · letzter Beitrag vom 16. Jan 2015
Antwort Antwort
Seite 1 von 2  1 2      
lowmax_5

Registriert seit: 9. Mai 2003
Ort: Münster, NRW
257 Beiträge
 
Delphi 11 Alexandria
 
#1

Firebird V3.0 - Neue Aggregatfunktionen

  Alt 15. Jan 2015, 14:22
Datenbank: Firebird • Version: V3.0 • Zugriff über: IBDAC
Hallo,

ich möchte gerne die neuen FB-Funktionen nutzen OVER/PARTITION nutzen, um Aggregatabrufe zu beschleunigen.
Die Daten befinden sich nun aber in mehreren Tabellen:

Kunden(KNr,Name)
Rechnungen (RNr,Datum, Betrag,KNr)
Auftrag (ANr,Datum,Betrag,KNr)

Als Ergebnis soll folgendes herauskommen:
KNr,Name, SumAuftragbetrag,SumRechnungBetrag,AvgRechnungBetr ag

Der Weg über 'Group by' oder dem bekannten 'inline select' ist mir klar. Nur wie lässt sich dieses mit OVER/PARTITION realisieren? Stehe gerade auf dem Schlauch....
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Firebird V3.0 - Neue Aggregatfunktionen

  Alt 15. Jan 2015, 16:10
Auf den Join anwenden. Ich bezweifle aber, das das schneller als ein Join auf die Summen wäre.
Markus Kinzler
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#3

AW: Firebird V3.0 - Neue Aggregatfunktionen

  Alt 16. Jan 2015, 07:32
Ich bezweifle, dass dir hier die neuen Aggregatsfunktionen einen Mehrwert bringen. Die Idee von diesen neuen Window Functions ist einfach gesagt die Entkopplung der GROUP BY Klausel (was eine Filterung der Datenmenge als Folge hat) von der Aggregatsbildung. In deinem Fall willst ja dann einfach eine Zeile je Kunde mit den Summen haben, oder? Hier tuts ein einfaches:

Code:
select
  k.knr
  , k.name
  , sum(a.betrag) as sum_auftragbetrag
  , sum(r.betrag) as sum_rechungbetrag
from
  kunden k
  left join AUFTRAG a on (a.KNR = k.KNR)
  left join RECHNUNGEN r on (r.KNR = k.KNR)
group by
  k.KNR
  , k.NAME
LEFT JOIN vs. INNER JOIN musst du entscheiden, ob ein Kunde ohne Auftrag bzw. Rechnung in der Ergebnismenge auftauchen soll.

LG
  Mit Zitat antworten Zitat
lowmax_5

Registriert seit: 9. Mai 2003
Ort: Münster, NRW
257 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Firebird V3.0 - Neue Aggregatfunktionen

  Alt 16. Jan 2015, 09:44
Vielen Dank für die Antworten. Da hatte ich mir doch wohl ein wenig zu viel Hoffnungen in die neuen Aggregatsfunktionen gesteckt... Da sehr viele Datensätze durchgegangen werden müssen und die Performance nicht entsprechend gut ist, muss ich dann wohl konzeptionell anders vorgehen (==>OLAP).
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#5

AW: Firebird V3.0 - Neue Aggregatfunktionen

  Alt 16. Jan 2015, 09:50
Was heißt sehr viel je Tabelle und wie lange dauert die Abfrage?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Firebird V3.0 - Neue Aggregatfunktionen

  Alt 16. Jan 2015, 10:07
Du kannst zuerst Joinen und zusammenfassen (langsam) oder schauen, ob die zuerst zusammenfasst und dann die Daten kombinierst ( im Idealfall schneller)
Markus Kinzler
  Mit Zitat antworten Zitat
lowmax_5

Registriert seit: 9. Mai 2003
Ort: Münster, NRW
257 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Firebird V3.0 - Neue Aggregatfunktionen

  Alt 16. Jan 2015, 10:40
Zitat:
Was heißt sehr viel je Tabelle und wie lange dauert die Abfrage?
In der Praxis ist das Thema komplexer als in dem von mir genannten Beispiel. Innerhalb einer SP werden neben Joins auch Sub-SP's aufgerufen, um die notwenigen Daten zusammenzustellen. Die Laufzeit beträgt ca. 1 Minute aber auch mehr, wobei es auf einige Tabellen zwischen 200T und 22Mio IR's gibt. Alles ist soweit optimiert, das es nur sehr wenige NIR's gibt.

Da die Datenmenge auf jeden Fall durchlaufen werden muss, um die Werte zu ermitteln, komme ich wohl um das Thema OLAP/Aggregatstabellen nicht herum, um auch bei varierenden Fragestellungen eine AdHoc-Abfragen in einer akzeptablen Zeit beantworten zu können. Würde es hier noch andere Lösungswege geben?
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#8

AW: Firebird V3.0 - Neue Aggregatfunktionen

  Alt 16. Jan 2015, 10:53
Zitat:
Würde es hier noch andere Lösungswege geben?
Nein. Für analytische (Ad-Hoc) Fragestellungen bei wachsendem OLTP Datenvolumen wirst in Richtung Voraggregrierung etc. gehen müssen. Wennst für das OLAP System auf Firebird oder relational bleiben willst, dann hilft dir vielleicht folgender Artikel von mir weiter: https://www.ibphoenix.com/resources/.../general/doc_1
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Firebird V3.0 - Neue Aggregatfunktionen

  Alt 16. Jan 2015, 10:58
Interessanter Artikel
Markus Kinzler
  Mit Zitat antworten Zitat
lowmax_5

Registriert seit: 9. Mai 2003
Ort: Münster, NRW
257 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Firebird V3.0 - Neue Aggregatfunktionen

  Alt 16. Jan 2015, 11:12
Zitat:
Wennst für das OLAP System auf Firebird oder relational bleiben willst, dann hilft dir vielleicht folgender Artikel von mir weiter: https://www.ibphoenix.com/resources/.../general/doc_1
Das hört sich schon mal sehr gut an! Wenn ich es richtig verstehe, werden die Daten (mit einer Update-Strategie) 'vorbereitet' und in die DWH-Tabellenstruktur gepackt. Anschliessend können diese dann 'zeitnah' angerufen werden.(alles mit FB) Mondrian als OLAP-Server untersützt dabei den Anwender, die Abfragen zu generieren - es würde aber auch ohne den OLAP-Server gehen, wenn die Abfragen vorher feststehen bzw. definiert werden.
Korrigiere mich bitte, falls ich auf dem Holzweg bin ...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz