Actions

Tab Separated Value survey structure/nl: Difference between revisions

From LimeSurvey Manual

No edit summary
No edit summary
Line 87: Line 87:
Er is een regel per groep.
Er is een regel per groep.
#class = 'G'
#class = 'G'
#name => group_name -- het id van de groep
#name => group_name -- id van de groep
#relevance => grelevance -- het groepslevel  relevantie vergelijking, zonder accolades
#relevance => grelevance -- groepslevel  relevantie vergelijking, zonder accolades
#text => description -- de taalspecifieke groepsbeschrijving
#text => description -- taalspecifieke groepsbeschrijving
#language => language -- de taal van de groep (bijv. 'en')
#language => language -- taal van de groep (bijv. 'en')


==Vragen==
==Vragen==

Revision as of 20:17, 28 April 2016

Deze functie is vanaf versie 2.0 beschikbaar.
Opmerking, deze functie is ook beschikbaar in 1.92, maar is toegevoegd na de 'feature freeze', het is dus geen onderdeel van de basiscode. Ervaren gebruikers kunnen deze functie toevoegen via GitHub

Excel (tabgescheiden) importeren en exporteren van enquête-structuur

Deze functie is ontworpen om het gebruik van een spreadsheetprogramma, zoals Excel, LibreOffice of Google-Docs, te vereenvoudigen. Het voorkomt dat je afhankelijk bent van SGQA-codes.

Deze functie is oorspronkelijk geschreven voor de ondersteuning van invoer uit Excel-geformatteerde bestanden (xls), de hiervoor gebruikte externe plugin is echter slecht onderhouden en de ondersteuning van UTF-8-codering (bijv. multi-lingual) is matig. Daarom ondersteunt de functie nu de invoer uit bestanden die ASCII of UTF-8 gecodeerd zijn met door tabs gescheiden waarden. Deze TSV-bestanden zijn een uitbreiding van txt-bestanden.

Beginnen

De eenvoudigste manier is om een bestaande enquête te pakken en die te exporteren in een 'Tab Separated Value'-formaat. Gebruik de normale exporteerknop, maar selecteer dan geen lss formaat maar "LimeSurvey Tab Separated Value survey file (*.txt)".  Het uitvoerbestand is dan in het goede formaat (tab delimited unicode file), met de goede kolomkoppen.

Elk spreadsheetprogramma dat tab-separated-values ondersteunt, voldoet.  LimeSurvey kijkt niet naar de opmaak in de spreadsheet, maar je mag wel opmaak gebruiken.

Het uitvoerbestand is in UTF-8 formaat met de Byte Order Mark (BOM) als de eerste drie (verborgen) tekens.  Als je dubbelklikt op dit bestand (.txt) en het direct in Excel probeert te openen, dan gaat het niet goed omdat Excel niet herkent dat het in UTF-8 is. Als je dit bestand in Excel wilt openen, start dan eerst Excel en open dan het bestand via Excel en geef aan dat er UTF-8 encoding gebruikt is.

Er is een regel voor elke groep, vraag, subvraag en antwoord.  Er zijn ook regels voor globale enquêtevariabelen en voor taalspecifieke variabelen.  De standaardtaal wordt eerst getoond, gevolgd door de andere talen.  Als er meerdere talen zijn wordt eerst de gehele inhoud voor de standaardtaal in het bestand opgenomen.  Daarna voor elke andere gebruikte taal, met natuurlijk dezelfde indeling.

Regels zijn afhankelijk van de context.  Vragen die na een groep komen, zijn een onderdeel van die groep, subvragen na een vraag zijn subvragen van die vraag, antwoorden na een vraag zijn antwoorden op die vraag.  Er worden daarom geen ID's (gid, qid, sqid) bij vragen gebruikt.  Die worden automatisch toegekend bij het importeren.  In dit formaat worden dus geen gid, qid, of sqid (of SGQA codes) gebruikt.

Tips

Het doel van de "Tab Separated Value" import/export is dat je snel je enquête in een spreadsheet kunt ontwerpen.  Je kunt dit importeren meerdere keren na elkaar doen om je enquête in een aantal stappen steeds beter te maken, door de geldigheid met de functie "Show Survey Logic"  te testen, of door de enquête te testen. Na elke keer importeren heb je een nieuwe enquête, dus je kunt er een heel stel aanmaken. Zorg ervoor dat je oudere versies verwijderd als je ze niet meer nodig hebt bij het ontwerpen van je enquête.  Omdat je geen SGQA-codes gebruikt in het 'Tab Separated Value'-formaat, hoef je je ook geen zorgen te maken over de codes die LimeSurvey toekent aan de enquête, groep, vraag en antwoorden.

Met deze aanpak kun je wat handige zaken doen met het maken van enquêtes:

  1. Gebruiken van dezelfde antwoorden voor meerdere vragen.  Kopieer alleen de 'A'-rijen en plak ze na elke vraag die dezelfde set antwoorden moet hebben.
  2. Gebruiken van dezelfde subvragen voor meerdere vragen.  Kopieer de 'SQ'-rijen en plak ze na elke vraag die dezelfde subvragen moet hebben.
  3. "Herhalen" - een groep meerdere keren gebruiken.  Als de groep naar je zin is, kopieer de groep dan zo vaak als het nodig is.  Gebruik Excel om alleen de 'G'-rijen te bekijken (voor groepen), en gebruik de Excel kolomsleepfunctie om de vergelijkingen voor elke groep bij te werken (bijv. voor een telling kan de eerste vergelijking zijn "aantalMensen > 1", de volgende moet zijn "aantalMensen > 2").  Door het slepen wordt het nummer aangepast.  Filter op 'Q'-rijen en zorg ervoor dat elke vraag een unieke waarde heeft (bijv. g1_v1, g1_v2, g1_vN, gebruik find/replace om in de 2e groep g1 te wijzigen in g2; g3 voor de volgende, enz.).
  4. Wijzigen volgorde vragen/groepen.  Wijzig eenvoudig de rijen in je spreadsheetbestand.
  5. Testen enquête-modules.  Bij lange enquêtes wil je mogelijk het testen in meerdere modules doen.  Maak gewoon voor elke module een nieuw werkblad in Excel. Dit voorkomt dat je veel gegevens moet invoeren om latere modules van de enquête te testen.
  6. Testen verplichte vragen.  Een veelgehoorde klacht is dat je veel vragen verplicht moet maken, maar dat je die bij het testen wilt overslaan.  Maak gewoon een centraal werkblad aan met de uiteindelijk gewenste waarden.  Om te testen verwijder je dan de "mandatory" kolom en bewaart het resultaat als een kopie.  Test dan door die versie te importeren, alle vragen zijn dan optioneel.  Importeren na het testen weer de centrale versie.
  7. Standaarden zetten.  Je kunt deze waarden ook in de bestemde kolom zetten en dus niet via de GUI invoeren.  Soms is het niet mogelijk om via de GUI de gewenste waarde in te voeren, zoals bij expressies om een standaard voor een lijst in te voeren (bijvoorbeeld een aantal token-attributen).
  8. Vertaling.  Je kunt per taal een kopie van je bestand maken.  Kopieer alle regels voor de standaardtaal en pas het taalveld aan.  Het vertalen kun je door vertalers laten doen, daarna maak je er weer een bestand van.
  9. Bulk setting of advanced question attributes.  You may want all of your equations to start visible (so you can see their values as you collect data), but then hide them all before going to production.  Simply filter the spreadsheet on class = 'Q' and question type = '*' (equation), and set always_hide to 1 for each of those questions.  Similarly, say after you create the survey, you decide which questions should appear in public statistics.  Rather than edit each question through the GUI, filter on class = 'Q', and set public_statistics = 1 for all of the questions that should be visible in statistics.
  10. Find and replace.  Say you decide you need to change some phrasing across all of your questions, you can use Excel find and replace to make those changes.  Similarly, say you decide to do a bulk-renaming of your variables, find and replace can come to the rescue.  If you need regular-expression based find and replace, you can select the desired column, copy to a text editor, do your find and replace, and paste the column back into the spreadsheet.
  11. Gaining approvals.  If you are doing research, you may have an Institutional Review board who insists upon seeing the text of the questions.  This may be a convenient way to share it.  Similarly for discussions with a client.
  12. Team consensus.  If you are trying to get a group to agree upon the wording or appearance of a question or group, you can rapidly prototype / edit the spreadsheet, import it, and show the team (via question or group preview) exactly what the users will see.  That way you can get approval from the team before they leave the room rather than having to document requirements, build them, and get approval at future meetings.
  13. Upgrading from other  survey formats.  If you have existing survey in XML, Word, or other format, you can create a translation process to map them to this format.  Although you could also try mapping to the .lss format, the advantage of this format is that it doesn't require you to keep track of foreign key relationships between groups, questions, sub-questions, answers, and defaults.

Beperkingen

  1. Deze functie werkt door het ontwerp alleen goed voor enquêtes die qcode gebruiken (dus niet SGQA).  De functie neemt aan dat variabelenamen (vraag-identifiers) in de enquête uniek zijn. Namen van subvragen kunnen worden herhaald, zolang ze maar uniek zijn binnen elke vraag.
  2. Op dit moment worden er geen condities geimporteerd/geëxporteerd (omdat er van wordt uitgegaan dat je relevantie-vergelijkingen gebruikt), Beoordelingen (aanname dat je maatwerk (tailoring) gebruikt), of Quota's.  Als hier vraag naar is, dan zou dit toegevoegd kunnen worden.
  3. Op dit moment ondersteunt de 'Tab Separated Value'-exportfunctie geen defaults voor lijst-vraagtypes.

Bestandsformaat

Algemeen

We gebruiken dezelfde groep kolomkoppen voor meerdere zaken.  De eerste 12 kolommen zijn voor verschillende doelen afhankelijk van het type van de regel (bijv. groep, vraag).  De andere kolommen is een alfabetische lijst van de databaseveldnamen voor de geadvanceerde vraagcodes.  De syntax per type staat hieronder

De eerste 12 kolommen:

  1. class
  2. type/scale
  3. name
  4. relevance
  5. text
  6. help
  7. language
  8. validation
  9. mandatory
  10. other
  11. default
  12. same_default

Enquête globale parameters

Er is een regel per parameter in de enquête-tabel.

  1. class = 'S'
  2. name => database field name
  3. text => value

Enquete taalspecifieke parameters

Er is een rij per veld per taal in de surveys_languagesettings tabel.  Alle regels bij een specifieke taal worden verzameld voor ze worden toegevoegd in de database-tabel.

  1. class = 'SL'
  2. name => database veldnaam
  3. text => waarde
  4. language => taal

Groepen

Er is een regel per groep.

  1. class = 'G'
  2. name => group_name -- id van de groep
  3. relevance => grelevance -- groepslevel relevantie vergelijking, zonder accolades
  4. text => description -- taalspecifieke groepsbeschrijving
  5. language => language -- taal van de groep (bijv. 'en')

Vragen

Een regel per vraag.  Vragen behoren bij de groep die eraan voorafgaat.

  1. class = 'Q'
  2. type/scale => type -- de (meestal één letter) vraagtype (bijv 'M' is Meerkeuze)
  3. name => title -- de unieke vraagnaam (de basis van de qcode naamgeving)
  4. relevance => relevance -- de relevantie vergelijking  van de vraag
  5. text => question -- de tekst van de vraag in een specifieke taal
  6. help => help -- taalspecifieke helptekst
  7. language => language -- de taal van de groep (bijv. 'en')
  8. validation => preg -- de optionele regulaire expressie validatie-criteria van de vraag
  9. mandatory => mandatory -- 'Y' indien verplicht
  10. other => other -- 'Y' indien de optie 'Anders' beschikbaar moet zijn (niet voor alle vraagtypes)
  11. default => default -- indien gezet, de standaardwaarde-tabel voor de vraag
  12. same_default => same_default -- 'Y' voor ja, dan gelden de standaardwaarden van de standaardtaal ook voor de andere talen

Subvragen

Een regel per subvraag.  Subvragen behoren bij de vraag die eraan voorafgaat.

  1. class = 'SQ'
  2. type/scale => scale_id -- 0 of 1, afhankelijk van het vraagtype (bijv. array text heeft 2 schalen)
  3. name => title -- de "naam" van de subvraag, bijv. die gebruikt voor het uitsluiten van de andere
  4. relevance => relevantie -- (toekomstige) ondersteuning subvraaglevel relevantie
  5. text => tekst -- taalspecifieke tekst van de subvraag
  6. help => help -- (toekomstige) ondersteuning subvraaglevel help
  7. language => taal -- de taal van de subvraag
  8. validation => preg -- (toekomstige) ondersteuning subvraaglevel regulaire expressie-validatie (bijv. voor postcode)
  9. mandatory => mandatory -- (toekomstige) ondersteuning subvraaglevel verplicht (bijv. maak maar een paar subvragen verplicht)
  10. default => default -- indien gezet, de standaardwaarde-tabel voor de subvraag
  11. same_default => same_default -- voor ja, dan gelden de standaardwaarden van de standaardtaal ook voor de andere talen

Antwoorden

Een regel per antwoord.  Antwoorden behoren bij de vraag die eraan voorafgaat, en de antwoorden staan in de gewenste volgorde.

  1. class = 'A'
  2. type/scale => scale_id -- 0 of 1 (bijv. voor dubbele-schaal)
  3. name => code -- de unieke identifier van het antwoord
  4. relevance => assessment_value -- indien optie beoordelingen wordt gebruikt, dan is dit de beoordelingswaarde van het antwoord
  5. text => answer -- taalspecifieke tekst van het antwoord
  6. language => taal -- de taal van het antwoord

Voorbeelden

Relevantie, maatwerk en vergelijkingen

Discussie en schermafbeeldingen

ls2_em_tailoring.xls

Voorbeeld telling

Discussie en schermafbeeldingen

ls2_group_relevance.xls

Cascading arrayfilters

Discussie en schermafbeeldingen

ls2_cascading_array_filter.xls

Traditionele validatie, opnieuw gebruiken

Discussie en schermafdrukken

ls2_validation_tests.xls

Randomisatie groepen

Discussie en schermafbeeldingen

Randomization_Group_Test.xls