Microsoft Polyglot Notebooks in VS Code SQL-Integration in Polyglot Notebooks

Von Dipl. -Ing. Thomas Drilling 3 min Lesedauer

Anbieter zum Thema

Microsoft Polyglot Notebooks eröffnen interessante Möglichkeiten. Dieser Artikel greift das Thema noch einmal auf und zeigt anhand der Kommunikation mit einer MS SQL Datenbank, wie man mit der VS-Code-Erweiterung arbeiten kann.

Das Hinzufügen der Extension für Polyglot Notebooks.(Bild:  Drilling / Microsoft)
Das Hinzufügen der Extension für Polyglot Notebooks.
(Bild: Drilling / Microsoft)

Im Beitrag zum dynamischen Kernel Picker für Microsoft Polyglot Notebooks hatten wir bereits kurz über die Entstehungsgeschichte der Polyglot Notebooks referiert. Zur Auffrischung: Bei Microsofts Polyglot Notebooks handelt es sich um Weiterentwicklung der .NET Interactive Notebooks in Visual Studio Code.

Da Entwickler und Entwicklerinnen in der Regel die jeweils optimale Sprache für die jeweilige Aufgabe einsetzen, wurde das zugrunde liegende .NET Interactive über die Jahre schrittweise zu einer Engine weiterentwickelt. Schon vor der Umbenennung in „Polyglot Notebooks“ war diese dazu in der Lage, mehrere Sprachen auszuführen, und integrierte .NET-Sprachen in das Jupyter-Ökosystem.

Daher bietet die Lösung heute vollständige Unterstützung von Sprachservern und die gemeinsame Nutzung von Variablen für C#, F#, PowerShell, HTML, Mermaid, JavaScript sowie SQL. Es sind insbesondere die Sprachkombinationsmöglichkeiten, die .NET Interactive zu einem leistungsstarken Kernel für Jupyter-Notebooks machen, mit denen sich unterbrechungsfreie, mehrsprachige Workflows umsetzen lassen.

Im Jahr 2022 hatte Microsoft eine Funktion zur dynamischen Kernelauswahl angekündigt. Die Implementierung Ende 2023 war der Anlass für unseren letztjährigen Artikel. Unter anderem brachte sie eine Verbesserung bei der Unterstützung von SQL und für Microsofts Kusto Query Language (KQL) mit. Den SQL-Support wollen wir uns hier noch einmal anschauen.

Polyglot Notebooks lassen sich nämlich auch einfach nur als VS-Code-Extension nutzen, etwa zum Abfragen eine SQL-Datenbank. Das Ergebnis könnte man dann in einem Programm beispielsweise an JavaScript weitergeben und dann wiederum in Javascript etwas Sinnvolles mit den Daten anstellen. Der Clou dabei ist, dass der gesamte Workflow im gleichen Tool, nämlich der Notebook-Datei, umgesetzt wird.

Wie man die Extension in Betrieb nimmt, hatten wir bereits grob beschrieben. In der Bildergalerie vollziehen wir die Schritte noch einmal nach.

Bildergalerie
Bildergalerie mit 5 Bildern

Somit ist jede Zelle im Notebook eine eigene strukturelle Einheit, die wahlweise Code einer bestimmten Sprache oder Markdown (Kommentare) enthält. Mit einem Klick auf „Alle ausführen“ ist es beispielsweise möglich, sämtliche Zellen nacheinander auszuführen und die Ausgabe anzuzeigen. Über die beiden kleinen Dreiecks-Symbole oben rechts können wir aber auch einzelne Zellen ausführen. Bei etwaigen Problemen lässt sich der jeweilige Kernel problemlos neu starten, ohne die ganze Entwicklungsumgebung in Mitleidenschaft zu ziehen. Ein Klick auf „Variablen“ zeigt sämtliche Variablen im Kernel an.

Je nachdem, wie eine datengetriebene Anwendung im Detail aufgebaut ist, können wir also verschiedene Sprachen und Technologien (C#, SQL, Mermaid, das aus Markdown Grafiken gestaltet und vor allem so genannte Polyglot Magic Commands) in einem Notebook kombinieren und die Komponenten miteinander interagieren lassen. Unter Magic Commands versteht Microsoft spezifische Befehle für Polyglot Notebooks, mit deren Hilfe User z. B. ihre Notebook-Umgebung steuern können, etwa zum Konfigurieren von Variablen, oder um Code innerhalb einer Code-Zelle in anderen Sprachen ausführen zu können.

SQL-Datenbank abfragen

Nun wollen wir den Umgang mit Notebooks mit aus unserem VS-Code-/SQL-Server-Artikel verknüpfen. So könnte man später Daten abfragen, die in einer SQL-Datenbank liegen. Um die Verbindung zu einer MS-SQL-Datenbank zu konfigurieren, gilt es zunächst, die zu verwendende Verbindungszeichenfolge zu erstellen.

Hierfür werden, wie schon im SQL-Artikel erläutert, benötigt: ein öffentlicher oder privater DNS-Name (Endpunkt-URL) des SQL-Servers, der Name der Datenbank selbst, der Benutzername des SQL-Administrators und dessen Passwort. Markdown lässt sich wahlweise für das ganze Notebook oder in einzelnen Zellen verwenden. Dank Markdown ist es möglich, die zugehörigen Anweisungen komfortabel in einer Markdown-Zelle zu kommentieren:

## SQL Verbindungszeichenfolge generierenDas Ausführen dieser Zelle generiert eine SQL-Server-Verbindungszeichenfolge; dabei werden Sie nach Benutzername und Passwort gefragt“.

Das Definieren einer SQL-Verbindungszeichenfolge.(Bild:  Drilling / Microsoft)
Das Definieren einer SQL-Verbindungszeichenfolge.
(Bild: Drilling / Microsoft)

Der Name des SQL-Administrators (sqlusername) und dessen Passwort (password) hingegen sollen abgefragt werden. Mit Polyglot Magic Commands lässt sich das so umsetzen, wie in der nebenstehenden Abbildung. Indem wir in der C#-Zelle die abgebildeten Magic Commands anwenden, können die erstellten Variablen direkt in der C#-Zelle verwendet werden. Die zugehörige Code-Zelle erstellen wir in C#-Code, etwa so:

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Cloud Computing

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung
var URLdbserver = "ctdotnetappsqldbdbserver.database.windows.net";
var DatabaseName = "DotNetAppSqlDb_db";
#!set --value @input:"Gib Benutzername" --name sqlusername
#!set --value @password:"Gib Passwort" --name password

Das Erstellen einer SQL-Server-Verbindungszeichenfolge in einem Notebook.(Bild:  Drilling / Microsoft)
Das Erstellen einer SQL-Server-Verbindungszeichenfolge in einem Notebook.
(Bild: Drilling / Microsoft)

Das klappt übrigens auch ohne Magic-Command in purem C#, hierfür ist es allerdings erforderlich, die Bibliothek „Microsoft.DotNet.Interactive“ einzubinden. Ist das erledigt, können wir z. B. SQL-Code in ihr Notebook integrieren.

(ID:50065396)