Jakub ist ein leidenschaftlicher Low-Code-Experte und besitzt mittlerweile 3,5 Jahre Erfahrung mit der Power Platform. Er ist seit fast zwei Jahren bei Objectivity.
Inhaltsverzeichnis
Verwendung von SQL in PowerApps
Das Tolle an PowerApps ist die Möglichkeit, sich mit verschiedenen Datenquellen und Diensten zu verbinden – sehen Sie sich die vollständige Liste der Konnektoren an. In den meisten Fällen kann zwischen Dataverse, SQL und SharePoint gewählt werden. In diesem Artikel konzentrieren wir uns auf SQL und beschreiben die 2 nützlichsten Elemente.
Mit der SQL-Datenbank können Sie Ansichten (Views) erstellen. Canvas App behandelt sie wie separate Datentabellen, die verbunden und als Datenquelle zu Ihren Elementen hinzugefügt werden können, z. B. Galerie, Tabelle und Formular. Aktionen wie „gruppieren nach“, „filtern nach“ und „JOIN“ können auf der Kunden-Seite durchgeführt werden, aber das macht Ihre App schwieriger. Alle erwähnten Aktionen können in das View-Objekt der SQL-Datenbank verschoben werden. Sie können dedizierte Ansichten für Galerien mit erforderlichen Spalten erstellen, sodass Sie keinen Code benötigen, um Daten/Informationen aus der zugehörigen Tabelle in Ihrer App abzurufen. Dies ist sehr vorteilhaft, insbesondere wenn Sie komplexe Abfragen mit mehreren JOINs durchführen müssen. Dies ist mit anderen Datenquellen viel umständlicher durchzuführen.
Stored Procedures
SQL-Code, den Sie speichern und mehrfach wiederverwenden können, wird als Stored Procedure bezeichnet. Eine wichtige Tatsache ist, dass Sie ihm Parameter zuordnen können. Warum ist es wichtig? Sie können eine Last bewegen, die z. B. bei einer Berechnungen von Ihrer App auf einen Server getätigt wurde. So halten Sie Ihre App „schlank“ und können komplizierte Abfragen auf einem Server ausführen.
Erstellen Sie einen Power Automate Flow und nutzen Sie die Aktion „Execute stored procedure (V2)“.
Wenn Sie auf die folgende Seite gehen https://docs.microsoft.com/en-us/connectors/sql/ und zum Abschnitt „Allgemeine bekannte Probleme und Einschränkungen“ scrollen, finden Sie leider einen Punkt mit der Aufschrift „If the SQL query/stored procedure execution time exceeds 110 seconds, actions will timeout.“ Dies kann ein erhebliches Problem darstellen, wenn der Benutzer auf ein Ergebnis wartet und die Prozedur länger als 110 Sekunden dauert – der Vorgang wird abgebrochen. Glücklicherweise gibt es eine Möglichkeit, gespeicherte Prozeduren zu verwenden und Benutzer über die Ergebnisse zu informieren!
Stored Procedure Workaround
Es gibt viele Möglichkeiten, diese Problemumgehung durchzuführen, aber in diesem Artikel konzentrieren wir uns auf die Methode, die tatsächlich in einem unserer Projekte verwendet wurde.
Um in Ihrer Canvas-App das Hinzufügen von Flows zu automatisieren, z. B. RecordID. Der Flow enthält folgende Aktionen:
- GUID generieren
- Fügen Sie eine Zeile in die Logs-Tabelle mit Informationen ein, dass der Flow für RecordId gestartet wurde und ordnen Sie sie der GUID zu eine Nachricht in die Queue setzen
- Fügen Sie eine Zeile in die Logs-Tabelle mit Informationen ein, dass der Flow für RecordId beendet wurde und ordnen Sie sie der GUID zu
- Return GUID an unsere Canvas-App
Die Nachricht von Azure wird von der Azure-Funktion abgeholt (wir verwendeten sie bereits in unserem Projekt) und löst dann die gespeicherte Prozedur aus. Ganz am Ende des Vorgangs haben wir unserer Protokolltabelle eine Zeile mit der Information hinzugefügt, dass der Vorgang abgeschlossen ist.
Sobald die Canvas-App die GUID erhält, speichert sie ihren Wert in einer Variablen und löst die Timer-Steuerung aus.
In der Timer-Steuerung können Sie in jedem definierten Zeitraum handeln, sodass Sie den Timer so einstellen können, dass er die Protokolltabelle alle 10 Sekunden aktualisiert. In jeder Schleife prüfen Sie, ob die gespeicherte Prozedur die Antwort zurückgegeben hat. Wenn ja, können Sie einen Benutzer benachrichtigen, dass unsere Berechnung abgeschlossen ist und den Timer ausschalten.
Timer Property – OnTimerStart:
Zusammenfassung
Zusammenfassend lässt sich sagen, dass die Nutzung von SQL als Datenquelle für Ihre Canvas App ein sehr leistungsfähiges Werkzeug ist und die Verwendung von Ansichten kann die in Ihrer App verwendeten Formeln vereinfachen. Bei der Bereitstellung von hochwertigen Apps, müssen Sie sich jedoch der Einschränkungen bewusst sein.
Jakub ist ein leidenschaftlicher Low-Code-Experte und besitzt mittlerweile 3,5 Jahre Erfahrung mit der Power Platform. Er ist seit fast zwei Jahren bei Objectivity.