Cấu trúc khảo sát Giá trị được phân tách bằng tab
From LimeSurvey Manual
Nhập và xuất giá trị được phân tách bằng tab của cấu trúc khảo sát
Tính năng này được thiết kế để giúp bạn dễ dàng sử dụng phần mềm bảng tính như LibreOffice, Excel hoặc Google Docs để soạn thảo và chỉnh sửa khảo sát. Nó loại bỏ hoàn toàn sự phụ thuộc vào mã SGQA.
Tính năng này hỗ trợ nhập từ các tệp Giá trị phân tách bằng tab (TSV) được mã hóa ASCII hoặc UTF-8 có phần mở rộng là .txt.
Bắt đầu
Cách dễ nhất là thực hiện một khảo sát hiện có và xuất nó ở định dạng Giá trị được phân tách bằng tab. Sử dụng nút khảo sát xuất thông thường và thay vì chọn định dạng .lss, hãy chọn "Định dạng giá trị được phân tách bằng tab (*.txt)". Nó sẽ được lưu dưới dạng tệp Giá trị được phân tách bằng tab ở định dạng thích hợp (tệp unicode được phân cách bằng tab), với tất cả các tiêu đề cột chính xác.
Bất kỳ phần mềm bảng tính nào hỗ trợ các giá trị được phân tách bằng tab đều ổn (ví dụ: OpenOffice hoặc LibreOffice). LimeSurvey bỏ qua mọi định dạng trong bảng tính nhưng bạn có thể thoải mái thêm một số định dạng nếu điều đó giúp ích cho bạn.
Sẽ có một hàng cho mỗi nhóm, câu hỏi, câu hỏi phụ và câu trả lời. Ngoài ra còn có các hàng dành cho các biến khảo sát toàn cầu và các biến khảo sát theo ngôn ngữ cụ thể. Ngôn ngữ chính sẽ được liệt kê đầu tiên, tiếp theo là bất kỳ ngôn ngữ phụ nào. Vì vậy, nếu có nhiều ngôn ngữ, toàn bộ nội dung của ngôn ngữ cơ sở sẽ xuất hiện đầu tiên (ví dụ: tất cả các nhóm, câu hỏi, câu hỏi phụ và câu trả lời). Tiếp theo là bản dịch cho từng ngôn ngữ thứ cấp (với số lượng và thứ tự hoặc hàng giống hệt nhau cho bộ đã dịch).
Các mối quan hệ được suy ra bởi sự gần gũi. Vì vậy, những câu hỏi theo sau một nhóm là một phần của nhóm đó; các câu hỏi phụ theo sau một câu hỏi là một phần của câu hỏi đó và các câu trả lời theo sau một câu hỏi là một phần của câu hỏi đó. Vì vậy, bạn không cần biết ID (gid, qid, sqid) cho bất kỳ câu hỏi nào. Chúng sẽ được tính toán tự động khi nhập. Trên thực tế, định dạng này hoàn toàn không sử dụng gid, qid hoặc sqid (hoặc mã SGQA).
Mẹo
Mục tiêu của việc nhập/xuất Giá trị phân tách bằng tab là cho phép bạn nhanh chóng thiết kế khảo sát của mình bằng bảng tính. Chúng tôi hy vọng rằng bạn sẽ thường xuyên nhập trang tính, kiểm tra tính hợp lệ của nó bằng tính năng "Hiển thị logic khảo sát" và kiểm tra nó. Mỗi lần bạn nhập nó, bạn sẽ nhận được một cuộc khảo sát mới. Vì vậy, bạn có thể kết thúc với nhiều khảo sát được phát triển một phần, nhưng điều đó không sao cả. Chỉ cần tập thói quen theo dõi cái nào là gần đây nhất hoặc xóa cái cũ sau khi bạn nhập cái mới. Vì bạn không bao giờ sử dụng mã SGQA trong Giá trị được phân tách bằng tab nên bạn không bao giờ cần phải lo lắng về mã mà LimeSurvey chỉ định cho các khóa khảo sát, nhóm, câu hỏi và câu trả lời chính. Vì vậy, hãy thoải mái nhập và xuất bao nhiêu lần tùy thích.
Dưới đây là một số điều thuận tiện mà bạn có thể thực hiện với phương pháp tiếp cận công cụ soạn thảo này:
- Sử dụng cùng một câu trả lời cho nhiều câu hỏi. Chỉ cần sao chép các hàng 'A' và dán sau mỗi câu hỏi cần có cùng một bộ.
- Sử dụng cùng một câu hỏi phụ cho nhiều câu hỏi. Chỉ cần sao chép các hàng 'SQ' và dán chúng sau mỗi câu hỏi cần đến nó.
- "Lặp lại" - sử dụng cùng một nhóm nhiều lần. Sau khi nhóm đã theo cách bạn muốn, hãy sao chép nhóm đó nhiều lần nếu cần. Sử dụng tính năng lọc Excel để chỉ xem các hàng 'G' (dành cho nhóm) và sử dụng tính năng kéo cột Excel để cập nhật các phương trình liên quan cho từng nhóm (ví dụ: đối với một cuộc điều tra dân số, mức độ liên quan đầu tiên có thể là "numPeople > 1", tiếp theo phải là "numPeople > 2". Tính năng kéo sẽ tự động cập nhật số). Lọc theo hàng 'Q' và đảm bảo rằng mỗi câu hỏi có một giá trị duy nhất (ví dụ: giả sử bạn đặt tên cho các biến là g1_q1, g1_q2, g1_qN, sử dụng tìm/thay thế để chuyển đổi g1 thành g2 nhóm thứ hai; g3 cho nhóm thứ ba, v.v.) .
- Sắp xếp lại câu hỏi/nhóm. Chỉ cần sắp xếp lại các hàng của tệp bảng tính.
- Thử nghiệm các mô-đun khảo sát. Đối với các cuộc khảo sát dài, bạn có thể muốn chia thử nghiệm thành các mô-đun. Chỉ cần tạo các tệp bảng tính mới cho mỗi mô-đun, xóa mọi hàng bạn không cần. Điều này tránh việc phải nhập nhiều dữ liệu để kiểm tra các phần sau của cuộc khảo sát.
- Kiểm tra các câu hỏi bắt buộc. Lời phàn nàn phổ biến không phải là bắt buộc phải đưa ra nhiều câu hỏi mà là phải tắt tính năng bắt buộc đi thi. Chỉ cần tạo bảng tính chính với giá trị bắt buộc được đặt thành các giá trị mong muốn cuối cùng. Sau đó, để kiểm tra, bạn chỉ cần xóa cột "bắt buộc" và lưu phiên bản thử nghiệm của bảng tính. Khi bạn nhập phiên bản đó, sẽ không có câu hỏi nào là bắt buộc. Sau khi bạn hoàn thành việc kiểm tra, hãy nhập bản sao chính.
- Đặt mặc định. Thay vì sử dụng GUI, bạn có thể nhập bất kỳ giá trị mặc định mong muốn nào vào cột mặc định. Điều này đặc biệt hữu ích trong trường hợp GUI không cho phép bạn nhập giá trị mong muốn, chẳng hạn như biểu thức để đặt mặc định cho các mục danh sách (chẳng hạn như điền danh sách từ [[Người tham gia khảo sát|người tham gia khảo sát] ] thuộc tính).
- Dịch. Bạn có thể tạo bản sao bảng tính của mình - mỗi bản sao cho mỗi ngôn ngữ. Bao gồm tất cả các hàng cho ngôn ngữ chính, sau đó sao chép và dán chúng bên dưới, đồng thời sử dụng thao tác kéo để thay đổi trường ngôn ngữ sang ngôn ngữ đích. Chúng có thể được phân phối cho người dịch của bạn và được tích hợp lại vào một tệp bảng tính khi hoàn tất.
- Cài đặt hàng loạt thuộc tính câu hỏi nâng cao. Bạn có thể muốn tất cả các phương trình của mình bắt đầu hiển thị (để bạn có thể thấy giá trị của chúng khi thu thập dữ liệu), nhưng sau đó ẩn tất cả chúng trước khi đưa vào sản xuất. Chỉ cần lọc bảng tính trên class = 'Q' và loại câu hỏi = '*' (phương trình), đồng thời đặt Always_hide thành 1 cho mỗi câu hỏi đó. Tương tự, giả sử sau khi tạo khảo sát, bạn quyết định câu hỏi nào sẽ xuất hiện trong số liệu thống kê công khai. Thay vì chỉnh sửa từng câu hỏi thông qua GUI, hãy lọc trên class = 'Q' và đặt public_statistics = 1 cho tất cả các câu hỏi sẽ hiển thị trong thống kê.
- Tìm và thay thế. Giả sử bạn quyết định cần thay đổi một số cụm từ trong tất cả các câu hỏi của mình, bạn có thể sử dụng tính năng tìm và thay thế trong Excel để thực hiện những thay đổi đó. Tương tự, giả sử bạn quyết định đổi tên hàng loạt các biến của mình, tìm và thay thế có thể giúp ích. Nếu bạn cần tìm và thay thế dựa trên biểu thức chính quy, bạn có thể chọn cột mong muốn, sao chép vào trình soạn thảo văn bản, thực hiện tìm và thay thế rồi dán lại cột vào bảng tính.
- 'Đạt được sự phê duyệt '. Nếu bạn đang thực hiện nghiên cứu, bạn có thể có một Hội đồng Đánh giá Thể chế nhất quyết yêu cầu xem nội dung câu hỏi. Đây có thể là một cách thuận tiện để chia sẻ nó. Tương tự như vậy đối với các cuộc thảo luận với khách hàng.
- Đồng thuận nhóm. Nếu bạn đang cố gắng thuyết phục một nhóm đồng ý về cách diễn đạt hoặc hình thức của một câu hỏi hoặc nhóm, bạn có thể nhanh chóng tạo nguyên mẫu/chỉnh sửa bảng tính, nhập bảng tính đó và hiển thị cho nhóm (thông qua câu hỏi hoặc bản xem trước nhóm) chính xác những gì người dùng sẽ thấy . Bằng cách đó, bạn có thể nhận được sự chấp thuận từ nhóm trước khi họ rời khỏi phòng thay vì phải ghi lại các yêu cầu, xây dựng chúng và nhận được sự chấp thuận trong các cuộc họp trong tương lai.
- Nâng cấp từ các định dạng khảo sát khác. Nếu khảo sát của bạn ở dạng XML, Word hoặc định dạng khác, bạn có thể tạo quy trình dịch để ánh xạ chúng sang định dạng này. Mặc dù bạn cũng có thể thử ánh xạ sang định dạng .lss, nhưng ưu điểm của định dạng này là nó không yêu cầu bạn phải theo dõi các mối quan hệ khóa ngoại giữa các nhóm, câu hỏi, câu hỏi phụ, câu trả lời và giá trị mặc định.
Giới hạn
- Theo thiết kế, tính năng này chỉ hoạt động bình thường đối với các khảo sát sử dụng cách đặt tên qcode (chứ không phải SGQA). Tính năng này giả định rằng tên biến (mã định danh câu hỏi) là duy nhất trong suốt cuộc khảo sát. Tên câu hỏi phụ có thể được lặp lại, miễn là chúng là duy nhất trong phạm vi của một câu hỏi cụ thể.
Định dạng tệp
Chung
Chúng tôi sử dụng cùng một bộ tiêu đề cột cho nhiều mục đích. 14 cột đầu tiên phục vụ các mục đích khác nhau tùy thuộc vào loại thực thể (ví dụ: nhóm, câu hỏi, câu trả lời). Các cột còn lại là danh sách theo thứ tự bảng chữ cái của tên trường cơ sở dữ liệu cho mã câu hỏi nâng cao. Dưới đây là cú pháp cho từng loại thực thể
14 cột đầu tiên là:
- id (New in 3.14.0 )
- similar_id (New in 3.14.0 )
- class
- type/scale
- tên
- sự liên quan
- văn bản
- help
- ngôn ngữ
- xác thực
- bắt buộc
- other
- mặc định
- same_default
Thông số toàn cầu khảo sát
Có một hàng cho mỗi tham số trong bảng khảo sát.
- class => 'S'
- name => tên trường cơ sở dữ liệu
- text => value
Thông số khảo sát theo ngôn ngữ cụ thể
Có một hàng cho mỗi trường cho mỗi ngôn ngữ trong bảng Surveys_Languagesettings. Tất cả các mục nhập cho một ngôn ngữ nhất định sẽ được thu thập trước khi thực hiện chèn vào bảng đó.
- class => 'SL'
- name => tên trường cơ sở dữ liệu
- text => value
- lingu = > ngôn ngữ
Nhóm
Một hàng nhóm cho mỗi ngôn ngữ khảo sát (ví dụ: sẽ có 3 hàng nhóm nếu khảo sát có 3 ngôn ngữ).
- id => mã định danh số duy nhất cho nhóm, bắt đầu bằng số 1, sử dụng cùng một ID cho các ngôn ngữ bổ sung thuộc về nhóm hiện tại
- class => 'G'
- name => group_name -- mã định danh duy nhất cho nhóm
- relevance => grevance -- phương trình liên quan ở cấp độ nhóm, không có dấu ngoặc nhọn
- text => description -- mô tả ngôn ngữ cụ thể của nhóm
- lingu => ngôn ngữ -- ngôn ngữ của nhóm (ví dụ: 'en')
Câu hỏi
Một hàng câu hỏi cho mỗi ngôn ngữ khảo sát (ví dụ: sẽ có 3 hàng câu hỏi nếu khảo sát có 3 ngôn ngữ). Các câu hỏi được coi là thuộc về nhóm đứng trước chúng.
- id => mã định danh số duy nhất cho câu hỏi, bắt đầu bằng số 1, sử dụng cùng một ID cho các ngôn ngữ bổ sung thuộc câu hỏi hiện tại
- class => ' Q'
- type/scale => type -- the (thường là một chữ cái) loại câu hỏi (ví dụ: 'M' là Nhiều lựa chọn)
- name => tiêu đề -- the tên câu hỏi duy nhất (gốc của hệ thống đặt tên qcode)
- relevance => mức độ liên quan -- phương trình liên quan cho câu hỏi
- text => câu hỏi -- ngôn ngữ -văn bản cụ thể của câu hỏi
- help => help -- văn bản trợ giúp theo ngôn ngữ cụ thể
- lingu => ngôn ngữ -- ngôn ngữ dành cho nhóm (ví dụ: 'en')
- validation = > preg -- tiêu chí xác thực biểu thức chính quy tùy chọn cho câu hỏi
- mandatory => bắt buộc -- 'Y' nếu bắt buộc
- other => other -- 'Y' nếu có tùy chọn "Khác" (chỉ dành cho một số loại câu hỏi)
- default => default -- nếu được đặt, giá trị này sẽ được chèn vào bảng giá trị mặc định cho câu hỏi này
- same_default => Same_default -- 'Y' là đúng, trong trường hợp đó mọi giá trị mặc định được đặt cho ngôn ngữ chính đều áp dụng cho các ngôn ngữ khác
Câu hỏi phụ
One subquestion row per survey language. Subquestions are assumed to belong to the question that precedes them.
- id => same unique numeric identifier which is used for the questions. Subquestions should use next available value, question and subquestion IDs should be different (e.g. use ID 1 for question and IDs 2, 3 and 4 for subquestions belonging to question 1, next question ID should be 5 and so on). Use the same subquestion ID for additional languages belonging to current subquestions.
- class => 'SQ'
- type/scale => scale_id -- 0 or 1, depending upon question type (e.g. array text will have two scales)
- name => title -- the "name" of the subquestion, e.g. the one used for exclude_all_others
- relevance => relevance -- (Future) to support subquestion-level relevance
- text => question -- the language-specific text of the subquestion
- help => help -- (Future) to support subquestion-level help
- language => language -- the language for the subquestion
- validation => preg -- (Future) to support subquestion-level regular expression validation (e.g. for address parts)
- mandatory => mandatory -- (Future) to support subquestion-level mandatory (e.g. make only a few subquestions mandatory)
- default => default -- if set, then this is the default value for the subquestion (inserted into defaultvalues table)
- same_default => same_default -- if set, then the default for the primary language is used for all other languages
Answers
One answer row per survey language (e.g., there would be 3 answer rows if survey has 3 languages). Answers are assumed to belong to the question that precedes them, and be in the desired sort order.
- id => use the same ID as the ID of the question it belongs to
- class => 'A'
- type/scale => scale_id -- 0 or 1 (e.g. for dual-scale)
- name => code -- the unique answer identifier
- relevance => assessment_value -- if using assessment option, this is the assessment value for the answer
- text => answer -- the language-specific text of the answer
- language => language -- the language for this answer (e.g. 'en')
Assessments
One assessment row per survey language (e.g., there would be 3 assessment rows if survey has 3 languages). Assessments are written at the end of file.
- id => unique numeric identifier for the assessment, starting with number 1, use the same ID for additional languages belonging to current assessment
- related_id => id of group to which current assessment belongs to
- class => 'AS'
- type/scale => assessment scope: T-Total, G-group
- name => name
- text => message
- min_num_value => Minimum
- max_num_value => Maximum
- language => language -- the language for this answer (e.g. 'en')
Quotas
One row per quota. Quotas are written at the end of file.
- id => unique numeric identifier for the quota, starting with number 1
- class => 'QTA'
- name => quota name
- mandatory => limit
- other => quota action
- default => active
- same_default => autoload URL
Quota language settings
One quota row per survey language. Quota language settings are assumed to belong to the quota that precedes them.
- id => unique numeric identifier for the quota language settings, starting with number 1. Each row for different survey languages should have different IDs
- related_id => quota id of quota to which this setting belongs to
- class => 'QTALS'
- relevance => message
- text => URL
- help => URL description
- language => language -- the language for this quota (e.g. 'en')
Quota members
One row per quota member, no language dependent. Quota member row should be placed immediately after question it relates to. Quota members are assumed to belong to the question that precedes them.
- id => unique numeric identifier for the quota members, starting with number 1
- related_id => quota id of quota to which this member belongs to
- class => 'QTAM'
- name => answer code
Conditions
One row per condition, no language dependent. Condition row should be placed immediately after question it relates to. Conditions are assumed to belong to the question that precedes them.
- id => unique numeric identifier for the condition, starting with number 1.
- related_id => question id of related question, if applicable
- class => 'C'
- type/scale => scenario
- name => answer field name
- relevance => comparison operator
- text => expected answer