Jan Hagemeister erläuterte die Hintergrund-Geschichte zu einer Frage aus dem FileMaker-Magazin-Forum, wo es um eine zuverlässige Mittelwert-Berechnung per Median-Funktion ging.
Von Erich Schmidt wurde dazu im Forum eine sehr trickreich optimierte Custom-Function vorgestellt, welche aus einer Werteliste den Median ermittelt:
Let (
[
sl = SortValues ( List ( Values::Value );2);
n = ValueCount ( sl ) ;
odd = Mod ( n;2 );
even = not odd;
left = Max( Int ( (n+1)/2 ); 1) ; right = Min ( left + even; n);
m = ( GetValue ( sl ; left ) + GetValue ( sl; right ) ) / 2
];
m )
Jan berichtete, wozu die Formel bei ihm zum Einsatz kommt und welches praktische Problem damit inzwischen zuverlässig gelöst wird. In einer Versandhandels-Lösung werden die Gewichte der versendeten Produkte benötigt, um die anfallenden Versandkosten zu ermitteln. Wer solche Lösungen aus der Praxis kennt, weiß dass es nahezu unmöglich ist, eine vollständige und korrekte Hinterlegung aller Produktgewichte in den Stammdaten zu erreichen. Zudem kommen beim Versand noch unterschiedliche Verpackungsgewichte dazu, was das tatsächliche Gewicht für die Versandkosten zusätzlich beeinflusst.
Daher hat Jan einen anderen Ansatz gewählt. Bei jedem Warenausgang wird das fertige Paket inkl. Verpackung ohnehin mit einer automatischen Waage erfasst. Im Warenlager kommen dafür elektronische Waagen von GRAM zum Einsatz (siehe Link). Diese Waage übermittelt das Gewicht per simulierter Tastatureingabe direkt an die FileMaker-Lösung.
Aus den somit ermittelten Logfiles über alle Produkte und gemessenen Gewichte hat Jan alle eindeutigen Datensätze herausgefiltert – also diejenigen, wo genau ein Produkt in der Sendung enthalten ist. Somit kommt im Ergebnis pro Artikelnummer eine Liste mit gemessenen Gewichten heraus. Aufgrund von Messungenauigkeiten (oder wenn z.B. aus Versehen zusätzlich zum gepackten Paket auch andere Objekte auf der Waage lagen “Das Pausenbrot vom Lagermitarbeiter”) weisen die Listen unterschiedliche Werte mit einigen Ausreißern auf.
Hier kommt die Median-Funktion zum Einsatz, welche ziemlich zuverlässig ohne die Ausreißer-Werte einen stabilen Mittelwert pro Produkt errechnet. Durch die sehr performante Custom-Function kann diese Berechnung schnell am Produkt-Datensatz durchgeführt werden und aus einer Versandkosten-Tabelle der passende Versandpreis in die Margenberechnung mit einbezogen werden.
Beitrag im FileMaker-Magazin-Forum
https://filemaker-magazin.de/forum/beitrag/208113
Median-Funktion erklärt
https://de.wikipedia.org/wiki/Median
GRAM K3-F elektronische Waage
https://gram-group.com/product/gram-k3-f/