MicroStrategy ONE
Erstellen Sie ein Python-fähiges Transaktions-Dashboard
Beginnend in MicroStrategy ONE (März 2024) können Sie Python-fähige Transaktions-Dashboards erstellen in MicroStrategy Cloud Umgebungen und auf der MicroStrategy Cloud für die Regierungsplattform. Um ein Python-fähiges Transaktions-Dashboard zu erstellen und auszuführen, müssen Sie:
-
Stellen Sie sicher, dass die Umgebung die Verwendung des Python-Executors unterstützt
Diese Funktion wird auf der Microstrategy Cloud Environment-Plattform unterstützt. Kontakt MicroStrategy Unterstützung um diese Funktion zu aktivieren.
-
Wählen Sie eine Datenquelle mit einem öffentlichen Endpunkt zum Rückschreiben von Datenänderungen
-
Aktualisieren Sie die Metadaten auf die neueste Version
-
Erstellen eines transaktionsfähigen Dashboards
-
Erstellen Sie eine benutzerdefinierte Laufzeit und laden Sie alle erforderlichen Python-Pakete als Teil dieser Laufzeit herunter
-
Erstellen Sie ein Python-Skript mit den erforderlichen Datenmanipulationsaktionen
-
Konfigurieren des Dashboards mit dem zugehörigen Skript
Beginnen Sie mit Erstellen eines transaktionsfähigen Dashboards und befolgen Sie dann die nachstehenden Schritte.
Erstellen einer benutzerdefinierten Runtime
Das Privileg „Laufzeiten verwalten“ ist erforderlich. Benutzer mit dieser Berechtigung können Pakete von Drittanbietern herunterladen. Daher sollten nur geprüfte Analysten über diese Berechtigung verfügen.
Sehen Python-Laufzeitumgebungen erstellen und bearbeiten für mehr Informationen.
Benutzer mit der Berechtigung „Laufzeit verwalten“ können aktuell vorhandene Laufzeiten anzeigen und verwalten sowie neue erstellen. Alle Umgebungen haben eine Standardlaufzeit. Beim Erstellen einer Laufzeit können Benutzer deren Namen, Beschreibung, Adressen, mit denen eine Verbindung hergestellt werden kann, darauf installierte Pakete und eine Größe für die Skriptausführung ändern. Die Größe der Laufzeitinstanz bestimmt die Ressourcen (CPU und Speicher), die für jede mit dieser Laufzeit verknüpfte Skriptausführung verfügbar sind.
- Öffnen Sie Workstation und Herstellen einer Verbindung mit einer Umgebung.
-
Klicken Sie im Navigationsbereich auf Monitore.
Alle Umgebungen haben einen Standardlaufzeitnamen von (Standard) MicroStrategy.
Zu den Standardlaufzeiten gehören die neuesten Versionen der Python- und mstrio-Pakete sowie eine Standardinstanzgröße und eine Standardkonfiguration für den Netzwerkzugriff. Benutzer können das mstrio-Paket verwenden, um darauf zuzugreifen MicroStrategy Daten unter Verwendung der Standardlaufzeit.
Benutzer können die Konfiguration der Standardlaufzeit nicht ändern. Wenn ein Benutzer die Instanzgröße, den Netzwerkzugriff oder die Paketkonfiguration anpassen möchte, muss er eine neue Laufzeit erstellen.
-
Klicken Sie im linken Bereich auf
neben Laufzeit.
-
Geben Sie ein Laufzeitname Und Beschreibung. Neu erstellte Runtimes verwenden die neuesten Python-Version. Für vorhandene Laufzeiten können Sie auf die neueste Python-Version aktualisieren. Der Standard Größe der Laufzeitinstanz Ist 0,2 vCPU 0,5 GB Arbeitsspeicher.
-
In Netzwerkzugang, geben Sie das Netzwerk mit zulässigem Zugriff von der Python-Laufzeitumgebung aus ein. Das Format muss folgen Klassenloses Inter-Domain Routing (CIDR) Format, beispielsweise 141.193.213.21/32.
-
Klicken
unten links, um ein neues Paket hinzuzufügen, das in der Python-Laufzeit installiert werden soll. Wenn die Paketversion nicht angegeben ist, wird die neueste Version installiert. Verwenden Sie das Format: [Paketname][Leerzeichen][Paketversion].
Beispiele:
-
Anfragen 2.28.1
-
Anfragen
-
-
Klicken Sie auf Hinzufügen.
-
Pakete unterstützen typischerweise die Verbindung zur Datenquelle, um Datenänderungen zurückzuschreiben, unterstützen Manipulationen mit MicroStrategy APIs oder eine Verbindung zu anderen Anwendungen wie Microsoft Teams. Klicken Sie auf den Pypi-Link, um den genauen Paketnamen und die Version zum Herunterladen zu finden.
-
Klicken Hinzufügen um die Laufzeit zu speichern und zu warten, bis die Installation abgeschlossen ist. Aktualisieren Sie die Seite, um den Status zu überprüfen.
Einige hilfreiche Tipps:
-
Denken Sie daran, nach jedem Eintrag in jedem Feld (Netzwerkzugriff, Paketname und Version) die Eingabetaste zu drücken, bevor Sie auf Hinzufügen oder OK , um die Änderung zu bestätigen.
-
Sie können einer Laufzeit mehr als ein Paket hinzufügen.
-
Fügen Sie nach der Objektmigration von einer Umgebung in eine andere Pakete in den neuen Umgebungen erneut hinzu, um die Laufzeit vorzubereiten. Ohne diesen zusätzlichen Schritt funktioniert die Laufzeit nicht.
-
Standardmäßig, Alle hat ein Sicht ACL für eine Laufzeit.
Erstellen eines benutzerdefinierten Python-Skripts
Richten Sie Benutzer mit den folgenden Berechtigungen ein:
-
Verwenden Sie Skripte Python
-
Python-Skripts zertifizieren
-
Die folgenden ACLs werden empfohlen:
-
Zum Lesen von Skripten ist eine Lese-ACL für Skripte erforderlich.
-
Für Aktualisierungsskripte ist eine Schreib-ACL für Skripte erforderlich.
-
Zum Ausführen von Skripts ist eine Ausführungs-ACL für Skripts und eine Ausführungs-ACL für Laufzeiten erforderlich.
-
- Öffnen Sie Workstation und Herstellen einer Verbindung mit einer Umgebung.
-
Klicken Sie im Navigationsbereich auf
neben Skripte.
-
Öffnen Sie die Skripteinstellungen, um den Skripttyp zu ändern in Transaktion und wählen Sie die entsprechende Python-Runtime aus.
-
Beginnen Sie mit der Erstellung eines Skripts, indem Sie eine Vorlage aus der Galerie auswählen und ändern oder von vorne beginnen.
-
Variablen in einem Skript werden normalerweise Spalten im Dashboard-Raster zugeordnet. Bei der Definition von Variablen Spalte Der Parameter ist standardmäßig aktiviert. Deaktivieren Sie diese Option für nicht transaktionale Variablen, z. B. wenn die Variable für den internen Gebrauch bestimmt ist, etwa zum Herstellen einer Verbindung mit einer Datenquelle.
-
Wählen Sie für das Passwort für die Verbindung zur Datenquelle den nicht transaktionalen Typ Variable aus. Geheimnis.
-
Erwägen Sie die Einbindung einer Systemaufforderungsvariable, um die Anmeldungen der Benutzer aufzuzeichnen und zu sehen, wer Änderungen an den Daten vornimmt.
-
Die Standardaktionstypen sind „Auswählen“, „Einfügen“ und „Aktualisieren“. Um zusätzlich zu diesen neue Aktionstypen zu erstellen, z. B. die Kombination von Auswählen und Aktualisieren, wählen Sie Art der Transaktion In Variablentyp. In einem einzelnen Python-Transaktionsskript kann nur eine Variable festgelegt werden als Art der Transaktion.
-
Bei einer Variablen, die dem Primärschlüssel einer Tabelle in einer Writeback-Datenquelle zugeordnet ist, möchten Sie nicht, dass der Verbraucher den Primärschlüssel ändert. In diesem Fall sollten Sie die Editierbar Parameter.
-
Für Spalten in der Datenquelle, die keine NULL-Werte zulassen, markieren Sie diese Variable als erforderlich, indem Sie das Erforderlich Parameter.
-
Wenn eine Variable nicht Erforderlichkönnen Autoren wählen, ob eine Spalte leer gelassen werden kann oder nicht, je nachdem, was die Datenbank zulässt.
-
Aktivieren Sie für Spalten, die von Benutzern bearbeitet werden sollen, die Editierbar Parameter.
-
Für die Transaktionsvorgänge können nur zertifizierte Python-Transaktionsskripte verwendet werden. Sie sollten das Skript daher zertifizieren, sobald es für den Produktionseinsatz bereit ist. Die Benutzergruppe, die Python-Transaktionsraster verwendet, sollte über die Ansichts-ACL für dieses Skript verfügen.
Empfohlene Vorgehensweise
-
Lernen Sie anhand einer Beispielcodevorlage.
-
Wählen Sie für Datenquellen, die atomare Transaktionen unterstützen, beim Vorbereiten der Laufzeit das Paket aus, das die atomare Transaktion unterstützt. Fügen Sie im Python-Skript Abschnitte hinzu, um atomare Transaktionen zu verarbeiten.
-
Verwenden Sie ggf. parametrisierte Abfragen. Auf diese Weise ausgeführte Abfragen sind nicht anfällig für Injektionsangriffe, da die Abfrage und die Parameter separat zur Ausführung gesendet werden.
-
Da der Ersteller des Python-Transaktionsskripts und der Autor des Transaktions-Dashboards nicht unbedingt dieselbe Person sind, stellen Sie die Parität zwischen dem Skript und dem Dashboard sicher. Hierzu gehört die Definition der Datenquellentabelle zum Zurückschreiben, das Zuordnen von Beziehungen zwischen den im Python-Skript definierten Variablen und dem Transaktionsrasterobjekt des Dashboards, welches Objekt bearbeitet werden kann usw.
-
Das Skript sollte detaillierte Beschreibungen dessen enthalten, was das Python-Skript unterstützt (Daten aktualisieren, neue Daten einfügen, Zeilen zum Löschen oder Einfügen in eine andere Tabelle auswählen, Microsoft Teams-Nachrichten senden, E-Mails senden usw.). Der Dashboard-Autor kann die Beschreibung des Python-Skripts aus dem Dashboard-Editor abrufen. Nur eine Person mit den entsprechenden Berechtigungen und ACLs kann Python scr öffnen
Konfigurieren des Dashboards mit dem zugehörigen Python-Skript
Erforderliche Berechtigungen
So konfigurieren Sie Transaktionen auf einem Dashboard:
-
Webkonfigurationstransaktion
-
Verwenden Sie Skripte Python
-
ACL für das zugehörige Skript anzeigen
So richten Sie Benutzer für die Nutzung des Dashboards und das Übermitteln von Änderungen ein:
-
Transaktion ausführen
-
ACL für das Skript anzeigen
Weitere grundlegende Anforderungen Library Web-Berechtigungen:
-
Verwenden Library Netz
-
Web-Dashboard erstellen
-
Dashboard für Webbearbeitung
-
Web-Speicher-Dashboard
-
Webbasiertes Dashboard
-
Erstellen von Anwendungsobjekten
-
Python-basierte Transaktionen sind für die Verwendung mit modernen Grids konzipiert. Wählen Sie ein Raster aus, öffnen Sie das Fenster „Format“ und klicken Sie auf Transaktionsoptionen
.
-
Klicken Verwenden Sie Python.
-
Wählen Sie Aktionstypen aus und geben Sie einen benutzerdefinierten Aktionsnamen, Schaltflächennamen usw. ein.
-
Aktionstypen sind die Aktionen, die der Verbraucher auf diesem Dashboard ausführen darf. Es muss mindestens ein Aktionstyp ausgewählt werden.
-
Geben Sie der Aktion einen aussagekräftigen Namen, beschreiben Sie, was die Aktion tun kann, und geben Sie der Schaltfläche einen Namen.
Beispiel:
-
Aktionsname Kundenalter aktualisieren
-
Beschreibung Bitte aktualisieren Sie das Alter des Kunden in der Spalte „Kundenalter“.
-
Schaltflächenname Einreichen
-
-
Sie können Aktionen kombinieren. Sie können beispielsweise vorhandene Daten ändern und gleichzeitig zusätzliche Datenzeilen hinzufügen. Wählen Sie Aktionsnamen, die dieses Verhalten entsprechend widerspiegeln.
-
-
Klicken Wählen Sie Python Script um alle Python-Transaktionsskripte aus dem Projekt abzurufen, in dem sich das Dashboard befindet. Standardmäßig werden nur zertifizierte Skripte angezeigt. Verwenden Sie den Filter, um durch die Liste zu navigieren und das Zielskript zu finden.
-
Nach Auswahl eines Skripts wird der Mapping-Bereich angezeigt. Der ausgewählte Skriptname wird mit einem Informationssymbol angezeigt, um die Skriptbeschreibung anzuzeigen. Oben rechts in diesem Abschnitt befindet sich ein Symbol zum Ersetzen des ausgewählten Skripts und ein Symbol zum Aktualisieren der Skriptliste aus den Metadaten. Variablen, die Daten erfordern, sind mit einem Sternchen (*) gekennzeichnet. In diesen Fällen muss zum Speichern der Konfiguration eine Zuordnung bereitgestellt werden.
Aktionstypen
-
Ändern von Daten im Raster zulassen Der Editierbar Option ist aktiviert. Autoren können die Variable auswählen, die Verbraucher ändern können sollen.
-
Daten zum Raster hinzufügen Der Neuer Dateneintrag ist ausgewählt und Sie können die Variablen auswählen, die Verbraucher einfügen können sollen.
-
Aktionen für ausgewählte Zeilen ausführen Der Editierbar Und Neuer Dateneintrag Optionen sind beide deaktiviert. In diesen Fällen wird die Zeilennummer an das Skript übergeben. Das Skript legt fest, welche Aktion für diese Zeile ausgeführt wird. Mit dieser Aktion können Sie beispielsweise eine Zeile aus dem Raster löschen.
-
-
Informationen zum Konfigurieren der Eingabesteuerelemente finden Sie unter Transaktionen in Tabellen.
-
Klicken
, um weitere Aktionen hinzuzufügen und die nach dem Absenden anzuzeigende Nachricht zu konfigurieren.
-
Klicken Erledigt um Ihre Transaktion abzuschließen und Speichern das Armaturenbrett.
Empfohlene Vorgehensweise
-
Abhängig von der Datenquelle ist zum Rückschreiben von Datenänderungen normalerweise die SQL-basierte die erste Wahl. Wenn die Datenquelle Webdienste sind, ist Python die bevorzugte Option.
-
Verwenden Sie Python-Skripte für komplexere Workflows, die Datenänderungen mit Aktionen wie dem Senden von E-Mails, Aktualisieren von Slack usw. kombinieren.
-
Wir empfehlen eine 1:1-Zuordnungsbeziehung zwischen der Skriptvariable und den Rasterobjekten, um die Konfiguration der Eingabesteuerung zu vereinfachen und festzulegen, ob das Rasterobjekt bearbeitet werden kann oder nicht.
Verwenden Sie Python-Transaktionen für Datenoperationen
-
Die Inline-Bearbeitung wird für Python-basierte Transaktionen nicht unterstützt, daher werden alle Datenänderungen im Massenmodus durchgeführt. Klicken
um mit der Datenänderung zu beginnen.
-
Sowohl Auswahl als auch Datenänderung werden für eine einzelne Aktion unterstützt.
-
Für Aktionen, die Auswahl, Änderung oder Dateneinfügung unterstützen, klicken Sie auf Daten hinzufügen um neue Daten bereitzustellen. Wenn Sie fertig sind, klicken Sie auf Hinzufügen.
-
Klicken Sie auf Übermitteln.
Empfehlungen zur Systemkonfiguration
Containerisierte Umgebungen ermöglichen die Ausführung von Skripten direkt in einem MicroStrategy Umgebung, ohne dass ein Computer eingeschaltet bleiben muss. Sie können Ihre Skripte in diesen Umgebungen speichern und überall innerhalb der Workstation darauf zugreifen sowie anderen Administratoren Zugriff gewähren. Derzeit ist die Unterstützung der serverseitigen Skriptausführung nur für Containerumgebungen aktiviert.
Sie können die Leistung von Python-Transaktionsanforderungen auf folgende Weise verbessern:
Passen Sie die Größe der Runtime-Instanz an
-
Klicken Sie im Navigationsbereich auf Monitore.
-
Klicken Sie im linken Bereich auf Laufzeit.
-
Klicken Sie im Raster mit der rechten Maustaste auf die Laufzeit und wählen Sie Bearbeiten.
-
Verstelle die Größe der Laufzeitinstanz.
Warum sollte ich die Laufzeitgröße ändern?
Die Standardlaufzeitgröße reicht möglicherweise nicht für den Speicherbedarf Ihres Skripts aus. Durch Erhöhen der Laufzeitgröße können Sie sicherstellen, dass Ihr Skript über genügend Speicher verfügt, um ohne Fehler oder Abstürze ausgeführt zu werden. Wenn Sie beispielsweise ein Skript zum Erstellen einer Datenquelle verwenden, sollten Sie größere Laufzeiten verwenden, da ein zum Erstellen von Tabellen verwendetes Skript diese in den Speicher laden könnte.
Welche Risiken sind mit der Verwendung einer großen Umgebung verbunden?
Eine große Containerumgebung kann auch viel Speicher verbrauchen, was zu Leistungsproblemen auf dem Hostcomputer und möglicherweise zum Absturz des Containers führen kann. MicroStrategy Container haben begrenzten Speicher für Python-Laufzeiten. Dies ist derzeit für containerisierte Umgebungen auf 6 vCPU und 20 GB Arbeitsspeicher beschränkt. Es ist wichtig, die Größe und Komplexität Ihrer Containerumgebung regelmäßig zu bewerten und sicherzustellen, dass sie Ihren Leistungs-, Sicherheits- und Wartungsanforderungen entspricht. Um die Ressourcennutzung zu reduzieren, ist es am besten, Verwaltungsskripts mit kleineren Laufzeiten auszuführen.
Laufzeiteinstellungen anpassen
-
Klicken Sie im Navigationsbereich auf Monitore.
-
Klicken Sie im linken Bereich auf Laufzeit.
-
Klicken Sie im Raster mit der rechten Maustaste auf die Laufzeit und wählen Sie Informationen bekommen.
-
Klicken Sie im linken Bereich auf Alle Einstellungen.
-
Passen Sie die Laufzeiteinstellungen an.
Skript-Timeout (Sek.) Timeout-Einstellung für die Ausführung von Python-Skripten. Die Standardeinstellung beträgt 600 Sekunden.
Standard-Pod-Instanznummer Die Standardanzahl einer zwischengespeicherten Python-Ausführungsinstanz.
Python-Ausführungsinstanz Wenn ein Python-Skript auf Basis einer Python-Laufzeit ausgeführt wird, wird eine Python-Ausführungsinstanz erstellt und kann je nach Standard-Pod-Instanznummer Und Maximale Anzahl an Pod-Instanzen (Gesamtlimits für ausgeführte Skripte) Einstellungen.
Maximale Anzahl an Pod-Instanzen (Gesamtlimits für ausgeführte Skripts) Die maximale Anzahl von Python-Ausführungsinstanzen, die basierend auf der Laufzeit erstellt werden können.
Laufzeit Standard-Pod-Instanznummer | Maximale Anzahl von Pod-Instanzen zur Laufzeit (Gesamtlimits für ausgeführte Skripte) | Empfehlung |
---|---|---|
1 | 1 | Für Gelegenheitsbenutzer mit geringer Nutzung und geringer Parallelität, für die die Reaktionszeit wichtig ist. Da der Python-Executor-Pod immer aktiv ist, kann die Aufwärmzeit des Pods reduziert werden, die Gesamtkosten sind jedoch höher. Eine Kapsel ist immer eingeschaltet. |
1 | N>1 | Für Gelegenheitsbenutzer mit geringer Nutzung und etwas Parallelität, die jedoch nicht sehr empfindlich auf die Reaktionszeit reagieren. Da immer ein Python-Executor-Pod aktiv ist und auf Anforderung bis zu N-1 Pods aktiv sein können, kann diese Konfiguration mehr Parallelitätsfälle unterstützen. Bei manchen Benutzern ist die Reaktionszeit gut, bei anderen kann es zu einer Aufwärmzeit des Pods kommen. Ein Pod ist immer aktiv und bis zu N-1 Pods können zu einem bestimmten Zeitpunkt gestartet und aktiviert werden. Anschließend können sie nach einer Leerlaufzeit von mehr als zwei Minuten gestoppt werden. |
X>0 | = Standard-Pod-Instanznummer | Für ernsthafte Benutzer mit mehr gleichzeitiger Nutzung, für die die Reaktionszeit wichtig ist. Der Preis ist höher, da ständig X-Runtime-Pods aktiv sein werden. |
Bekannte Einschränkungen
Leistung
Die aktuelle Logik für die Remote-Ausführung von Python lautet:
-
Die benutzerdefinierte Paketinstallation für eine bestimmte Laufzeit erfolgt auf den persistenten Datenträgern, wenn der Executor-Pod erstellt und der persistente Datenträger im Container des Python-Executors bereitgestellt wird.
-
Der Hauptprozess des Python-Dienstes ist für die Anfrage- und Antwortverarbeitung zuständig. Die eigentliche Skriptausführung wird durch den Unterprozess gestartet. Daher versucht der Python-Interpreter bei jeder Ausführung der Python-Skripte, das verwendete Paket in den Speicher des Unterprozesses zu laden.
Da es immer noch zu Verzögerungen kommt, wenn der Container die Daten in das persistente Volumen importiert, entsteht für den Unterprozess zum Ausführen der Skripte ein zusätzlicher Zeitaufwand, auch wenn der Pod bereits aufgewärmt ist.
Datenquellenverbindungen
Wenn bei privaten lokalen Datenquellen keine Netzwerkverbindung zwischen dem Python-Executor-Pod-Container und der privaten Datenquelle besteht, werden Python-Transaktionen nicht unterstützt. Grundsätzlich können Datenquellen mit öffentlichen Endpunkten genutzt werden.
In Verbindung stehende Artikel