Gelöst: Property mit filter() liefert leer zurück, obwohl die Eingangsdaten stimmen

Hi zusammen,
ich schreibe heute, um einem Fehler im Projekt einer Kursteilnehmerin auf den Grund zu gehen: Es handelt sich um ein Projekt, in dem der Kurs “Sonntagsfrage 2” erweitert wird.

I intended to do:
Ein JSON Dictionary soll gefiltert werden.

Ich verwende dabei folgende Syntax:

Heraus kommen soll ein gefiltertes Dictionary.

But the outcome is:
Die Property, die filtern soll, bleibt leer.

Optional: I need a proper explanation about:
Was kann man bei der Anwendung von filter() falsch machen?

Hi Frank!

Die Property LIST_gefilterte_Parteien_Experts bleibt nicht wegen der Filterfunktion leer, sondern weil sie wahrscheinlich nirgends aufgerufen/benutzt worden ist.

Es muss ein Call-Pfad von einem Satz oder Trigger zu dieser Property führen, nur dann wird sie auch evaluiert. So lange sie nicht evaluiert wurde, sieht sie so aus wie in deinem letzten Screenshot.

Ich hoffe, das hilft dir weiter!

Hi Peter,

vielen Dank. Da hast du natürlich Recht.

Um die Property “zu feuern” habe ich einen Testsatz angelegt. Jetzt sieht der Property Output auch besser aus:

1 Like

Hallo,

ich glaube ich habe ein ähnliches Problem.
Ich würde gern folgenden Satz automatisieren: “Partei liegt unter der 5% Hürde”. Das Wort “Partei” soll dabei automatisiert werden. Als Property habe ich “LIST_Parteien_unter_5” gewählt.
Am Ende kommt aber nichts raus. Es steht dann nur “Liegt unter der 5%-Hürde.”

Gruß

Hallo Dennis,

du hast tatsächlich ein ähnliches Problem. Allerdings fehlen in deinem Projekt noch ein paar Zwischenschritte.

Du versucht, mit einem Gruppencontainer (Use group property …), Daten aus der Liste zu holen.
Der Gruppencontainer erwartet eine “flache” Liste aus Werten:
[Wert1, Wert2, Wert3, …].

Die LIST_Parteien_unter_5 enthält aber eine Liste aus Objekten, in denen die Werte sich verstecken.
[{“Key1”: “Wert1”, “Key2”: “Wert2”},{“Key1”: “Wert3”, “Key2”: “Wert4”}, …]

Während der Gruppencontainer einen Textwert (Wert1 erwarten würde, bekommt er zwei Key-Value-Pairs {“Key1”: “Wert1”, “Key2”: “Wert2”} zurück. Die versteht er nicht und lässt sie leer.

Lösung:
Du musst die Objekte erst mit “first()” aus der Liste holen (siehe MIN_Partei)
Dann kannst du in einer weiteren Property den Namen mit collect() abholen.

Die Property mit collect() musst du behandeln wie einen Gruppencontainer. Aufrufmethode ist all().

Du kannst dir auch einfach MIN_Partei und MIN_Partei_Wert klonen, um nicht wieder alles abtippen zu müssen.

Beste Grüße

Frank

@Dennis: Du hattest außerdem keinen Default Story Type mehr im Training, bzw. der neue Story Type wurde nicht ausgelöst. Das gibt einen kritischen Fehler und verhindert bspw. auch, dass der ATML3-Debug funktioniert.
Schau bitte darauf, dass es immer einen Story Type gibt, der auf “Auto” steht.

LG

Frank

Alles klar, danke. Ich versuche mal mein Glück.

Noch eine weitere Frage:
In meinem ersten Satz schreibe ich "Laut einer jüngsten Pollyvote-Prognose kommt die FDP nun auf X Prozent.

X soll einfach aus den Daten gezogen werden.
So sieht meine Property aus:

Es müsste also der Wert 5,841… eingesetzt werden.

Es wird mir aber nichts im fertigen Text angezeigt:

Hi Dennis,
ich muss kurz klug$§)§(""en: Dein Screenshot zeigt einen Container, keine Property.
Wie die Property definiert ist, findest du heraus, wenn du den entsprechenden Abschnitt des Containers aufklappst:

Prüfe bitte anhand des ATML3 Debugs nach, was die Property tatsächlich im Mapping stehen hat. Prüfe außerdem, ob sie ein korrektes Vocabulary besitzt.

LG

Frank