Im Power BI Starter Kit vom Juni 2022 kann bei einigen Kunden ein Problem auftreten, aufgrund dessen die QuizAttemptsDetail-Abfrage nicht geladen werden kann.
Nachstehend sehen Sie ein Beispiel dafür, wie der Fehler aussehen könnte.
1. Um dieses Verhalten zu beheben, gehen Sie zum Power BI-Bericht und klicken oben auf die Schaltfläche „Daten transformieren“.
2. Suchen Sie nun nach der in der Fehlermeldung aufgeführten Tabelle. In diesem Fall ist die Tabelle die QuizAttemptsDetail-Abfrage. Klicken Sie auf „Erweiterter Editor“.
3. Ersetzen Sie im neuen Fenster die vorhandene Abfrage durch die nachstehend gezeigte.
let
APIUrlParamValue = #"API URL",
RawQuizAttempts = OData.Feed(APIUrlParamValue &"/QuizAttempts?$filter=PassingTimeTicks le 86400000000 und CreatedAt ge 2021-06-01&$select=Id, EnrollmentId, QuizId, State", null, [Implementation="2.0"]),
#"Umbenannte Spalten" = Table.RenameColumns(RawQuizAttempts,{{"Id", "QuizAttemptId"}}),
#"JSON geparst" = Table.TransformColumns(#"Umbenannte Spalten",{{"State", Json.Document}}),
#"State erweitert" = Table.ExpandRecordColumn(#"JSON geparst", "State", Record.FieldNames(Record.Combine(List.Select(Table.Column(#"JSON geparst", "State"), (x) => x <> null)))),
#"Andere Spalten entpivotiert" = Table.UnpivotOtherColumns(#"State erweitert", {"QuizAttemptId", "EnrollmentId", "QuizId"}, "FragenId", "Wert"),
#"Wert erweitert" = Table.ExpandRecordColumn(#"Andere Spalten entpivotiert", "Wert", {"Percent", "AnswerResult"}, {"Percent", "AnswerResult"}),
#"AnswerResult erweitert" = Table.ExpandRecordColumn(#"Wert erweitert", "AnswerResult", {"Answer", "QuestionType", "PositionX", "PositionY", "Answers"}, {"AnswerResult.Answer", "AnswerResult.QuestionType", "AnswerResult.PositionX", "AnswerResult.PositionY", "AnswerResult.Answers"}),
#"AnswerResult.Answers erweitert" = Table.ExpandListColumn(#"AnswerResult erweitert", "AnswerResult.Answers"),
#"Typ geändert" = Table.TransformColumnTypes(#"AnswerResult.Answers erweitert",{{"Percent", Int64.Type}}),
#"Bedingte Spalte hinzugefügt" = Table.AddColumn(#"Typ geändert", "IstKorrekteAntwort", each if [Percent] = 100 then 1 else if [Percent] > 0 then 1 else 0),
#"Typ1 geändert" = Table.TransformColumnTypes(#"Bedingte Spalte hinzugefügt",{{"IstKorrekteAntwort", Int64.Type}}),
#"Weitere bedingte Spalte hinzugefügt" = Table.AddColumn(#"Typ1 geändert", "IstFalscheAntwort", each if [Percent] = 0 then 1 else 0),
#"Typ2 geändert" = Table.TransformColumnTypes(#"Weitere bedingte Spalte hinzugefügt",{{"IstFalscheAntwort", Int64.Type}}),
#"Custom hinzugefügt" = Table.AddColumn(#"Typ2 geändert", "QuizAttemptQuestionsCounter", each 1),
#"Typ3 geändert" = Table.TransformColumnTypes(#"Custom hinzugefügt",{{"QuizAttemptQuestionsCounter", Int64.Type}}),
#"Spalten erneut umbenannt" = Table.RenameColumns(#"Typ3 geändert",{{"FragenId", "QuestionId"}}),
fieldForRec = Table.AddColumn(#"Spalten erneut umbenannt","Rec",each if Value.Is([AnswerResult.Answer], type record) then [AnswerResult.Answer] else null,type record),
#"Rec erweitert" = Table.ExpandRecordColumn(fieldForRec, "Rec", {"_gap1", "_gap2"}, {"Rec._gap1", "Rec._gap2"}),
#"Spalten2 umbenannt" = Table.RenameColumns(#"Rec erweitert",{{"Rec._gap1", "AnswerResult.Answer._gap1"}, {"Rec._gap2", "AnswerResult.Answer._gap2"}}),
#"Spalten zusammengeführt" = Table.CombineColumns(#"Spalten2 umbenannt",{"AnswerResult.Answer._gap1", "AnswerResult.Answer._gap2"},Combiner.CombineTextByDelimiter(";", QuoteStyle.None),"Zusammengeführt"),
#"Weitere bedingte Spalte2" = Table.AddColumn(#"Spalten zusammengeführt", "Custom", each if Value.Is([AnswerResult.Answer], type record) then [Zusammengeführt] else [AnswerResult.Answer]),
#"Spalten3 umbenannt" = Table.RenameColumns(#"Weitere bedingte Spalte2",{{"Custom", "Answer"}}),
#"Typ4 geändert" = Table.TransformColumnTypes(#"Spalten3 umbenannt",{{"Answer", type text}}),
#"Spalten entfernt" = Table.RemoveColumns(#"Typ4 geändert",{"Zusammengeführt", "AnswerResult.Answer"}),
fieldForList = Table.AddColumn( #"Spalten entfernt", "Liste",each if Value.Is([AnswerResult.Answers], type list) then [AnswerResult.Answers] else null,type list),
#"Liste erweitert" = Table.ExpandListColumn(fieldForList, "Liste"),
#"Weitere bedingte Spalte3" = Table.AddColumn(#"Liste erweitert", "Answers", each if [Liste] = null then [AnswerResult.Answers] else [Liste]),
#"Typ5 geändert" = Table.TransformColumnTypes(#"Weitere bedingte Spalte3",{{"Answers", type text}}),
#"Spalten1 entfernt" = Table.RemoveColumns(#"Typ5 geändert",{"Liste", "AnswerResult.Answers"}),
#"Spalten1 zusammengeführt" = Table.CombineColumns(Table.TransformColumnTypes(#"Spalten1 entfernt", {{"AnswerResult.PositionX", type text}, {"AnswerResult.PositionY", type text}}, "da-DK"),{"AnswerResult.PositionX", "AnswerResult.PositionY"},Combiner.CombineTextByDelimiter(";", QuoteStyle.None),"PositionXPositionY"),
#"Weitere bedingte Spalte4" = Table.AddColumn(#"Spalten1 zusammengeführt", "Custom", each if [Answer] = null then [Answers] else [Answer]),
#"Weitere bedingte Spalte5" = Table.AddColumn(#"Weitere bedingte Spalte4", "Custom.1", each if [Custom] = null then [PositionXPositionY] else [Custom]),
#"Spalten2 entfernt" = Table.RemoveColumns(#"Weitere bedingte Spalte5",{"Answer", "Answers", "Custom"}),
#"Spalten4 umbenannt" = Table.RenameColumns(#"Spalten2 entfernt",{{"Custom.1", "Answers"}}),
#"Typ6 geändert" = Table.TransformColumnTypes(#"Spalten4 umbenannt",{{"Answers", type text}}),
#"Spalten3 entfernt" = Table.RemoveColumns(#"Typ6 geändert",{"PositionXPositionY"}),
#"Spalten5 umbenannt" = Table.RenameColumns(#"Spalten3 entfernt",{{"Answers", "GivenAnswers"}}),
#"Abfragen zusammengeführt" = Table.NestedJoin(#"Spalten5 umbenannt", {"GivenAnswers", "QuestionId"}, RightAnswerToAnswerOption, {"AnswerOption", "QuestionId"}, "RightAnswerToAnswerOption", JoinKind.LeftOuter),
#"RightAnswerToAnswerOption erweitert" = Table.ExpandTableColumn(#"Abfragen zusammengeführt", "RightAnswerToAnswerOption", {"RightAnswerText"}, {"RightAnswerText"}),
#"Spalten6 umbenannt" = Table.RenameColumns(#"RightAnswerToAnswerOption erweitert",{{"RightAnswerText", "AnswerText"}})
in
#"Spalten6 umbenannt"
4. Speichern Sie Ihre Änderungen, und wenden Sie sie an. Ihre Abfrage und der Bericht sollten nun korrekt geladen werden.
HINWEIS
In manchen Fällen kann es vorkommen, dass auch nach dem Aktualisieren der Abfrage weiterhin derselbe Fehler wie oben angezeigt wird. Dies deutet darauf hin, dass bestimmte Quizversuche mit Smartphones durchgeführt wurden, was beim State-Parameter zu NULL-Werten geführt hat. Als Lösung können Sie die Abfrage mit dem Erweiterten Abfrage-Editor anpassen, um Quizversuche mit diesem Problem auszuschließen. Zu diesem Zweck rufen Sie den erweiterten Abfrage-Editor für die QuizAttemptDetails-Abfrage auf und fügen in der Abfrage „State ne null and“ zwischen den Zeilen „$filter=“ und „PassingTimeTicks“ ein.

Sie sollten sich jedoch bewusst sein, dass diese Versuche im Bericht nicht berücksichtigt werden.
Um die Integration dieser Updates zu erleichtern, führen Sie die folgenden Schritte aus:
1. Behalten Sie die vorhandene Version der Learn365-Mobil-App, ohne sie zu löschen.
2. Fahren Sie mit der Installation der neuesten Version fort.
3. Leiten Sie die Benutzer bei jedem Kurs, der in der mobilen App Quizze mit fehlenden eingegebenen Antworten enthält, zur Kursstartseite weiter. Sie sollten auf dieser Seite bleiben, bis der Kursinhalt vollständig geladen ist. Wenn Sie dieses Verfahren befolgen, werden die zuvor eingegebenen Antworten mit Learn365 synchronisiert.
Beachten Sie, dass hierbei manuelles Handeln seitens der betroffenen Lernenden erforderlich ist.
Wenden Sie sich an den Zensai-Produktsupport, falls Sie weitere Erläuterungen zu diesem Verfahren benötigen.
Kommentare
Zu diesem Beitrag können keine Kommentare hinterlassen werden.