Beispieldaten für Power BI mit ChatGPT erstellen

Für ein Schulungsprojekt benötige ich Beispieldaten für Power BI.

Reale Daten zu verwenden, kommt nicht in Frage und die offiziellen Beispiele, die man sich bei Microsoft herunterladen kann, sind in Englisch, was mir für die geplante Schulung nicht gefällt.

Bald kam mir der Gedanke, Beispiele mit einem Python-Skript zu erzeugen. Zwar verfüge ich über Python-Grundkenntnisse, trotzdem müsste ich mir aber, sagen wir mal, 100 Kundennamen einfallen lassen.

Warum also für diesen Job nicht mal die derzeit viel gehypte KI ChatGPT beauftragen?

Das Beispiel-Projekt

In meinem Beispiel möchte ich völlig frei erfundene Umsätze einer Fake-Elektro-Großhandlung auswerten.
Dazu möchte ich eine Datei mit 10 Verkäufern, eine Datei mit 250 Kunden, eine CSV mit 100 Artikeln und schließlich eine Datei mit Verkaufsvorgängen haben. Um aussagekräftige Auswertungen vornehmen zu können, möchte ich hier 6.000 Vorgänge haben.

Der erste Versuch: die Verkäufer-Datei

Um ein Python-Skript zu erhalten, welches eine Datei verkaeufer.csv mit 10 ausgedachten Verkäufern erstellt, habe ich folgende Anweisung an ChatGPT gestellt:

hallo, bitte erstelle ein Python Script, welches eine CSV-Datei erzeugt. Die CSV-Datei soll erzeugt werden im Verzeichnis c:\temp und verkaeufer.csv heißen. Die Datei soll drei Spalten und 10 Zeilen haben. Die erste Spalte heißt Personalnummer. Bitte erzeuge dort 10 zufällige 4-stellige Personalnummern. Die zweite Spalte heißt Name. Bitte erzeuge hier für jede Zeile einen zufälligen Nachnamen. Die dritte Spalte heißt Vorname. Bitte erzeuge hier für jede Zeile einen zufälligen Vornamen.

Das „hallo“ ist zwar nicht notwendig, ich bin aber über 50 und da sind ein paar grundlegende Umgangsformen noch Pflicht. Selbst gegenüber einer KI.

Es hat ungefähr 10 Sekunden gedauert, dann hat ChatGPT ein übersichtliches Python-Skript erstellt, welches sogar Kommentare enthält.
Ich bin mir nicht sicher, ob ich das Skript veröffentlichen darf. Zwar habe ich ChatGPT gefragt, aber nur als Antwort erhalten, ich solle doch die Nutzungsbedingungen von OpenAI lesen. Das habe ich mir aber erspart.

Daher hier nur ein Auszug des Skripts:

import random
import csv

# Liste mit möglichen Nachnamen und Vornamen
nachnamen = ["Müller", "Schmidt", "Schneider", "Fischer", "Weber", "Meyer", "Wagner", "Becker", "Schulz", "Hoffmann"]
vornamen = ["Max", "Maria", "Sophia", "Emma", "Oskar", "Lena", "Finn", "Mia", "Hannah", "Lucas"]

# Zufällige Personalnummern erstellen
personalnummern = [random.randint(1000, 9999) for _ in range(10)]
...

Nachdem ich das Skript ausgeführt habe, hatte ich folgende CSV-Datei:

Personalnummer,Name,Vorname
3910,Fischer,Sophia
4141,Wagner,Lena
6921,Becker,Finn
1972,Schulz,Oskar
2384,Schmidt,Oskar
5357,Schmidt,Emma
7344,Schneider,Maria
3858,Meyer,Oskar
4662,Wagner,Mia
8870,Schneider,Mia

Die Artikel-Datei

Die nächste Anweisung an ChatGPT war, eine Artikel-Datei mit 100 Artikeln zu erzeugen – bzw. ein Python-Skript, welches wiederum die CSV-Datei erzeugt:

bitte erstelle ein Python Script, welches eine CSV-Datei erzeugt. Die CSV-Datei soll erzeugt werden im Verzeichnis c:\temp und artikel.csv heißen. Die Datei soll 4 Spalten und 100 Zeilen haben. Die erste Spalte heißt Artikelnummer. Bitte erzeuge dort 100 zufällige 6-stellige Artikelnummern. Die zweite Spalte heißt Artikelbezeichnung. Bitte erzeuge dort jeweils eine Bezeichnung aus dem Bereich Elektronikartikel. Hänge dann immer eine dreistellige zufällige Zahl an. Eine Artikelbezeichnung wäre als zum Beispiel „Fernseher 354“. Die dritte Spalte ist die Kategorie. Fülle diese Spalte mit der Artikelbezeichnung ohne die angehängte zufällige Zahl. Die vierte Spalte ist der Preis. Bitte erzeuge dort zufällig einen Preis mit zwei Dezimalstellen zwischen 10 und 500 Euro.

Auch hier hat das Python-Skript sofort fehlerlos funktioniert. Die KI hat Artikel aus dem Bereich Elektro wie Fernseher, Tablets oder Spielekonsolen erstellt und wie von mir gefordert, immer eine 3-stellige Zahl angehängt. So gibt es in der CSV-Datei z.B. einen „Fernseher 778“, der in der Kategorie „Fernseher“ ist.

Artikelnummer,Artikelbezeichnung,Kategorie,Preis
925467,Laptop 975,Laptop,60.61
149834,Fernseher 778,Fernseher,408.03
701492,Blu-ray-Player 923,Blu-ray-Player,448.3
809803,Blu-ray-Player 537,Blu-ray-Player,71.41
101661,Spielekonsole 534,Spielekonsole,456.43
250609,Tablet 311,Tablet,483.79
225371,Blu-ray-Player 409,Blu-ray-Player,228.49
...

Die Kunden-Datei

Die nächste Aufgabe war, eine Kunden-Datei zu erstellen. Hier war mir nun auch wichtig, dass meine Kunden international sind und nicht nur aus „Johannes Müller“ und „Liselotte Wagner“ bestehen:

bitte erstelle ein Python Script, welches eine CSV-Datei erzeugt. Die CSV-Datei soll erzeugt werden im Verzeichnis c:\temp und kunden.csv heißen. Die Datei soll 5 Spalten und 250 Zeilen haben. Die erste Spalte heißt Kundennummer. Bitte fülle diese mit einer zufälligen 6-stelligen Zahl. Die zweite Spalte heißt Name. Bitte fülle diese mit einem zufälligen Nachnamen. Es dürfen auch nicht-deutsche Namen vorhanden sein. Die dritte Spalte heißt Vorname. Bitte fülle diese mit einem zufälligen Vornamen. Es dürfen auch nicht-deutsche Vornamen vorhanden sein. Die vierte Spalte heißt Geburtsdatum. Bitte fülle diese mit zufälligen Geburtsdaten zwischen 1945 und 2004.

ChatGPT kann selbst Fehler beheben

An dieser Stelle hat ChatGPT nun zum ersten Mal einen Fehler gemacht.
Die von dem Python-Skript erzeugte CSV-Datei enthielt zwar wie angefordert ein Geburtsdatum für jeden Kunden, jedoch war in jedem Beispiel die Jahreszahl falsch: das Jahr hieß zum Beispiel 0071, 0004 oder 0048.

Das Folgende habe ich ChatGPT dazu mitgeteilt:

mit dem Geburtsdatum stimmt etwas nicht. das Jahr fängt nun immer mit 00 an, z.B. 0044. Das Jahr soll aber zwischen 1945 und 2004 liegen. kannst Du das korrigieren?

Nach ca. 20 Sekunden Bedenkzeit hatte ChatGPT den Fehler dann selbst gefunden und behoben:

Es tut mir leid, dass das Skript einen Fehler enthält.

Um das Problem zu beheben, müssen Sie den timedelta-Wert berechnen, indem Sie das aktuelle Jahr von dem gewünschten Jahrbereich (1945-2004) subtrahieren.

Hier ist der korrigierte Code:

Das neue Python-Skript hat die Geburtsjahre dann korrekt erzeugt, mit vorangestellter 19 bzw. 20.

Jedoch enthielten die ausgedachten Geburtsdaten noch weitere Fehler: so gab es zum Beispiel Geburtstage am 31. April oder am 30. Februar. Ich habe ChatGPT nicht darum gebeten, auch diese Fehler noch zu korrigieren. Ein paar Fehler in den Quelldateien sind ja auch in einer Schulung praktisch und vor allem ja leider auch realistisch.

Die Verkäufe für die Faktentabelle

Bisher habe ich nur CSV-Tabellen für die Lookup-Tabellen erzeugt. Zu guter Letzt benötige ich noch eine CSV-Datei mit Verkäufen. So kann ich in der anstehenden Schulung eine zentrale Faktentabelle mit ein paar Lookup-Tabellen umgeben und gleich anschaulich das Stern-Schema erläutern. Ich habe mir in den Kopf gesetzt, 6.000 Vorgänge zu haben und diese würde ich mir nun wirklich nicht ausdenken wollen.

Hier ist meine Anweisung an ChatGPT:

erstelle bitte noch ein Python-Skript, das eine Datei verkaeufe.csv erstellt. Die Datei soll 5 Spalten haben und 6.000 Zeilen. Die erste Spalte soll vorgangsnummer heißen und mit einer fortlaufenden 8-stelligen Nummer gefüllt werden. Die erste Vorgangsnummer soll 10000001 sein, dann fortlaufen. Die zweite Spalte heißt verkaufsdatum. Fülle diese bitte mit zufälligen Datumsangaben in deutschem Format aus den Jahren 2020, 2021 und 2022. Die dritte Spalte heißt artikelnummer. Bitte fülle diese Spalte mit Werten, die in der Datei artikel.csv in der ersten Spalte vorkommen. Die vierte Spalte heißt Anzahl. Bitte fülle diese Spalte mit zufälligen Ganzzahlen zwischen 1 und 100. Die fünfte Spalte heißt „verkäufer nummer“. Bitte fülle diese Spalte mit Werten, die in der Datei verkaeufer.csv in der ersten Spalte vorkommen.

Die erzeugte CSV-Datei sieht so aus:

Vorgangsnummer,Verkaufsdatum,Artikelnummer,Anzahl,Verkäufernummer
10000002,10.6.2021,101661,68,7344
10000003,3.10.2021,603039,85,8870
10000004,3.6.2021,446647,97,4662
10000005,7.2.2021,925301,44,4662
10000006,13.10.2022,454253,44,7344
...

Ich möchte noch erwähnen, dass der ganze Vorgang hier von mir etwas verkürzt dargestellt wird. ChatGPT war manchmal so ausgelastet, dass die Erzeugung des Python-Skripts abgebrochen ist. Wenn man ChatGPT dann bittet, es nochmals zu versuchen, klappt es dann aber meist schnell.

Ein mal musste ich fragen: „hey, hast Du Dich aufgehängt?“ Und die Antwort war: „Entschuldigung, ich habe mich verknüpft“. Das kenne ich nur zu gut, ich verknüpfe mich auch hier und da mal 😉

Das fertige Datenmodell

Die so erzeugten Daten habe ich in Power BI Desktop eingelesen und die Tabellen im Stern-Schema verknüpft.

Das fertige Datenmodell

Die falschen Geburtstage der Kunden (31. April) habe ich der Einfachkeit halber so behandelt, dass ich diese Datensätze in Power Query verworfen habe. In der Realität sollte man hier bereits an der Quelle das Problem lösen.

Fazit

Es war super spannend, diese ersten Gehversuche mit der KI ChatGPT als Programmier-Gehilfe zu unternehmen. Es hat viel Spaß gemacht und vor allem hat es mir wirklich sehr viel Arbeit erspart!

Ich möchte ChatGPT aber nicht in den Himmel loben. Insbesondere ärgert es mich, dass die KI bei wissenschaftlichen Fragen Quellenangaben mit erstaunlicher Phantasie frei erfindet. Das muss OpenAI der KI dringend abgewöhnen.

Schreibt mir gerne Eure Erfahrungen mit ChatGPT in die Kommentare!

0 Kommentare

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert