2016-07-11 25 views
1

Ich verwende Survey Monkey API, um Umfragedaten in ein SQL Data Warehouse zu speichern.Mapping 5 Spalten zu einer (ID, Dimension) Tabelle ohne 5 Joins?

ich Dumping So Antwortdaten in eine Tabelle 'resonses' so:

survey_id, Q1, Q2, Q3, Q4, Q5 

survey3944, 848948344, 430984384, 43094839, 238094983, 2380284 

Dann habe ich eine dreidimensionale Tabelle 'answer_key', der die id/Text Combos hat. Wie

ID, text 

848948344, 5 - very satisfied 

Ich frage mich, wie ich die 5 Antwort Spalten oben in einen sinnvollen Text (oder zumindest die ganze Zahl ist), ohne dabei 5 schließt sich anschließen kann.

Ich meine, ich habe die Tabelle 'Antworten' und die Tabelle 'Antwort_Schlüssel'.

Mein erster Gedanke würde durch die Bewegung werden gehen:

Select r.survey_id, a.text, a2.text, a3.text, a4.text, a5.text 
from responses r 
inner join answer_key a on r.q1 = a.id 
inner join answer_key a2 on r.q2 = a2.id 
inner join answer_key a3 on r.q3 = a3.id 
inner join answer_key a4 on r.q4 = a4.id 
inner join answer_key a5 on r.q5 = a5.id 

Ist das der beste Weg, dies zu erreichen? Ich frage mich nur. Vor allem, wenn die Umfrage auf 10 Fragen erweitert wird, oder was nicht.

Ich weiß, ich kann eine Zeile für jede Frage Antwort haben, anstatt jede Umfrage für die Tabellenstruktur --- das ist eine Möglichkeit, aber ich denke, es ist ein bisschen schwieriger angesichts der Struktur des JSON, aber vielleicht ist es logischer.

Antwort

0

Ich bin mir nicht sicher, ob es eine bessere Möglichkeit gibt, das mit Ihrer DB-Struktur zu tun, aber ich bin kein SQL-Experte. Ich würde die DB-Struktur, einfaches Beispiel abgehend empfiehlt Ändern Sie folgende Aufgaben:

responses Tabelle: SurveyID, QuestionID, ChoiceID

answer_key Tabelle: QuestionID, Text

Dann so etwas wie:

Select r.survey_id, a.text 
from responses r 
inner join answer_key a on r.QuestionID = a.QuestionID 

Ich denke im Allgemeinen wird es viel einfacher sein, mit zu arbeiten, wenn Sie jede Frage in seine eigene Reihe, anstatt eine Tabelle mit allen que trennen Stitionen. Vor allem, wenn Sie mehrere Umfragen mit unterschiedlichen Fragen verwenden, ist dies flexibler.

Sie möchten vielleicht noch mehr zu VariableID oder etwas für mehr, wenn Sie mehrzeilige Fragen wie matrixartige Fragen haben. Dann können Sie genauer nachfragen, was Sie wollen.

1

ich folgende E-Mail an Survey Unterstützung

schrieb

I bulk Antworten für Vermessung mit $ "Umfragen/{surveyId} /Antworten/bulk", aber die aktuelle Antwort gibt IDs für Fragen lesen müssen und Antworten.

Ich habe separat Frage zu tun, fordert $ "Umfragen/{surveyId}/Details"

und die Antworten kommen.

Es sieht aus wie typisches Szenario und die meisten Clients tun es.Es wird nett sein, wenn API denormalisierten -Modus unterstützt, wenn verwandte Informationen in einer Antwort zurückgegeben werden. I verstehen, dass es Datenduplikation sein wird, aber es erheblich die Verwendung Ihrer API vereinfachen.

Sie antworteten, dass sie es in einer Zukunft betrachten werden. Wenn jemand glaubt, dass es eine gute Idee ist, lass es sie wissen unter [email protected]