Sustainable Power Apps through smart data filtering and loading

Hervorgehoben

Die deutsche Version findet ihr hier: https://wp.me/p3Vyfd-p4

This article is part of my series on sustainable power platform solutions.

Essentially, sustainable software development – regardless of whether it is ProCode, LowCode or NoCode – is about using as few resources as possible and at the same time using as many advantages of mobile working as possible.

Less network load through fewer requests

A key point in reducing Carbon emissions is to minimize the network load, i.e. the data traffic.

What is the best way to reduce the network load when developing Power Apps?

Weiterlesen

Power Apps – Behaviour of Named Formulas

Named Formulas will be available as an experimental feature in Power Apps this September.

The use of named formulas can be read in detail in Greg Lindhorst’s post:
https://powerapps.microsoft.com/en-us/blog/power-fx-introducing-named-formulas/

Shortly:
As soon as the feature has been activated in the Experimental Features, the Formulas property is available for the App element.
If you previously made global settings in App.OnStart, now do them in App.Formulas:

Activate Named Formulas
The Formula-Property

Here, too, the syntax was clearly declarative. Did you previously use the following syntax for the declaration:


Set(glbCurrentRecord,Last(DataSource))

Now use the following syntax in the form property:

glbCurrentRecord=Last(DataSource); 

Don’t forget the trailing semicolon! (In German environments, please two of them!)

The same, just different?

If you needed the most recent record on a screen, you had to run the Set(glbCurrentRecord,Last(DataSource)) formula again to set the glbCurrentRecord variable.

This is different now, because the named formula is always updated automatically.

Performance boost or killer?

In today’s Friday community round, the question arose how often this update takes place, because that can cause an unnecessarily large number of Power Platform API calls that run against my limit. In addition, an unnecessarily large number of data transfers are carried out, which on the one hand impair my performance and on the other hand are bad for the climate.

Microsoft has given us a tool to check what is happening in the background: the monitor!

Open the Power Apps Monitor

If you take a look at what is going on in the app, you will see that it is by no means the case that a formula is always up to date. If I change data on the database, in my case DataVerse, no update takes place.

But as soon as I update the database from the app. According to my current tests, this can only be done by Refresh (data source) and writing operations such as SubmitForm or Patch.

Pure use for display or within reading functions such as LookUp currently has no effect:

Refreshing of Named Formulas behind the scenes

Since it is still an experimental feature at the moment, one can certainly assume that something will happen there. I will keep you up to date!

PapaRiedel

Power Apps – Aktualisierung von Named Formulas

Im September dieses Jahres stehen Named Formulas (auf deutsch „Benannte Formeln„) als Experimentelles Feature in Power Apps zur Verfügung.

Die Verwendung von Named Formulas kann im Detail in dem Post von Greg Lindhorst nachgelesen werden:
https://powerapps.microsoft.com/en-us/blog/power-fx-introducing-named-formulas/

In Kürze:
Sobald das Feature in den Experimentellen Features aktiviert wurde, steht dem App-Element in der Strukturansicht die Eigenschaft Formulas zur Verfügung.
Haben Sie vorher globale Einstellungen in App.OnStart vorgenommen, tun Sie das nun in App.Formulas:

Named Formulars einschalten
Die Formulas-Eigenschaft

Dabei wurde auch hier die Syntax eindeutig deklarativ ausgelegt. Haben Sie vorher folgende Syntax zur Deklaration verwendet:


Set(glbCurrentRecord,Last(DataSource))

So verwenden Sie nun folgende Syntax in der Formulars-Eigenschaft:

glbCurrentRecord=Last(DataSource); 

Vergessen Sie dabei aber nicht das abschliessende Semikolon! (In deutschen Umgebungen bitte zwei davon!)

Das selbe, nur anders?

Brauchten Sie auf einem Screen wieder den aktuellsten Datensatz, so mussten Sie erneut die Formel Set(glbCurrentRecord,Last(DataSource)) ausführen, um die Variable glbCurrentRecord zu setzen.

Das ist nun anders, denn die Named Formula wird stets automatisch aktualisiert.

Performance-Gewinn oder -Killer?

In der heutigen freitäglichen Community-Runde kam nun die Frage auf, wie oft denn diese Aktualisierung stattfindet, denn das kann ja unnötig viele Power Platform API-Calls verursachen, die gegen mein Limit laufen. Dazu werden unnötig viele Datentransfers vorgenommen, die zum einen meine Performance beeinträchtigen und auf der anderen Seite schlecht für das Klima sind.

Nun hat uns Microsoft ein Werkzeug an die Hand gegeben, zu überprüfen, was denn da im Hintergrund passiert: Den Monitor!

Power Apps Monitor öffnen

Schaut man sich einmal an, was in der App los ist, stellt man fest, dass es mit nichten so ist, dass eine Formel immer aktuell ist. Ändere ich Daten auf der Datenbank, in meinem Fall DataVerse, so findet keine Aktualisierung statt.

Wohl aber sobald ich den Datenbestand von der App aus aktualisiere. Das kann nach meinen aktuellen Tests ausschliesslich durch Refresh(Datenquelle) sowie schreibenden Operationen wie SubmitForm oder Patch erfolgen.

Die reine Verwendung zur Anzeige oder innerhalb von lesenden Funktionen wie z.B. LookUp hat aktuell keine Auswirkungen:

Aktualisierung von Named Formulas hinter den Kulissen

Da es zur Zeit noch ein experimentelles Feature ist, kann man sicherlich davon ausgehen, dass da noch was passieren wird. Ich halte Euch auf dem Laufenden!

Euer PapaRiedel

Benutzer anlegen und für Power Platform Lösung berechtigen

Manchmal kommt es vor, dass Du eine hübsche kleine Power Platform Lösung bestehend aus einer Canvas App, ein paar SharePoint-Listen und dem einen oder anderen Flow baust und Dir denkst „Mensch, das zeig doch mal meinem Kumpel!“

Nun ist das mit dem Gast-Zugriff auf PowerApps und Co so eine Sache. Ich mach es einfacher: Es geht nicht, es sei denn Du baust eine explizite Teams App mit DataVerse for Teams.

Dieser Artikel zeigt, wie Du einen neuen Benutzer anlegst, ihn mit den richtigen Lizenzen versorgst und die notwendigen Freigaben machst.

Weiterlesen

Power Apps – iterating tree structures

Die deutsche Übersetzung findet ihr hier: https://stefanriedel.wordpress.com/2022/01/07/power-apps-tree-structures-de/

Requirements

I have to map a cost center hierarchy in the form of a tree structure for a project. Each cost center also has a responsible person who, for example, decides on budgets. In the event that a person has to decide on their own budget, the release responsibility goes to the person responsible at the head cost center.

The difficulty:
One person can be responsible for their own cost center as well as the head cost center.

The task is now:
Find the next responsible person in the cost center hierarchy who is not the applicant.

Weiterlesen

Power Apps – Baumstrukturen durchiterieren

The english translation can be found here: https://stefanriedel.wordpress.com/2022/01/07/power-apps-tree-structures-en/

Anforderung

Ich habe für ein Projekt eine Kostenstellen-Hierachie in Form einer Baumstruktur abzubilden. Zu jeder Kostenstelle gehört noch eine verantwortliche Person, die z.B. über Budgets entscheidet. Für den Fall, dass eine Person über das eigene Budget befinden muss, geht die Freigabe-Verantwortung an die verantwortliche Person der Kopfkostenstelle.

Die Schwierigkeit:
Eine Person kann gleichzeitig die eigene, wie auch die Kopf-Kostenstelle verantworten.

Die Aufgabe lautet nun:
Finde die nächste verantwortliche Person in der Kostenstellenhierarchie, die nicht die antragstellende ist.

Weiterlesen

Power Apps – Problem mit ForAll() und UpdateContext()

Eine kleine Notiz für mich:

Ich wollte innerhalb einer ForAll-Schleife eine lokale Variable setzen, die ich als Bedingung für die Ausführung eines Stücks Codes benötigte.


Das führte zu folgender unschönen Meldung:

Also: UpdateContext funktioniert nicht innerhalb von ForAll-Schleifen, aber sehr wohl Collections. Also nutze ich in diesem seltenen Fall eine Collection, die ich mit true befülle, wenn ich etwas gefunden habe.

Anstatt nun abzufragen, ob found=true, frage ich, ob colFound ein Element enthält.
Von hinten durch die Brust ins Auge, aber läuft!

Und tschüss 🙂


Nachhaltige Power Apps durch geschicktes Filtern und Laden von Daten

English translation can be found here: https://wp.me/p3Vyfd-qf

Dieser Artikel ist Teil meiner Serie über nachhaltige Power Platform Lösungen.

Im Wesentlichen geht es bei nachhaltiger Softwareentwicklung – egal, ob ProCode, LowCode oder NoCode – darum, möglichst wenige Ressourcen zu verbrauchen und gleichzeitig möglichst viele Vorteile des mobilen Arbeitens zu nutzen.

Weniger Netzlast durch weniger Requests

Ein wesentlicher Punkt bei der Reduzierung von CO2-Emissionen ist es, die Netzlast, also den Datenverkehr, zu minimieren.

Wie reduziere ich die Netzlast bei der Entwicklung von Power Apps am besten?

Weiterlesen

Power Automate: Teile eines Flows deaktivieren / ausschalten

English translation is comming soon!

Während der Entwicklung und beim Debugging von Prozessen mit Power Automate Flow hilft es mir, wenn ich Teile eines Prozesses deaktivieren kann.

Gründe dafür können sein:

  • Vermeiden des Auslösens von Kind-Prozessen während des Debuggings
  • Simulation verschiedener Antworten der Gegenstelle und damit Stabilisierung des Flows
  • Sparen von Kosten, da die Gegenstelle auch ein kostenpflichtiger Dienst sein kann.
  • Sparen von Zeit / Netzlast, wenn es sich um umfangreiche Anfragen mit großen Ergebnisse handelt
  • Sparen von CO2-Emissionen, da jeder unnötige Aufruf CO2 emittiert.

Achtung: Dieser Artikel ist keine Diskussion über Sinn und Unsinn von Childflow oder ähnliches. Es gibt immer wieder Gründe für die unglaublichsten Dinge und unglaubliche Rahmenbedingungen.

Weiterlesen

Power Apps: JSON-Daten in Gallery anzeigen

This is the german version of this topic. The english translation is comming soon!

Ein Problem auf das jeder irgendwann einmal stößt ist, dass man Daten im JSON-Format in seiner Power App verarbeiten muss. Zumeist kommen sie aus externen Datenquellen, wie SharePoint, Azure BLOB Storage oder einfach als Rückgabe aus einem Cloud Flow.

Hab ich Problem gesagt? Japp, das habe ich.

Aufgabenstellung

Ich möchte Daten im JSON-Format einfach an eine Gallery binden um darin zu Filtern zu Sortieren etc. Die Daten kommen in meinem Fall aus einem Cloud Flow, den ich aus der App heraus aufgerufen habe.

Und nun die härteste aller Einschränkungen: STANDARD Only!

Weiterlesen