Requêtes des rapports

La fonction de rapport du site Web Survey123 vous permet de créer des rapports détaillés sur les réponses à des enquêtes individuelles, de synthétiser les données associées à de nombreuses réponses et d’agréger les résultats. Cette rubrique explique comment utiliser les requêtes pour synthétiser et agréger les résultats et les présenter dans une section de synthèse.

Les fonctions de synthèse ne coûtent aucun crédit supplémentaire. Seuls les autres rapports produits en même temps sont facturés.

Ajouter une section de synthèse

Pour inclure une section de synthèse dans un rapport, ajoutez des balises de synthèse dans votre modèle de rapport. La section de synthèse ne sera produite qu’une fois si vous sélectionnez plusieurs enregistrements pour le rapport, alors que le reste du modèle de rapport sera créé pour chaque enregistrement. Pour ce faire, la syntaxe suivante est utilisée :

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

Les sections de synthèse peuvent être créées au début et à la fin des rapports, mais pas dans le contenu d’un rapport. Par exemple, si votre modèle comporte un titre, celui-ci doit se trouver soit dans une section de synthèse au début du rapport, soit après la fermeture de la section de synthèse.

Si une carte est incluse dans une section de synthèse, elle affiche toutes les géométries de tous les enregistrements en entrée sur une seule carte. Vous pouvez également utiliser une syntaxe supplémentaire pour mieux spécifier la géométrie affichée. Consultez l’exemple ci-dessous :

  • ${inspectionLocation | size:400:300} : affiche tous les enregistrements en entrée.
  • ${inspectionLocation | orderByFields:"creationDate DESC" | resultRecordCount:3 | size:400:300} : affiche les trois enregistrements les plus récents parmi tous les enregistrements en entrée.
  • ${$shape | where:"1=1 !important" | drawingInfo:"currentLayer" | size:400:300} : affiche toutes les géométries dans la couche principale à l’aide des informations de dessin de la couche principale.
Remarque :

Dans une section de synthèse, l’affichage d’une carte ou d’une image, y compris la récupération des propriétés d’un fichier joint à l’exception du nom et de la taille de la pièce jointe, est uniquement pris en charge en dehors des répétitions. Dans le cas contraire, un message d’erreur apparaît.

Le tableau suivant contient les méthodes permettant de présenter les statistiques ou de mettre en forme la présentation des données de votre rapport :

MéthodeDescriptionExemple

Renvoie uniquement les enregistrements répondant à un certain critère.

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

stats

Une fonction d’agrégation dérivée de certains enregistrements de la couche.

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

orderByFields

Trie les enregistrements imprimés dans un rapport en fonction d’un ou plusieurs champs en ordre croissant ou décroissant.

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

resultRecordCount

Définit un nombre spécifique d’enregistrements à imprimer.

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

returnDistinctValues

Quand il est défini sur Vrai, renvoie les valeurs uniques si utilisé avec outFields. Lorsqu’elle est utilisée avec le type de statistique count, cette méthode renvoie le nombre de valeurs uniques contenues dans un champ.

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

outFields

Utilisez cette fonction avec returnDistinctValues pour obtenir les valeurs uniques d’un champ ou d’une combinaison de champs. Cette méthode accepte une liste de champs séparés par des virgules.

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

Fonctions agrégées

Les sections de synthèse, outre qu’elles prennent en charge toutes les expressions des modèles de rapport, permettent également d’utiliser de nombreuses fonctions agrégées. Ces fonctions peuvent être utilisées pour renvoyer un résultat dérivé de chaque réponse affichée pour le rapport. Elles ne renvoient pas de résultats relatifs à l’ensemble de la couche d’entités, sauf si un rapport est généré pour toutes les entités ou si le qualificateur !important décrit dans Syntaxe supplémentaire est utilisé. Les fonctions agrégées peuvent également être utilisées dans des rapports individuels, ainsi que pour des répétitions.

Conseil :

Lors de la prévisualisation d’un rapport, les fonctions agrégées produisent des résultats pour chaque réponse sélectionnée pour l’affichage, même si la prévisualisation des modèles de rapport affiche au maximum 20 résultats en même temps.

Pour extraire et agréger des valeurs dans la section de synthèse, vous devez définir la couche ou le nom de la répétition avec le nom du champ dont vous voulez extraire des valeurs. N’oubliez pas que, pour les enquêtes créées dans le concepteur Web Survey123, le nom de la couche par défaut utilisé pour les enquêtes est survey. Le nom de la couche utilisée pour les réponses aux enquêtes se trouve dans la fenêtre Quick reference (Référence rapide) de la boîte de dialogue Manage Templates (Gérer les modèles).

Le contrôle des fonctions agrégées s’effectue via un filtre nommé stats. Ce filtre se comporte comme les requêtes des services d’entités et utilise le format suivant :

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

Le paramètre outStatistics définit l’opération statistique et le champ utilisés. Il est simplifié pour les rapports de synthèse et accepte trois paramètres dans une liste séparée par des virgules. Définissez les éléments suivants, dans l’ordre :

  • Type de statistique.
  • Question dont vous souhaitez extraire les résultats.
  • Vous pouvez éventuellement indiquer un nom de champ pour le calcul résultant ; dans ce cas, ce nom de champ peut être référencé ailleurs, comme toute question de l’enquête.

Les paramètres groupByFieldsForStatistics et havingClause acceptent les mêmes valeurs que les requêtes de services d’entités et sont facultatifs. Ils peuvent être omis s’ils ne sont pas requis.

L’exemple suivant crée une somme de tous les résultats fournis pour la question pop2000 :

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

Les types de statistique pris en charge sont les suivants :

ValeurDescription

avg

Moyenne de toutes les réponses

count

Nombre de réponses

sum

Somme totale de toutes les réponses

stddev

Écart type par rapport à la moyenne

min

Réponse la plus faible à la question

max

Réponse la plus élevée à la question

var

Écart par rapport à la moyenne

range

Plage des valeurs dans toutes les réponses (maximum - minimum).

first

Première réponse à la question

last

Dernière réponse à la question

median

Moyenne de toutes les réponses

Vous pouvez spécifier plusieurs paramètres outStatistics en les séparant par un point-virgule. Si plusieurs paramètres sont utilisés, la requête produit une matrice de résultats. Dans l’exemple suivant, la population totale et le revenu moyen sont calculés et affichés à partir des enregistrements de la couche principale :

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

Inclure des valeurs sélectionnées

Des valeurs individuelles de questions peuvent être affichées à l’aide de la même fonctionnalité que celle utilisée pour les répétitions dans les rapports individuels. La construction d’un filtre pour extraire uniquement certaines valeurs permet d’ajouter à la synthèse des informations spécifiques extraites de votre enquête.

Remarque :

Si vous utilisez un filtre dans un rapport individuel, l’enregistrement individuel est utilisé comme contexte par défaut pour votre filtre. Vous devrez peut-être utiliser une syntaxe supplémentaire pour produire le résultat voulu.

L’exemple ci-dessous montre un filtre qui utilise uniquement certaines informations et fournit une description de ses éléments individuels.

Population moyenneNom de l’organisation

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

${Org_NAME}${/}

  • #All_Orgs : couche spécifique référencée pour les données requises. Correspond au début de la déclaration d’une zone où extraire les données des réponses et utilisée pour le filtre stats.
  • "avg,POP,AvgPOP" : paramètre outStatistics du filtre de statistiques. Dans ce cas, il renvoie les nombres moyens indiqués en réponse à la question POP, et les enregistre dans un champ nommé AvgPOP.
  • "Org_NAME" : paramètre groupByFieldsForStatistics du filtre de statistiques. Regroupe les moyennes des réponses en fonction des réponses à la question Org_NAME.
  • "AVG(POP)>200" : paramètre havingClause du filtre de statistiques. Garantit que seules les réponses indiquant une population moyenne supérieure à 200 sont incluses.
  • orderByFields:"AvgPOP DESC" : le filtre orderByFields répertorie les réponses en fonction du contenu d’un champ spécifique. Dans ce cas, les réponses sont répertoriées en fonction du champ AvgPOP créé par le paramètre outStatistic, en ordre décroissant.
  • resultRecordCount:5 : le filtre resultRecordCount limite les réponses à un nombre spécifique, 5 dans ce cas.
  • ${AvgPOP | round:2} : contenu du champ AvgPOP, arrondi à deux chiffres après la virgule. Il s’agit du seul élément de la première cellule qui apparaît dans la synthèse ; le filtre de statistiques lui-même n’apparaît pas.
  • ${Org_NAME} : contenu du champ Org_NAME à partir des réponses à l’enquête.
  • ${/} : termine la déclaration d’une zone où extraire les données des réponses. Toutes ces informations figurant uniquement dans un tableau, le début et la fin de cette zone doivent être déclarés dans le même tableau.

Le résultat de ce filtre affiche cinq lignes de réponses dans le tableau, en ajoutant les lignes supplémentaires requises. Le rapport de synthèse produit est semblable au suivant :

Population moyenneNom de l’organisation

2360,23

A

1639,75

C

1179,7

B

915,93

D

795,57

E

Syntaxe supplémentaire

Outre les paramètres ci-dessus utilisés afin de créer un filtre pour votre enquête, il existe des paramètres et des qualificateurs supplémentaires permettant d’améliorer votre requête.

  • where : clause WHERE SQL autorisée agissant sur les champs de la couche.
    • Une valeur explicite : par exemple, avec where:"weather='sunny'", le filtre n’utilise que les réponses dans lesquelles le champ weather comporte exactement la valeur sunny.
    • Le contenu d’un champ : par exemple, where:"weather='"+cloudCover+"'" utilise le contenu du champ cloudCover comme condition requise du champ weather.
    • Autres paramètres : par exemple, where:"weather='"+cloudCover+"' AND temperature='high'" utilise les réponses dans lesquelles la météo correspond au champ cloudCover et le champ de température comporte exactement la valeur high.
  • !important : ce qualificateur peut être ajouté à n’importe quel filtre sauf resultRecordCount pour annuler les contraintes appliquées aux valeurs renvoyées par le filtre. Par exemple, si vous imprimez les rapports des sept derniers jours seulement, avec where:"weather='sunny' !important", le filtre utilise uniquement les réponses dans lesquelles le champ weather a la valeur exacte sunny, mais il extrait les données de toutes les réponses applicables de la couche d’entités, au lieu des seules réponses sélectionnées pour être imprimées.
  • $inputParams : cet emplacement réservé peut être utilisé avec n’importe quel filtre sauf resultRecordCount pour faire référence aux paramètres définis sur le site Web Survey123 lors de l’impression d’un rapport. Vous pouvez ensuite qualifier davantage ces paramètres pour préciser votre réponse. Par exemple, orderByFields:"$inputParams, objectid DESC" classe les champs selon l’ordre défini sur le site Web Survey123, puis par ordre décroissant de valeur d’ID d’objet pour tous les champs dont les paramètres correspondent. Vous pouvez également utiliser $inputParams pour appliquer ces paramètres aux répétitions.
Remarque :

Si la clause where est utilisée avec d’autres filtres, ceux-ci doivent être implémentés dans l’ordre suivant : where, stats, orderByFields, resultRecordCount.