Objašnjenje tabela i zapisa u aplikacijama sa podlogom

U usluzi Power Apps možete da napravite aplikaciju sa podlogom koja pristupa informacijama u Microsoft Excel, SharePoint, SQL Server i nekoliko drugih izvora koji čuvaju podatke u zapisima i tabelama. Da biste najefikasnije radili sa ovom vrstom podataka, pregledajte koncepte koji su u osnovi ovih struktura.

  • Zapis sadrži jednu ili više kategorija informacija o osobi, mestu ili stvari. Na primer, zapis može sadržati ime, adresu e-pošte i telefonski broj jednog klijenta. Ostali alati zapis nazivaju „red“ ili „stavka“.
  • Tabela sadrži jedan ili više zapisa koji sadrže iste kategorije informacija. Na primer, tabela može sadržati imena, adrese e-pošte i telefonske brojeve od 50 klijenata.

U svojoj aplikaciji ćete koristiti formule za kreiranje, ažuriranje i manipulaciju zapisima i tabelama. Verovatno ćete pročitati, pa zapisati podatke u eksternom izvoru podataka, koji je proširena tabela. Pored toga, možete da kreirate jednu ili više unutrašnjih tabela koje se nazivaju kolekcije.

Možete da izgradite različite formule koje uzimaju naziv tabele kao argument, baš kao što formule u programu Excel uzimaju jednu ili više referenci ćelija kao argumente. Neke formule u Power Apps vraćaju tabelu koja odražava ostale argumente koje ste naveli. Na primer, možete da kreirate formulu:

  • da biste ažurirali zapis u tabeli navodeći tu tabelu kao jedan od više argumenata za funkciju Patch
  • da dodate, uklonite i preimenujete kolone u tabeli navodeći tu tabelu kao argument za funkcije AddColumns, DropColumns, ili RenameColumns. Nijedna od tih funkcija ne menja izvornu tabelu. Umesto toga, funkcija vraća drugu tabelu na osnovu ostalih argumenata koje navedete.

Elementi tabele

Elementi tabele.

Zapisi

Svaki zapis sadrži makar jednu kategoriju informacija za osobu, mesto ili stvar. Gorenavedeni primer prikazuje zapis za svaki proizvod (Čokolada, Hleb i Voda) i kolonu za svaku kategoriju informacija (Cena, Količina na zalihama i Količina na porudžbini).

U formuli možete da se sami pozivate na zapis, izvan konteksta tabele, koristeći vitičaste zagrade. Na primer, ovaj zapis { Naziv: „Jagode“, cena: 7,99 } nije povezan sa tabelom. Imajte na umu da imena polja, kao što su Naziv i Cena u tom primeru, nisu zatvorena u dvostrukim navodnicima.

Polja

Polje je pojedinačni podatak u zapisu. Ovu vrstu polja možete da prikažete kao vrednost u koloni za određeni zapis.

Baš kao i sa kontrolom, odnosi se i na polje zapisa koristeći . operator na snimku. Na primer, First(Products).Name vraća polje Naziv za prvi zapis u tabli Proizvodi.

Polje može sadržati drugi zapis ili tabelu, kao što primer za funkciju GroupBy pokazuje. Možete ugnezditi koliko god nivoa zapisa i tabela želite.

Kolone

Kolona se odnosi na isto polje za jedan ili više zapisa u tabeli. U gornjem primeru, svaki proizvod ima polje cena, a ta cena je u istoj koloni za sve proizvode. Tabela iznad ima četiri kolone, horizontalno prikazane na vrhu:

  • Ime
  • Cena
  • Količina na zalihama
  • Količina na porudžbini

Naziv kolone se odražava na polja u toj koloni.

Sve vrednosti unutar kolone su istog tipa podataka. U primeru gore, kolona „Količina na zalihama“ uvek sadrži broj i ne može sadržati nisku, kao što je „12 jedinica“, za jedan zapis. Vrednost bilo kog polja takođe može biti prazno.

Možda ste stupce nazivali „polja“ u drugim alatkama.

Napomena

Za izvore podataka kao što su SharePoint, Excel ili Power BI pločice koje sadrže imena kolona sa razmacima, Power Apps će zameniti razmake sa "_x0020_". Na primer, „Naziv kolone“ u SharePoint, Excel ili Power BI pločici pojaviće se kao „Column_x0020_Name“ u usluzi Power Apps kada se prikazuje u rasporedu podataka ili koristi u formuli.

Table

Tabela sadrži jedan ili više zapisa, svaki sa više polja koja imaju konzistentna imena u zapisima.

Svaka tabela koja je uskladištena u izvoru podataka ili kolekciji ima ime, koje koristite za upućivanje na tabelu i prosleđivanje funkcijama koje tabele uzimaju kao argumente. Tabele takođe mogu biti rezultat funkcije ili formule.

Kao u sledećem primeru, tabelu možete izraziti tabelu formulom koristeći funkciju Table sa skupom zapisa koje izražavate u vitičastim zagradama:

Table( { Value: "Strawberry" }, { Value: "Vanilla" } )

Takođe možete definisati tabelu sa jednom kolonom pomoću uglastih zagrada. Ekvivalentan način pisanja gorenavedenog:

[ "Strawberry", "Vanilla" ]

Formule tabela

U programu Excel i Power Apps, koristite formule za manipuliranje brojevima i niskama teksta na slične načine:

  • U programu Excel unesite vrednost, kao što je 42, u ćeliji A1, a zatim unesite formulu, kao što je A1+2 u drugoj ćeliji za prikaz vrednosti 44.
  • U Power Apps, podesite Slider1 svojstvo Default na 42, a zatim postavite svojstvo oznake Text na Slider1.Value + 2 da bi se prikazala vrednost 44.

U oba slučaja, izračunata vrednost se automatski menja ako promenite vrednosti argumenata (na primer, broj u ćeliji A1 ili vrednost Slider1).

Slično tome, možete koristiti formule za pristup i manipulaciju podacima u tabelama i zapisima. Možete koristiti imena tabela kao argumente u nekim formulama, kao što su Min(Catalog, Price) da pokažete najnižu vrednost u koloni Cena u tabeli Katalog. Ostale formule daju čitave tabele kao povratne vrednosti, kao što su RenameColumns(Catalog, "Price", "Cost"), što vraća sve zapise iz tabele Katalog, ali menja ime kolone Cena na Trošak.

Baš kao i kod brojeva, formule koje uključuju tabele i zapise automatski se ponovo izračunavaju kako se osnovna tabela ili zapis menja. Ako je cena proizvoda u tabeli Katalog spuštena ispod prethodnog minimuma, povratna vrednost formule Min će se automatski promeniti u skladu sa njom.

Prođimo kroz nekoliko jednostavnih primera.

  1. Napravite praznu aplikaciju za telefon i dodajte vertikalnu kontrolu Galerija koja sadrži druge kontrole.

    Na ekranu se podrazumevano prikazuje tekst čuvara mesta iz tabele sa nazivom CustomGallerySample. Svojstvo Items kontrole ekrana Galerija se automatski postavlja na tu tabelu.

    Galerija.

    Napomena

    Neke kontrole su preuređene i proširene radi ilustracije.

  2. Umesto da postavite svojstvo Items u ime tabele, postavite ga na formulu koja uključuje naziv tabele kao argument, kao u ovom primeru:

    Sort(CustomGallerySample, SampleHeading, SortOrder.Descending)

    Ova formula uključuje funkciju Sort koja uzima naziv tabele kao svoj prvi argument i naziv kolone u toj tabeli kao svoj drugi argument. Funkcija takođe podržava opcionalni treći argument koji predviđa da želite da sortirate podatke u opadajućem redosledu.

    Sortiranje za galeriju.

  3. Podesite svojstvo Items na formulu koja uzima formulu iz prethodnog koraka kao argument i vraća tabelu, kao u ovom primeru:

    FirstN(Sort(CustomGallerySample, SampleHeading, SortOrder.Descending), 2)

    U ovoj formuli vi koristite funkciju FirstN za prikazivanje određenog broja zapisa u tabeli. Koristite funkciju Sort kao prvi argument za FirstN i broj (u ovom slučaju, 2) kao drugi argument, koji određuje koliko zapisa treba da se prikaže.

    Čitava formula vraća tabelu koja sadrži prva dva zapisa iz tabele CustomGallerySample, sortirano po koloni SampleHeading u opadajućem redu.

    FirstN za galeriju.

Funkcije tabele i svojstva kontrole

Razmotrite funkciju Lower. Ako promenljiva dobrodošlica sadrži tekstualnu nisku „Zdravo svima“, formula Lower( welcome ) vraća „zdravo svima“. Ova funkcija ni na koji način ne menja vrednost u toj promenljivoj. Lower je čista funkcija u tome što samo obrađuje ulazno i proizvodi izlazno. To je sve; nema neželjenih efekata. Sve funkcije u programu Excel i većina funkcija u usluga Power Apps su čiste funkcije koje omogućavaju automatsko ponovno izračunavanje radne sveske ili aplikacije.

Power Apps nudi skup funkcija koje na isti način rade i u tablama. Ove funkcije uzimaju tabele kao unos, a zatim filtriraju, sortiraju, transformišu, smanjuju i sumiraju čitave tabele podataka. Zapravo, Lower i mnoge druge funkcije koje obično uzimaju jednu vrednost mogu takođe uzeti tabelu sa jednom kolonom kao unos.

  • Sort, Filter – Sortira i filtrira zapise.
  • FirstN, LastN – vraća prvi N ili poslednji N zapis u tabeli.
  • Abs, Sqrt, Round, RoundUp, RoundDown – Aritmetičke operacije na svakom zapisu tabele sa jednom kolonom, što daje tabelu sa rezultatima sa jednom kolonom.
  • Left, Mid, Right, Replace, Substitute, Trim, Lower, Upper, Proper – Manipulacije niskama na svakom zapisu tabele sa jednom kolonom, što daje tabelu sa niskama sa jednom kolonom.
  • Len – Za kolonu sa niskama, vraća tabelu sa jednom kolonom koja sadrži dužinu svakog niske.
  • Concatenate – Sastavlja više kolona sa niskama, čime se pravi tabela sa niskama sa jednom kolonom.
  • AddColumns, DropColumns, RenameColumns, ShowColumns – Manipulacija kolonom u tabeli, čime se dobija nova tabela sa različitim kolonama.
  • Distinct – Uklanja duplikate zapisa.
  • Shuffle – Meša zapise nasumičnim redosledom.
  • HashTags – Pretražuje heš oznake u stringu.
  • Errors – Pruža informacije o grešci kada radite sa izvorom podataka.

Mnoge od ovih funkcija uzimaju tabelu sa jednom kolonom kao svoj ulaz. Ako cela tabela ima samo jednu kolonu, možete je odrediti imenom. Ako tabela ima više kolona, jednu od tih kolona možete odrediti pomoću sintakse Table.Column. Na primer, Products.Name vraća tabelu sa jednom kolonom samo za vrednosti Naziv iz tabele Proizvodi.

Izgled tabele možete potpuno da promenite kako god želite tako što ćete koristiti funkcije AddColumns, RenameColumns, ShowColumns ili DropColumns. Dakle, ove funkcije menjaju samo svoj izlaz, ne i njihov izvor.

Svojstva kontrola takođe mogu biti tabele:

  • Items – Primenjuje se na galerije, okvire sa listama i kombinovane okvire. Ovo svojstvo definiše tabelu koju prikazuje galerija ili lista.
  • SelectedItems – Primenjuje se na okvire sa listama i kombinovane okvire. Ovo svojstvo definiše tabelu stavki koje je korisnik izabrao ako je omogućeno SelectMultiple.

Formule ponašanja

Ostale funkcije su posebno dizajnirane za izmenu podataka i neželjenih efekata. Budući da ove funkcije nisu čiste, morate ih pažljivo izgraditi i one ne mogu da učestvuju u automatskom preračunavanju vrednosti u aplikaciji. Ove funkcije možete koristiti samo u okviru formula ponašanja.

  • Collect, Clear, ClearCollect – Kreira kolekcije, briše ih i dodaje im podatke.
  • Patch – Menja jedno polje u zapisu ili više njih.
  • Update, UpdateIf – Ažurira zapise koji odgovaraju jednom navedenom kriterijumu ili više njih.
  • Remove, RemoveIf – Briše zapise koji odgovaraju jednom navedenom kriterijumu ili više njih.

Formule nad zapisima

Takođe možete izgraditi formulu koja izračunava podatke za pojedinačni zapis, uzima pojedinačni zapis kao argument i pruža pojedinačni zapis kao povratnu vrednost. Vratimo se na prethodno navedeni primer galerije i iskoristimo svojstvo Gallery1.Selected za prikazivanje informacija iz bilo kog zapisa koji korisnik izabere u toj galeriji.

  1. Dodajte Dugme i podesite njeno svojstvo OnSelect prema ovoj formuli:
    Collect( SelectedRecord, Gallery1.Selected )

  2. Dok držite taster Alt pritisnut, izaberite dugme.

  3. U meniju Datoteka izaberite Kolekcije.

    Kolekcija SelectedRecord.

Ova formula vraća zapis koji uključuje ne samo podatke iz zapisa koji je trenutno izabran u galeriji, već i svaku kontrolu u toj galeriji. Na primer, zapis sadrži kolonu SampleText koja odgovara koloni SampleText u originalnoj tabeli, kao i kolonu Subtitle1 koja predstavlja oznaku koja prikazuje podatke iz te kolone. Izaberite ikonu tabele u koloni Subtitle1 da biste uveli u te podatke.

Napomena

Kolona Subtitle1 može da nosi naziv Subtitle2 ili sličan, ako ste dodali elemente koje ova tema ne određuje.

Sada kada imate izabrani zapis, iz njega možete izvući pojedinačna polja sa operatorom „.“ .

  1. Dodajte kontrolu Oznaka, a zatim je pomerite ispod galerije i dugmeta.

  2. Podesite svojstvo oznake Text na ovaj izraz:
    "Selected: " & Gallery1.Selected.SampleHeading

    Svojstvo Text sa ažuriranom oznakom.

Uzeli ste svojstvo Selected, što je zapis, i iz njega izdvojili svojstvo SampleHeading.

Zapis takođe možete koristiti kao kontejner opšte namene za srodne imenovane vrednosti.

U tim slučajevima, zapis nikada nije bio deo tabele.

Funkcije zapisa i svojstva kontrola

Funkcije koje vraćaju zapise:

  • FirstN, LastN – vraća prvi ili poslednji zapis ili zapise u tabeli.
  • Lookup – Vraća prvi zapis iz tabele koja odgovara jednom kriterijumu ili više njih.
  • Patch – Ažurira izvor podataka ili objedinjuje zapise.
  • Defaults – Vraća podrazumevane vrednosti za izvor podataka.

Svojstva koja vraćaju zapise:

  • Selected – Primenjuje se na galerije i okvire sa listama. Vraća trenutno izabrani zapis.
  • Updates – Primenjuje se na galerije. Skuplja sve promene koje korisnik obavi u obrascu za unos podataka.
  • Update – Primenjuje se na kontrole unosa, kao što su kontrole unosa teksta i klizači. Postavlja pojedinačna svojstva za galeriju da bi se objedinila.

Opseg zapisa

Neke funkcije rade tako što pojedinačno izračunavaju formulu u svim zapisima tabele. Rezultat formule se koristi na različite načine:

  • AddColumns – Formula pruža vrednost dodatnog polja.
  • Average, Max, Min, Sum, StdevP, VarP – Formula daje vrednost za agregaciju.
  • Filter, Lookup – Formula određuje da li zapis treba uključiti u izlaz.
  • Concat – Formula određuje stringove koji treba da se nadovezuju.
  • Distinct - Formula vraća vrednost, koristi se za prepoznavanje dupliranih zapisa.
  • ForAll – Formula može da vrati bilo koju vrednost, potencijalno sa neželjenim efektima.
  • Sort – Formula pruža vrednost za sortiranje zapisa.
  • With – Formula može da vrati bilo koju vrednost, potencijalno sa neželjenim efektima.

Unutar ovih formula možete navesti polja zapisa koji se obrađuje. Svaka od ovih funkcija kreira „opseg zapisa“ u kome se izračunava formula, gde su polja zapisa dostupna kao identifikatori najvišeg nivoa. Možete takođe da navedete svojstva kontrole i druge vrednosti iz aplikacije.

Na primer, uzmite tabelu Proizvodi:

Primer proizvoda.

Da biste napravili tabelu za ovaj primer u svojoj aplikaciji, umetnite dugme, podesite svojstvo OnSelect prema ovoj formuli, a zatim izaberite dugme (kliknite ga dok držite taster Alt u Power Apps Studio):

Set( Products,
    Table(
        { Product: "Widget",    'Quantity Requested': 6,  'Quantity Available': 3 },
        { Product: "Gadget",    'Quantity Requested': 10, 'Quantity Available': 20 },
        { Product: "Gizmo",     'Quantity Requested': 4,  'Quantity Available': 11 },
        { Product: "Apparatus", 'Quantity Requested': 7,  'Quantity Available': 6 }
    )
)

Da biste utvrdili da li je bilo koji od ovih proizvoda tražio više nego što je dostupno:

Filter( Products, 'Quantity Requested' > 'Quantity Available' )

Prvi argument za Filter je tabela zapisa na kojoj treba raditi, a drugi argument je formula. Filter kreira opseg zapisa za izračunavanje ove formule u kojoj su polja svakog zapisa dostupna, u ovom slučaju Proizvod, Zahtevana količina i Dostupna količina. Rezultat poređenja određuje da li svaki zapis treba da bude uključen u rezultat funkcije:

Filtrirana tabela.

Dodatno, u ovom primeru možemo izračunati koliko svakog proizvoda treba naručiti:

AddColumns( 
    Filter( Products, 'Quantity Requested' > 'Quantity Available' ), 
    "Quantity To Order", 'Quantity Requested' - 'Quantity Available'
)

Ovde u rezultat dodajemo izračunatu kolonu. AddColumns ima sopstveni opseg zapisa koji koristi za izračunavanje razlike između onoga što je traženo i onoga što je dostupno.

Dodate kolone.

Na kraju, možemo da smanjimo tabelu sa rezultatima na samo one kolone koje želimo:

ShowColumns(
    AddColumns(
        Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
        "Quantity To Order", 'Quantity Requested' - 'Quantity Available'
    ),
    "Product",
    "Quantity To Order"
)

Ažurirana tabela.

Imajte u vidu da smo u gornjem tekstu koristili dvostruke navodnike (") na nekim mestima, a jednostruke navodnike (') na drugim mestima. Jednostruki navodnici su potrebni kada se referenciraju vrednosti objekta, kao što su polje ili tabela, u kom ime objekta sadrži razmak. Dvostruki navodnici se koriste kada ne referenciramo vrednost objekta, već umesto toga govorimo o njemu, posebno u situacijama u kojima objekat još ne postoji, kao u slučaju AddColumns.

Razjašnjavanje

Nazivi polja koji su dodati s opsegom zapisa zameniće ista imena na drugim mestima u aplikaciji. Kad se to dogodi, i dalje možete pristupati vrednostima izvan opsega zapisa pomoću operatora za @ razjašnjavanje:

  • Da biste pristupili vrednostima iz ugnežđenih opsega zapisa, koristite operator @ sa nazivom tabele kojom upravljate kada koristite ovaj obrazac:
    Table[@FieldName]
  • Da biste pristupili globalnim vrednostima, kao što su izvori podataka, kolekcije i promenljive konteksta, koristite obrazac [@ObjectName] (bez oznake tabele).

Ako je tabela kojom se rukovodi izraz, kao što je Filter( Table, ... ), onda se operator razjašnjavanja ne može koristiti. Samo najdublji opseg snimanja može pristupiti poljima iz ovog izraza tabele, ne koristeći operator za razjašnjavanje.

Na primer, zamislite da imate kolekciju X:

Kolekcija X.

Ovu kolekciju možete da kreirate pomoću ClearCollect( X, [1, 2] ).

I još jednu kolekciju Y:

Kolekcija Y.

Ovu kolekciju možete da kreirate pomoću ClearCollect( Y, ["A", "B"] ).

Pored toga, definišite promenljivu konteksta sa imenom Vrednost pomoću ove formule: UpdateContext( {Value: "!"} )

Hajde da sve to sastavimo. U ovom kontekstu, sledeća formula:

Ungroup(
    ForAll( X,
        ForAll( Y,
            Y[@Value] & Text( X[@Value] ) & [@Value]
        )
    ),
    "Value"
)

daje ovu tabelu:

XY tabela.

Šta se ovde dešava? Poslednja funkcija ForAll definiše opseg zapisa za X i dozvoljava svakom zapisu pristup polju Value dok se obrađuje. Njemu se može pristupiti jednostavnim korišćenjem reči Vrednost ili korišćenjem X [@Value].

Najdublja funkcija ForAll definiše još jedan opseg zapisa za Y. Pošto ova tabela takođe sadrži definisano polje Value, korišćenje polja Value ovde se odnosi na polje u zapisu za Y, a ne više na polje u obrascu X. Ovde, da bismo pristupili polju za X, Value, moramo da koristimo dužu verziju operatora za razjašnjavanje.

Pošto je Y je najdublji opseg zapisa, pristup poljima ove tabele ne zahteva nedvosmislenost, omogućavajući nam da koristimo ovu formulu sa istim rezultatom:

Ungroup(
    ForAll( X,
        ForAll( Y,
            Value & Text( X[@Value] ) & [@Value]
        )
    ),
    "Value"
)

Svi opsezi zapisa ForAll zamenjuju globalni opseg. Promenljiva konteksta Vrednost koju smo definisali nije dostupna po nazivu bez operatora za razjašnjavanje. Da biste pristupili ovoj vrednosti, koristite [@Value].

Razgrupiši svodi rezultat zato što ugnežđene funkcije ForAll rezultiraju u ugnežđenoj tabli rezultata.

Tabele sa jednom kolonom

Da biste radili na jednoj koloni iz tabele, koristite funkciju ShowColumns kao u ovom primeru:

ShowColumns( Products, "Product" )

Ova formula proizvodi ovu tabelu sa jednim kolonom:

Tabela sa jednom kolonom.

Za kraću alternativu, navedite Table.Column, koja izdvaja tabelu sa jednom kolonom sa Kolonom iz Tabele. Na primer, ova formula daje potpuno isti rezultat kao i korišćenje ShowColumns.

Products.Product

Umetnuti zapisi

Zapise izražavate koristeći vitičaste zagrade koji sadrže imenovane vrednosti polja. Na primer, možete da izrazite prvi zapis u tabeli na početku ove teme pomoću ove formule:

{ Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10 }

Formule možete ugraditi i u druge formule, kao što ovaj primer pokazuje:

{ Name: First(Products).Name, Price: First(Products).Price * 1.095 }

Možete ugnezditi zapise ugnežđivanjem vitičastih zagrada, kao što ovaj primer pokazuje:

{ 'Quantity': { 'OnHand': ThisItem.QuantOnHand, 'OnOrder': ThisItem.QuantOnOrder } }

Navedite svako ime stupca koji sadrži poseban znak, kao što je razmak ili kolona, u jednostrukim navodnicima. Da biste koristili jednostruki navodnik unutar naziva kolone, udvostručite ga.

Imajte na umu da vrednost u koloni Cena ne sadrži simbol valute, kao što je znak dolara. To formatiranje će se primeniti kada se vrednost prikaže.

Umetnute tabele

Tabelu možete kreirati koristeći funkciju Table i skup zapisa. Možete da izrazite tabelu na početku ove teme pomoću ove formule:

Table( 
    { Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10 },
    { Name: "Bread", Price: 4.95, 'Quantity on Hand': 34, 'Quantity on Order': 0 },
    { Name: "Water", Price: 4.95, 'Quantity on Hand': 10, 'Quantity on Order': 0 } 
)

Takođe možete da ugnezdite tabele:

Table( 
    { Name: "Chocolate", 
      'Quantity History': Table( { Quarter: "Q1", OnHand: 10, OnOrder: 10 },
                                 { Quarter: "Q2", OnHand: 18, OnOrder: 0 } ) 
    }
)

Tabele sa umetnutim vrednostima

Tabele sa jednim kolonom možete da kreirate tako što ćete navesti vrednosti u uglastim zagradama. Dobijena tabela ima jednu kolonu, pod nazivom Vrednost.

Na primer, [ 1, 2, 3, 4 ] je ekvivalentno Table( { Value: 1 }, { Value: 2 }, { Value: 3 }, { Value: 4 } ) i vraća ovu tabelu:

Ugrađena tabela.

Napomena

Možete li nam reći o svojim željenim postavkama jezika u dokumentaciji? Ispunite kratku anketu. (imajte na umu da je ova anketa na engleskom jeziku)

Anketa će trajati oko sedam minuta. Ne prikupljaju se lični podaci (izjava o privatnosti).