n0cturne
Goto Top

Excel, Power Query und Qracle DB

Hallo zusammen,

Folgende Problemstellung:
Ich bin ziemlicher Newbe bei Power Query.
Nun zu meinem daraus resultierenden Problem. ;)

Ich habe eine Exceltabelle, in der ich den Füllstand bestimmter Tabellen in einer Oracle-DB dokumentiere.
Zurzeit tue ich das zu Fuß, indem ich die Ergebnisse meiner Abfragen aus dem SQL Developer manuell eintrage.
Die Parameter der Abfrage variieren mit Inhalt der Exceltabelle.

Als Ergebnis habe ich dann
Ora-TabellennameAnzahl Einträge mit LOAD_NR=n
ADRESSE50261
BANKVERBINDUNG9673
ect.ect.

Datengrundlage:
- Ora-Tabellenname (Eine Spalte in einer Exceltablle)
- LOAD_NR (Eine Zelle in einer Exeltabelle=n)

Nach erfolgreicher Verbindung zum gewünschten DB-Schema habe ich es bereits geschafft, mir die ersten Anfragen für Power Query anzupassen,
wobei ich schon festgestellt habe, dass die Syntax aus dem SQL Developer hier nicht 100%ig anzuwenden ist.

select 'ADRESSE', count(*) from SCHEMA.ADRESSE where LOAD_NR=2926 UNION  
select 'BANKVERBINDUNG', count(*) from SCHEMA.BANKVERBINDUNG where LOAD_NR=2926  

Nun möchte ich aber nicht jedesmal die Abfrage neu bauen, wenn sich die LOAD_NR ändert oder ein Ora-Tabellenname hinzukommt.
Ich meinem jugendlichen Leichtsinn habe ich mir das so vorgestellt:
In der Zelle LOAD_NR, in meiner Excel wähle ich einen Wert aus,
mit welchem dann für jeden Ora-Tabellennamen eine Abfrage ausgeführt wird und am Ende das oben skizzierte Ergebnis herauskommt.

Für sachdienliche Hinweise wäre ich sehr dankbar! ;)

Viele Grüße

Content-ID: 494564

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

Ausgedruckt am: 25.11.2024 um 13:11 Uhr

akretschmer
akretschmer 13.09.2019 um 14:57:37 Uhr
Goto Top
Zitat von @n0cturne:

Ich habe eine Exceltabelle, in der ich den Füllstand bestimmter Tabellen in einer Oracle-DB dokumentiere.


Wozu braucht man das, und warum nutzt man dann nicht die Kataloge?
ukulele-7
ukulele-7 13.09.2019 um 21:18:20 Uhr
Goto Top
Fragst du denn immer mehrere LOAD_NR ab oder immer nur eine weil sich ältere nicht ändern? Verstehe denn Sinn auch noch nicht so ganz.
n0cturne
n0cturne 14.09.2019 um 00:54:06 Uhr
Goto Top
Es geht darum die Daten nach LOAD_NR in relation zu setzen, Verläufe aufzuzeigen und auch zu visualisieren.
Die Datenbank wird regelmäßig mit zusätzlichen „Datensammlungen“ beladen. Dabei wird jeder neue Datensatz, in jeder Tabelle mit der aktuellen LOAD_NR versehen.
ukulele-7
ukulele-7 14.09.2019 um 08:22:39 Uhr
Goto Top
Dann käme als SQL vielleicht auch sowas in Frage:
SELECT LOAD_NR,
count(DISTINCT ADRESSE.ID) AS Anzahl_Adresse,
count(DISTINCT BANKVERBINDUNG.ID) AS Anzahl_Bankverbindung
FROM SCHEMA.ADRESSE
FULL OUTER JOIN SCHEMA.BANKVERBINDUNG
ON ADRESSE.LOAD_NR = BANKVERBINDUNG.LOAD_NR
GROUP BY LOAD_NR
ORDER BY LOAD_NR
n0cturne
n0cturne 16.09.2019 um 11:23:54 Uhr
Goto Top
Danke für das Statement.
Hier vielleicht ein paar Größenordnungen:
Anzahl Tabellen: 42 (langsam wachsend)
Einträge pro Tabelle: ~70Mio. - 90Mio.
Anzahl versch. LOAD_NR: 714 (schnell wachsend)

Die Abfrage, die ich mit diesen Parametern durchführen muss, steht 3-5 Mal die Woche an und würde sehr lange dauern,
wenn jedes Mal alle Daten nach LOAD_NR gruppiert werden.

Daher war meine Idee eben, dass ich jedes Mal, wenn diese Auswertung ansteht, eine LOAD_NR über ein Excel-Dropdown definiert wird,
ein Button gedrückt wird und die Ergebnisse mundgerecht in einer dafür vorbereiteten Excel-Tabelle landen.

Und ab und an bin auch nicht ich der jenige, welcher diese Auswertung fährt und die Kollegen haben keinen technischen background.
ukulele-7
ukulele-7 16.09.2019 um 11:49:47 Uhr
Goto Top
Also fragt ihr nicht jedes mal alle LOAD_NR ab sondern macht nur Stichproben? Man könnte ja noch
WHERE LOAD_NR IN ( 2926,714 )
definieren. Wenn es einen Index auf LOAD_NR gibt müsste das performant laufen.

Aber Excel kann das WHERE natürlich schlecht bestücken. Da müsste man entweder das Query anpassen oder es gibt in Excel Möglichkeiten Werte aus Zellen in das WHERE einzubauen.
n0cturne
n0cturne 16.09.2019 um 13:52:52 Uhr
Goto Top
Hier mal zum Verständnis mein aktuelles Arbeitsergbnis, welches ich per Hand erstelle.
In B1 würde ich gerne die LOAD_NR 4711z.B. definieren und dann auf "Start" drücken.
Anschließend sammelt Power Query die Daten aus der DB und die Ergebnisse werden in eine neue Spalte, analog zu 2626, 2628, ect., angehängt.
excel_tabelle