,

DAX erzeugen mit ChatGPT

ChatGPT schreibt nicht nur Gedichte und LinkedIn-Beiträge, sondern kann auch programmieren.

Python-Skripte habe ich bereits mit ChatGPT erzeugt, das Schreiben von DAX-Code habe ich aber noch nie ausprobiert. Dazu habe ich immer auf eine reale Gelegenheit gewartet, die nun gekommen war.

Das Problem

In einem kleinen Power BI – Projekt hatte ich folgende Herausforderung:

Es gibt zwei Tabellen, die bereits geladen sind – nennen wir sie Table1 und Table2.
In beiden Tabellen gibt es eine Spalte ID mit jeweils innerhalb der Tabelle eindeutigen Werten.
Die Datensätze innerhalb der Tabellen sind unterschiedlich, es kann aber vorkommen, dass in Table2 in der Spalte ID ein Wert steht, der so auch bereits in Table1 vorkommt.
In diesem Fall möchte ich nun in Table2 in einer berechneten Spalte „Flag“ das Flag „Yes“ setzen – als Kennzeichen, dass diese ID in beiden Tabellen vorkommt.

Nun also fix den DAX-Code zum Erzeugen des Flags schreiben – nur: ich habe keine Idee, wie ich das machen soll.

Ich sehe zunächst zwei Möglichkeiten: nachdenken und googlen. Eine Kombination aus beidem hätte sicher zum Ziel geführt, allerdings auch Zeit verbraucht.

Die Anfrage an ChatGPT

Warum diese Aufgabe nicht an ChatGPT delegieren?
Seit einigen Tagen basiert ChatGPT auf GPT-4 und soll nochmals deutlich an Leistungsfähigkeit hinzugewonnen haben.

Die Qualität einer Antwort von ChatGPT steht und fällt mit dem Promt – also der formulierten Anfrage.
Garbage in – Garbage out oder andersherum: eine gut formulierte Anfrage führt auch zu guten Ergebnissen.

Obwohl ChatGPT deutsch spricht, habe ich mich für eine englische Anfrage entschieden. Ich mutmaße, dass die Antworten dann noch etwas besser ausfallen.

Mein Promt:

Hi, could you help me with some DAX for Power BI?
I have two tables - let´s say table1 and table2.
Both tables do have a column with the name ID.
Now I want to have a calculated column in table2 containing a flag.
If the content of column ID in table2 exists in any row of column ID in table1 the flag should be yes. Otherwise it should be no.

Nun ging es wirklich rasend schnell. Mit GPT-3 hätte man ChatGPT noch beim Denken zusehen können, die Antwort erhielt ich aber innerhalb von 2 Sekunden:

Flag = 
IF(
	CONTAINS(
		Table1, 
		Table1[ID], 
		Table2[ID]
	), 
	"Yes", 
	"No"
)

Die Formatierung habe ich vorgenommen, ChatGPT hat mir den Code in einer langen Wurst geliefert. Womöglich hätte die KI aber auch die Formatierung noch erledigt, wenn ich sie darum gebeten hätte. Das habe ich nicht getestet.

Flugs den Code kopiert und in mein Power BI – Projekt eingefügt.
Doch ich erhielt eine Fehlermeldung, worüber ich ChatGPT gleich in Kenntnis setzte:

I have got an error message saying "The expression refers to multiple columns. Multiple columns cannot be converted to a scalar value."

Das finde ich nun wirklich den spannenden Teil bei der Arbeit mit ChatGPT. Man kann die KI auf Fehler aufmerksam machen und die KI korrigiert sich selbst. Hier ist die Antwort:

Ah, it looks like the "CONTAINS" function is returning a table instead of a single value, which is causing the error.

You can use the "COUNTROWS" function to check if any rows are returned by the "CONTAINS" function and return "Yes" if there is at least one row, and "No" if there are no rows returned.

Here's an updated formula:
Flag =
IF (
    COUNTROWS (
        FILTER (
            Table1,
            Table1[ID]
                = EARLIER ( Table2[ID] )
        )
    ) > 0,
    "Yes",
    "No"
)

Diese korrigierte Version hat nun tadellos funktioniert und alle besagten Reihen in Table2 haben nun ein Flag „Yes“ welches mir sagt, dass diese Reihe so auch in Table1 vorkommt.

Lessons learned

Der ganze Vorgang dauerte nur etwa 10 Minuten.
Habe ich nun nichts dabei gelernt, weil ich die Arbeit an eine KI delegiert habe?
Ganz im Gegenteil: Zum einen ist es sehr wichtig, die richtigen Techniken zu üben, um ChatGPT zu den richtigen Antworten zu bewegen.
Zum Anderen habe ich auf diese Weise die Funktion EARLIER kennengelernt, von der ich zuvor noch nichts gehört habe.
Es ist dann natürlich wichtig, die Dokumentation – in diesem Fall zur Funktion EARLIER – zu lesen und nachzuvollziehen. So entsteht der Lern-Effekt.

Den ganz spannenden Teil fand ich, wie gesagt, dass die KI durchaus Fehler macht. Aber wenn man sie dann darauf aufmerksam macht und wie in diesem Fall die Fehlermeldung liefert, ist ChatGPT selbst in der Lage, den Fehler und damit sich selbst zu korrigieren.

Fazit

Man kann zu KIs wie ChatGPT stehen, wie man will. Man kann begeistert sein oder man kann (teilweise berechtigte) Sorgen haben. Fakt ist aber, die KI ist da und wird unser aller (Berufs-)Leben verändern.
Ich sehe für meinen Arbeitsalltag jedenfalls die Chance, die Geschwindigkeit und die Qualität von Programmieraufgaben dramatisch zu verbessern.

Wie siehtst Du das?

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