Zapytania w raportach

Funkcja raportu w witrynie Survey123 umożliwia tworzenie szczegółowych raportów dotyczących poszczególnych odpowiedzi na ankietę, sumowanie danych pochodzących z różnych odpowiedzi oraz agregowanie wyników. Ten temat zawiera opis użycia zapytań do podsumowywania i agregowania wyników oraz prezentowania ich w sekcji podsumowania.

Funkcje podsumowania nie powodują wykorzystania kredytów w wysokości przekraczającej koszt innych raportów drukowanych w tym samym czasie.

Dodawanie sekcji podsumowania

Aby uwzględnić sekcję podsumowania w raporcie, należy dołączyć znaczniki podsumowania do szablonu raportu. Sekcja podsumowania zostanie wygenerowana tylko raz, jeśli na potrzeby raportu wybrano wiele rekordów, natomiast reszta szablonu raportu będzie generowana dla każdego rekordu. W tym celu jest używana następująca składnia:

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

Sekcje podsumowania można umieszczać na początku i na końcu raportów, ale nie można ich umieszczać w treści raportu. Jeśli na przykład szablon zawiera tytuł, powinien on znajdować się w sekcji podsumowania na początku raportu lub po zamknięciu sekcji podsumowania.

Jeśli mapa jest dołączona do sekcji podsumowania, powoduje wydrukowanie wszystkich geometrii wszystkich rekordów wejściowych na pojedynczej mapie. Aby dokładniej określić wyświetlaną geometrię, można także zastosować dodatkową składnię. Zapoznaj się z następującym przykładem:

  • ${inspectionLocation | size:400:300} — wyświetla wszystkie rekordy wejściowe.
  • ${inspectionLocation | orderByFields:"creationDate DESC" | resultRecordCount:3 | size:400:300} — wyświetla trzy najnowsze rekordy spośród wszystkich rekordów wejściowych.
  • ${$shape | where:"1=1 !important" | drawingInfo:"currentLayer" | size:400:300} — drukuje wszystkie geometrie w głównej warstwie przy użyciu informacji o wyświetlaniu głównej warstwy.
Notatka:

W sekcji podsumowania drukowanie mapy lub obrazu, w tym pobieranie właściwości z pliku załącznika z wyjątkiem nazwy i rozmiaru załącznika, jest obsługiwane wyłącznie poza powtórzeniami. W przeciwnym razie wyświetlany jest komunikat o błędzie.

Następująca tabela zawiera metody, które można wykorzystać zarówno do prezentacji statystyk, jak i do kształtowania prezentacji danych w raporcie:

MetodaOpisPrzykład

gdzie

Zwraca wyłącznie rekordy spełniające określone kryteria.

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

stats

Funkcja agregowania uzyskana na podstawie określonych rekordów w warstwie.

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

orderByFields

Porządkuje drukowane rekordy w raporcie według jednego lub większej liczby pól w kolejności rosnącej lub malejącej.

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

resultRecordCount

Ustawia konkretną liczbę rekordów do wydruku.

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

returnDistinctValues

Jeśli jest ustawiona na wartość true, zwraca wartości unikalne, gdy zostanie użyta z typem outFields. Gdy ta metoda zostanie użyta z typem statystyki count, zwraca liczbę wartości unikalnych w polu.

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

outFields

Należy użyć jej z returnDistinctValues, aby uzyskać wartości unikalne pola lub kombinacji pól. Ta metoda przyjmuje rozdzieloną przecinkami listę pól.

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

Funkcje agregujące

Sekcje podsumowania, oprócz akceptowania wszystkich wyrażeń dla szablonów raportów, są idealne do użycia wielu funkcji agregujących. Funkcji tych można użyć do zwracania wyników uzyskanych z każdej odpowiedzi drukowanej w raporcie. Nie zwracają one wyników z całej warstwy obiektowej, chyba że raport jest generowany dla wszystkich obiektów lub używany jest kwalifikator !important opisany w sekcji Dodatkowa składnia. Funkcji agregujących można także używać w pojedynczych raportach, a także dla powtórzeń.

Wskazówka:

Podczas przeglądania raportu funkcje agregujące tworzą wyniki z każdej odpowiedzi wybranej do drukowania, mimo że w podglądzie przykładowych raportów można wydrukować do 20 wyników na raz.

Aby wydzielić i zagregować wartości w sekcji podsumowania, należy zdefiniować nazwę warstwy lub powtórzenia za pomocą nazwy pola, z którego mają być wydzielane wartości. Należy pamiętać o tym, że w przypadku ankiet utworzonych w kreatorze internetowym Survey123 domyślną nazwą warstwy używaną dla ankiet jest survey. Nazwa warstwy używanej do gromadzenia odpowiedzi na ankietę znajduje się w panelu Wskazówki w oknie dialogowym Zarządzanie szablonami.

Sterowanie funkcjami agregującymi odbywa się za pomocą filtru stats. Filtr ten zachowuje się tak samo jak zapytania usługi obiektowej i używa następującego formatu:

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

Parametr outStatistics określa operację statystyczną i używane pole. Został on udoskonalony na potrzeby raportów podsumowania: akceptuje trzy parametry jako listę wartości rozdzielonych przecinkami. Należy kolejno określić następujące elementy:

  • Typ statystyk.
  • Pytanie, z którego chcesz uzyskać wyniki.
  • Opcjonalnie można podać nazwę pola dla obliczeń wynikowych. W takiej sytuacji nazwę pola można podać w innym miejscu w taki sam sposób, jak w przypadku każdego pytania ankiety.

Parametry groupByFieldsForStatistics i havingClause akceptują te same wartości co pytania usługi obiektowej i są opcjonalne. Jeśli nie są potrzebne, można je pominąć.

W następującym przykładzie zostanie utworzona suma wszystkich wyników udostępnionych dla pytania o nazwie pop2000:

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

Obsługiwane są następujące typy statystyk:

WartośćOpis

avg

Wartość średnia wszystkich odpowiedzi

count

Liczba odpowiedzi

sum

Suma całkowita wszystkich odpowiedzi

stddev

Odchylenie standardowe od wartości średniej

min

Najniższa wartość odpowiedzi na pytanie

max

Najwyższa wartość odpowiedzi na pytanie

var

Wariancja od wartości średniej

range

Zakres wartości we wszystkich odpowiedziach (różnica wartości maksymalnej i minimalnej)

first

Pierwsza odpowiedź na pytanie

last

Ostatnia odpowiedź na pytanie

median

Wartość średnia wszystkich odpowiedzi

Wiele parametrów outStatistics można skonfigurować, oddzielając je średnikiem. Jeśli używanych jest wiele parametrów, zapytanie wygeneruje tablicę wyników. W poniższym przykładzie na podstawie rekordów w głównej warstwie obliczane są i wyświetlane łączna wielkość populacji oraz średni dochód:

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

Uwzględnienie wybranych wartości

Poszczególne wartości z pytań można wydrukować, korzystając z tej samej funkcji, która jest używana w przypadku powtórzeń w poszczególnych raportach. Tworząc filtr, który pobiera tylko wybrane wartości, można poszerzyć podsumowanie o konkretne informacje uzyskane z ankiety.

Notatka:

Jeśli w danym raporcie jest używany filtr, jako domyślny kontekst filtru używany jest pojedynczy rekord. W celu uzyskania zamierzonego wyniku może być konieczne użycie dodatkowej składni.

Poniżej przedstawiono przykładowy filtr, w którym używane są tylko wybrane informacje. Następnie podano objaśnienia poszczególnych elementów.

Średnia populacjaNazwa instytucji

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

${Org_NAME}${/}

  • #All_Orgs — określona warstwa, do której odnoszą się wymagane dane. Rozpoczyna to deklarację obszaru do uzyskiwania danych odpowiedzi, a także na potrzeby filtru stats.
  • "avg,POP,AvgPOP" — parametr outStatistics dla filtru statystyk. W tym przypadku zwraca on średnią liczbę odpowiedzi na pytanie o nazwie POP, a następnie zapisuje je w polu o nazwie AvgPOP.
  • "Org_NAME" — parametr groupByFieldsForStatistics dla filtru statystyk. Spowoduje to grupowanie średnich odpowiedzi zgodnie z odpowiedziami na pytanie o nazwie Org_NAME.
  • "AVG(POP)>200" — parametr havingClause dla filtru statystyk. Dzięki temu zostaną uwzględnione jedynie odpowiedzi o średniej populacji przekraczającej 200.
  • orderByFields:"AvgPOP DESC" — filtr orderByFields wyświetla odpowiedzi na podstawie zawartości konkretnego pola. W takim przypadku odpowiedzi są wyświetlane w kolejności malejącej według pola AvgPOP utworzonego przez parametr outStatistic.
  • resultRecordCount:5 — filtr resultRecordCount ogranicza odpowiedzi tylko do określonej liczby: w tym przypadku do 5.
  • ${AvgPOP | round:2} — zawartość pola AvgPOP zaokrąglona do dwóch miejsc po przecinku. Jest to jedyny element w pierwszej komórce, który będzie wyświetlany w podsumowaniu; sam filtr statystyk nie będzie wyświetlany.
  • ${Org_NAME} — zawartość pola Org_NAME z odpowiedzi na ankietę.
  • ${/} — kończy deklarację obszaru, w którym można uzyskać dane odpowiedzi. Ponieważ wszystkie te informacje znajdują się tylko w tabeli, zarówno początek, jak i koniec tego obszaru muszą być zadeklarowane wewnątrz tej samej tabeli.

W wyniku tego filtru w tabeli zostanie wyświetlonych pięć wierszy odpowiedzi. W razie potrzeby zostaną dodane dodatkowe wiersze. Uzyskany raport podsumowania będzie podobny do następującego:

Średnia populacjaNazwa instytucji

2360,23

A

1639,75

C

1179,7

B

915,93

D

795,57

E

Dodatkowa składnia

Oprócz powyższych parametrów, które służą do tworzenia filtru ankiety, istnieją dodatkowe parametry i kwalifikatory, których można użyć do usprawnienia zapytania.

  • where — poprawna klauzula WHERE języka SQL wykonująca operacje na polach w warstwie.
    • Jawna wartość — na przykład where:"weather='sunny'" spowoduje, że filtr będzie używał tylko tych odpowiedzi, w których pole weather ma dokładnie wartość sunny.
    • Zawartość pola — na przykład where:"weather='"+cloudCover+"'" spowoduje użycie zawartości pola cloudCover jako wymagania dla pola weather.
    • Dodatkowe parametry — na przykład where:"weather='"+cloudCover+"' AND temperature='high'" spowoduje użycie odpowiedzi, w których wartość pola weather (pogoda) jest zgodna z polem cloudCover, a wartość pola temperature (temperatura) ma dokładnie wartość high.
  • !important — ten filtr można dodać do dowolnego filtru oprócz resultRecordCount w celu zastąpienia wszelkich ograniczeń wartości zwracanych przez filtr. Jeśli na przykład były drukowane raporty tylko z ostatnich siedmiu dni, where:"weather='sunny' !important" spowoduje, że filtr użyje tylko tych odpowiedzi, w których pole weather ma dokładnie wartość sunny, ale będzie korzystał z wszystkich odpowiednich odpowiedzi w warstwie obiektowej, a nie tylko z odpowiedzi wybranych do wydrukowania.
  • $inputParams — tego elementu zastępczego można używać z każdym filtrem oprócz resultRecordCount do odwoływania się do parametrów skonfigurowanych w witrynie Survey123 podczas drukowania raportu. Parametry te można następnie dodatkowo kwalifikować w celu ograniczenia odpowiedzi. Na przykład orderByFields:"$inputParams, objectid DESC" uporządkuje pola z użyciem kolejności skonfigurowanej w witrynie Survey123, a następnie malejąco według wartości ID obiektu dla wszystkich pól z dopasowanymi parametrami. Można też użyć $inputParams do zastosowania tych parametrów do powtórzeń.
Notatka:

Jeśli klauzula where jest używana w innych filtrach, powinny one być zaimplementowane w następującej kolejności: where, stats, orderByFields, resultRecordCount.