Abfragen in Berichten

Die Funktionalität für Berichte der Survey123-Website ermöglicht das Erstellen detaillierter Berichte einzelner Survey-Antworten, das Zusammenfassen Ihrer Daten in mehreren Antworten und das Aggregieren von Ergebnissen. In diesem Thema wird beschrieben, wie Sie Abfragen zum Zusammenfassen und Aggregieren von Ergebnissen verwenden und diese in einem Zusammenfassungsabschnitt präsentieren können.

Feldstatistikfunktionen verursachen neben den Kosten sonstiger Berichte, die gleichzeitig gedruckt werden, keine weitere Credit-Belastung.

Hinzufügen eines Zusammenfassungsabschnitts

Um einen Zusammenfassungsabschnitt in einen Bericht aufzunehmen, müssen Sie in Ihrer Berichtsvorlage Zusammenfassungs-Tags einfügen. Wenn für mehrere Datensätze ein Bericht generiert wird, wird ein Zusammenfassungsabschnitt nur einmal generiert, während der Rest der Berichtsvorlage für jeden Datensatz generiert wird. Hierzu wird die folgenden Syntax verwendet:

$<$summary>
...
$</>

Zusammenfassungsabschnitte können am Anfang und am Ende von Berichten, jedoch nicht im Inhalt eines Berichts platziert werden. Wenn zum Beispiel Ihre Vorlage einen Titel enthält, dann sollte sich dieser Titel entweder in einem Zusammenfassungsabschnitt am Anfang des Berichts oder hinter dem abgeschlossenen Zusammenfassungsabschnitt befinden.

Wenn ein Zusammenfassungsabschnitt eine Karte enthält, werden alle Geometrien aller Eingabedatensätze in einer Karte gedruckt. Sie können auch zusätzliche Syntax verwenden, um die angezeigte Geometrie genauer anzugeben. Beispiel:

  • ${inspectionLocation | size:400:300}: Zeigt alle Eingabedatensätze an.
  • ${inspectionLocation | orderByFields:"creationDate DESC" | resultRecordCount:3 | size:400:300}: Zeigt die drei aktuellsten Datensätze unter allen Eingabedatensätzen an.
  • ${$shape | where:"1=1 !important" | drawingInfo:"currentLayer" | size:400:300}: Druckt alle Geometrien im Haupt-Layer mithilfe der Darstellungsinformationen des Haupt-Layers.
Hinweis:

In einem Zusammenfassungsabschnitt wird das Drucken von Karten oder Bildern mit Abrufen von Eigenschaften aus einer Anlagendatei mit Ausnahme von Name und Größe der Anlage nur außerhalb von Wiederholungen unterstützt. Andernfalls wird eine Fehlermeldung angezeigt.

In der folgenden Tabelle sind unterstützte Methoden aufgeführt, die entweder für die Präsentation von Statistiken oder für die Formatierung der Berichtsdaten nützlich sind:

MethodeBeschreibungBeispiel

wobei gilt:

Gibt nur Datensätze zurück, die bestimmte Kriterien erfüllen.

${#mainLayer | where:"status='broken'"}...${/}

stats

Aggregatfunktion, die von bestimmten Datensätzen im Layer abgeleitet wird.

${mainLayer | where:"status='broken'" | stats:"count,objectId"}

orderByFields

Ordnet gedruckte Datensätze in einem Bericht nach einem oder mehreren Feldern in aufsteigender oder absteigender Reihenfolge an.

${#mainLayer | orderByFields:"state_name ASC,POP2000 DESC"}...${/}

resultRecordCount

Legt die Anzahl der zu druckenden Datensätze fest.

${#mainLayer | resultRecordCount:3}...${/}

returnDistinctValues

Die Einstellung "True" bewirkt, dass bei der Verwendung mit outFields Einzelwerte zurückgegeben werden. Bei der Verwendung mit dem Statistiktyp count gibt diese Methode die Anzahl der Einzelwerte im Feld zurück.

${#mainLayer | outFields:"status" | returnDistinctValues:true}...${/} oder ${mainLayer | stats:"count,stateName" returnDistinctValues:true}

outFields

Wird zusammen mit returnDistinctValues verwendet, um Einzelwerte eines Feldes oder einer Kombination von Feldern abzurufen. Diese Methode akzeptiert eine kommagetrennte Liste mit Feldern.

${#mainLayer | outFields:"status" | returnDistinctValues:true}...${/}

Aggregatfunktionen

Zusammenfassungsabschnitte ermöglichen nicht nur die Verwendung aller Ausdrücke für Vorlagen für Berichte, sondern sind auch ideal für die Verwendung einer Reihe von Aggregatfunktionen. Mit diesen Funktionen kann ein Ergebnis zurückgegeben werden, das aus jeder gedruckten Antwort für den Bericht abgeleitet wurde. Sie geben nicht die Ergebnisse aus dem gesamten Feature-Layer zurück, es sei denn, es wird ein Bericht für alle Features generiert oder es wird der Qualifier !important, der in Zusätzliche Syntax beschrieben ist, verwendet. Aggregatfunktionen können auch in einzelnen Berichten und für Wiederholungen verwendet werden.

Tipp:

Wenn ein Bericht in einer Vorschau angezeigt wird, erzeugen Aggregatfunktionen Ergebnisse aus jeder für den Druck ausgewählten Antwort, obwohl in einer Beispielbericht-Vorschau nur maximal 20 Ergebnisse auf einmal ausgegeben werden können.

Um im Zusammenfassungsabschnitt Werte zu extrahieren und zu aggregieren, müssen Sie den Namen des Layers oder der Wiederholung mit dem Namen des Feldes, aus dem Werte extrahiert werden sollen, definieren. Bedenken Sie, dass für Surveys, die in Survey123 Web Designer erstellt werden, der Standard-Layer-Name survey verwendet wird. Den Layer-Namen, der für Ihre Survey-Antworten verwendet wird, finden Sie in der Kurzübersicht, auf die im Dialogfeld Vorlagen verwalten zugegriffen werden kann.

Aggregatfunktionen werden über einen Filter mit dem Namen stats gesteuert. Dieser Filter verhält sich wie Feature-Service-Abfragen und wird im folgenden Format verwendet:

${layerName | stats:"outStatistics":"groupByFieldsForStatistics":"havingClause"}

Der Parameter outStatistics definiert die statistische Operation und das Feld, das dabei verwendet wird, und ist für Übersichtsberichte optimiert, indem er drei Parameter als kommagetrennte Liste akzeptiert. Nacheinander muss Folgendes definiert werden:

  • Ein Statistiktyp.
  • Die Frage, aus der die Ergebnisse extrahiert werden sollen.
  • Zusätzlich kann ein Feldname für die resultierende Berechnung eingefügt werden. Wenn dies geschehen ist, kann dieser Feldname an jeder Stelle wie eine Survey-Frage referenziert werden.

Die Parameter groupByFieldsForStatistics und havingClause akzeptieren dieselben Werte wie bei Feature-Service-Abfragen und sind optional. Bei Bedarf können Sie auch weggelassen werden.

Im folgenden Beispiel wird die Summe aller Ergebnisse, die für die Frage mit dem Namen pop2000 bereitgestellt wurden, erstellt:

${mainLayer | stats:"sum,pop2000"}

Die folgenden Statistiktypen werden unterstützt:

WertBeschreibung

avg

Mittelwert aller Antworten

count

Anzahl der Antworten

sum

Gesamtsumme aller Antworten

stddev

Standardabweichung vom Mittelwert

min

Niedrigste Antwort auf die Frage

max

Höchste Antwort auf die Frage

var

Varianz vom Mittelwert

range

Wertebereich in allen Antworten (Maximum minus Minimum)

first

Erste Antwort auf die Frage

last

Letzte Antwort auf die Frage

median

Medianwert aller Antworten

Der Parameter outStatistics kann auch mehrmals angegeben werden. In diesem Fall müssen die einzelnen Parameter durch ein Semikolon getrennt werden. Wenn mehrere Parameter verwendet werden, wird die Abfrage als Ergebnis-Array ausgegeben. Im folgenden Beispiel werden sowohl die Gesamtbevölkerung als auch das Durchschnittseinkommen aus den Datensätzen im Haupt-Layer berechnet:

${#mainLayer | stats:"sum,pop2000,populationTotal;avg,income,averageIncome"}
Population total: ${populationTotal} 
Average income: ${averageIncome}
${/}

Einbeziehen ausgewählter Werte

Um einzelne Werte aus Fragen zu drucken, kann dieselbe Funktionalität verwendet werden, die auch für Wiederholungen in einzelnen Berichten verwendet wird. Indem Sie einen Filter erstellen, der nur ausgewählte Werte extrahiert, können Sie Ihre Zusammenfassung um bestimmte Informationen aus Ihrem Survey erweitern.

Hinweis:

Wenn Sie einen Filter in einem einzelnen Bericht verwenden, wird der einzelne Datensatz als Standardkontext für Ihren Filter verwendet. Zum Generieren des gewünschten Ergebnisses müssen Sie möglicherweise zusätzliche Syntax verwenden.

Ein Beispiel für einen Filter, mit dem nur ausgewählte Informationen angezeigt werden, ist unten aufgeführt. Direkt danach folgen die Erläuterungen seiner einzelnen Elemente.

Durchschnittliche PopulationName der Organisation

${#All_Orgs | stats:"avg,POP,AvgPOP":"Org_NAME":"AVG(POP)>200" | orderByFields:"AvgPOP DESC" | resultRecordCount:5}${AvgPOP | round:2}

${Org_NAME}${/}

  • #All_Orgs: Der Layer, der referenziert wird, um die erforderlichen Daten abzufragen. Hiermit beginnt die Deklaration eines Bereichs, in den die Antwortdaten extrahiert werden sollen, sowie für den Filter stats.
  • "avg,POP,AvgPOP": Der Parameter outStatistics für den stats-Filter. In diesem Fall gibt er die Werte für die durchschnittliche Anzahl der Antworten auf die Frage mit dem Namen POP zurück und speichert sie in einem Feld mit dem Namen AvgPOP.
  • "Org_NAME": Der Parameter groupByFieldsForStatistics für den stats-Filter. Hiermit werden die durchschnittlichen Antworten entsprechend den Antworten auf die Frage mit dem Namen Org_NAME gruppiert.
  • "AVG(POP)>200": Der Parameter havingClause für den stats-Filter. Hiermit wird sichergestellt, dass nur Antworten mit einer durchschnittlichen Population über 200 einbezogen werden.
  • orderByFields:"AvgPOP DESC": Der Filter orderByFields listet die Antworten basierend auf dem Inhalt eines bestimmten Feldes auf. In diesem Fall werden die Antworten entsprechend dem AvgPOP-Feld, das durch den Parameter outStatistic erstellt wurde, in absteigender Reihenfolge aufgelistet.
  • resultRecordCount:5: Der Filter resultRecordCount begrenzt die Antworten auf eine bestimmte Anzahl, in diesem Fall 5.
  • ${AvgPOP | round:2}: Der Inhalt des AvgPOP-Feldes, auf zwei Dezimalstellen gerundet. Dies ist das einzige Element in der ersten Zelle, das in der Zusammenfassung angezeigt wird. Der stats-Filter selbst wird nicht angezeigt.
  • ${Org_NAME}: Der Inhalt des Org_NAME-Feldes aus den Survey-Antworten.
  • ${/}: Beendet die Deklaration eines Bereichs, in den die Antwortdaten extrahiert werden sollen. Da sich alle diese Informationen nur in einer Tabelle befinden, müssen der Anfang und das Ende dieses Bereichs innerhalb derselben Tabelle deklariert werden.

Als Ergebnis dieses Filters werden fünf Zeilen mit Antworten in der Tabelle angezeigt, indem die zusätzlich benötigten Zeilen hinzugefügt werden. Der entstandene Übersichtsbericht sieht in etwa wie folgt aus:

Durchschnittliche PopulationName der Organisation

2360.23

A

1639.75

C

1179.7

B

915.93

D

795.57

E

Zusätzliche Syntax

Zusätzlich zu den obigen Parameter zum Erstellen eines Filters für Ihren Survey gibt es weitere Parameter und Qualifier, mit deren Hilfe Ihre Abfrage erweitert werden kann.

  • where: Eine zulässige SQL-WHERE-Klausel, die mit den Feldern im Layer arbeitet.
    • Ein expliziter Wert: Durch where:"weather='sunny'" verwendet der Filter zum Beispiel nur Antworten, in denen das Feld weather genau den Wert sunny hat.
    • Die Inhalte eines Feldes: where:"weather='"+cloudCover+"'" verwendet zum Beispiel die Inhalte des Feldes cloudCover als Anforderung für das Feld weather.
    • Zusätzliche Parameter: where:"weather='"+cloudCover+"' AND temperature='high'" verwendet zum Beispiel Antworten, in denen das Wetter dem Feld cloudCover entspricht und das Temperatur-Feld genau den Wert high hat.
  • !important: Dieser Qualifier kann an jeden Filter außer resultRecordCount angefügt werden, um vorhandene Einschränkungen in Bezug auf die Werte, die der Filter zurückgibt, außer Kraft zu setzen. Wenn Sie zum Beispiel Berichte drucken, die sich nur auf die letzten sieben Tage beziehen, dann bewirkt where:"weather='sunny' !important", dass der Filter nur die Antworten verwendet, bei denen das weather-Feld exakt den Wert sunny enthält, dabei aber nicht nur aus den zum Drucken ausgewählten Antworten, sondern aus allen verwendbaren Antworten im Feature-Layer extrahiert.
  • $inputParams: Dieser Platzhalter kann in jedem Filter außer resultRecordCount verwendet werden, um beim Drucken eines Berichts die von Ihnen festgelegten Parameter auf der Survey123-Website zu referenzieren. Diese Parameter können dann genauer qualifiziert werden, um Ihre Antwort einzugrenzen. Zum Beispiel ordnet orderByFields:"$inputParams, objectid DESC" die Felder in der Reihenfolge, die auf der Survey123-Website festgelegt wurde, und dann absteigend nach der Objekt-ID für alle Felder mit übereinstimmenden Parametern. Sie können auch $inputParams verwenden, um diese Parameter auf Wiederholungen anzuwenden.
Hinweis:

Wenn where mit anderen Filtern verwendet wird, sollten diese in der folgenden Reihenfolge implementiert werden: where, stats, orderByFields, resultRecordCount.