2022年6月版のPower BI Starter Kitでは、一部のクライアントでQuizAttemptsDetailクエリの読み込みに失敗する問題が発生する可能性があります。
以下は、そのエラーの例です。
1.この動作を修正するためには、Power BI レポートに移動し、「データの変換」 を選択します。
2.ここから、エラーメッセージで影響を受けるテーブルを見つけます。この場合、テーブルは " QuizAttemptsDetail "クエリです。テーブルを選択し、「詳細エディタ」を選択します。
3. 新しいウィンドウで、既存のクエリを以下のクエリに置き換えます。
let
APIUrlParamValue = #"API URL",
RawQuizAttempts = OData.Feed(APIUrlParamValue &"/QuizAttempts?$filter=PassingTimeTicks le 86400000000 and CreatedAt ge 2021-06-01&$select=Id, EnrollmentId, QuizId, State", null, [Implementation="2.0"]),
#"Renamed Columns" = Table.RenameColumns(RawQuizAttempts,{{"Id", "QuizAttemptId"}}),
#"Parsed JSON" = Table.TransformColumns(#"Renamed Columns",{{"State", Json.Document}}),
#"Expand State" = Table.ExpandRecordColumn(#"Parsed JSON", "State", Record.FieldNames(Record.Combine(List.Select(Table.Column(#"Parsed JSON", "State"), (x) => x <> null)))),
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Expand State", {"QuizAttemptId", "EnrollmentId", "QuizId"}, "Attribute", "Value"),
#"Expanded Value" = Table.ExpandRecordColumn(#"Unpivoted Other Columns", "Value", {"Percent", "AnswerResult"}, {"Percent", "AnswerResult"}),
#"Expanded AnswerResult" = Table.ExpandRecordColumn(#"Expanded Value", "AnswerResult", {"Answer", "QuestionType", "PositionX", "PositionY", "Answers"}, {"AnswerResult.Answer", "AnswerResult.QuestionType", "AnswerResult.PositionX", "AnswerResult.PositionY", "AnswerResult.Answers"}),
#"Expanded AnswerResult.Answers" = Table.ExpandListColumn(#"Expanded AnswerResult", "AnswerResult.Answers"),
#"Changed Type" = Table.TransformColumnTypes(#"Expanded AnswerResult.Answers",{{"Percent", Int64.Type}}),
#"Added Conditional Column" = Table.AddColumn(#"Changed Type", "IsCorrectAnswer", each if [Percent] = 100 then 1 else if [Percent] > 0 then 1 else 0),
#"Changed Type1" = Table.TransformColumnTypes(#"Added Conditional Column",{{"IsCorrectAnswer", Int64.Type}}),
#"Added Conditional Column1" = Table.AddColumn(#"Changed Type1", "IsIncorrectAnswer", each if [Percent] = 0 then 1 else 0),
#"Changed Type2" = Table.TransformColumnTypes(#"Added Conditional Column1",{{"IsIncorrectAnswer", Int64.Type}}),
#"Added Custom" = Table.AddColumn(#"Changed Type2", "QuizAttemptQuestionsCounter", each 1),
#"Changed Type3" = Table.TransformColumnTypes(#"Added Custom",{{"QuizAttemptQuestionsCounter", Int64.Type}}),
#"Renamed Columns1" = Table.RenameColumns(#"Changed Type3",{{"Attribute", "QuestionId"}}),
fieldForRec = Table.AddColumn(#"Renamed Columns1","Rec",each if Value.Is([AnswerResult.Answer], type record) then [AnswerResult.Answer] else null,type record),
#"Expanded Rec" = Table.ExpandRecordColumn(fieldForRec, "Rec", {"_gap1", "_gap2"}, {"Rec._gap1", "Rec._gap2"}),
#"Renamed Columns2" = Table.RenameColumns(#"Expanded Rec",{{"Rec._gap1", "AnswerResult.Answer._gap1"}, {"Rec._gap2", "AnswerResult.Answer._gap2"}}),
#"Merged Columns" = Table.CombineColumns(#"Renamed Columns2",{"AnswerResult.Answer._gap1", "AnswerResult.Answer._gap2"},Combiner.CombineTextByDelimiter(";", QuoteStyle.None),"Merged"),
#"Added Conditional Column2" = Table.AddColumn(#"Merged Columns", "Custom", each if Value.Is([AnswerResult.Answer], type record) then [Merged] else [AnswerResult.Answer]),
#"Renamed Columns3" = Table.RenameColumns(#"Added Conditional Column2",{{"Custom", "Answer"}}),
#"Changed Type4" = Table.TransformColumnTypes(#"Renamed Columns3",{{"Answer", type text}}),
#"Removed Columns" = Table.RemoveColumns(#"Changed Type4",{"Merged", "AnswerResult.Answer"}),
fieldForList = Table.AddColumn( #"Removed Columns", "List",each if Value.Is([AnswerResult.Answers], type list) then [AnswerResult.Answers] else null,type list),
#"Expanded List" = Table.ExpandListColumn(fieldForList, "List"),
#"Added Conditional Column3" = Table.AddColumn(#"Expanded List", "Answers", each if [List] = null then [AnswerResult.Answers] else [List]),
#"Changed Type5" = Table.TransformColumnTypes(#"Added Conditional Column3",{{"Answers", type text}}),
#"Removed Columns1" = Table.RemoveColumns(#"Changed Type5",{"List", "AnswerResult.Answers"}),
#"Merged Columns1" = Table.CombineColumns(Table.TransformColumnTypes(#"Removed Columns1", {{"AnswerResult.PositionX", type text}, {"AnswerResult.PositionY", type text}}, "da-DK"),{"AnswerResult.PositionX", "AnswerResult.PositionY"},Combiner.CombineTextByDelimiter(";", QuoteStyle.None),"PositionXPositionY"),
#"Added Conditional Column4" = Table.AddColumn(#"Merged Columns1", "Custom", each if [Answer] = null then [Answers] else [Answer]),
#"Added Conditional Column5" = Table.AddColumn(#"Added Conditional Column4", "Custom.1", each if [Custom] = null then [PositionXPositionY] else [Custom]),
#"Removed Columns2" = Table.RemoveColumns(#"Added Conditional Column5",{"Answer", "Answers", "Custom"}),
#"Renamed Columns4" = Table.RenameColumns(#"Removed Columns2",{{"Custom.1", "Answers"}}),
#"Changed Type6" = Table.TransformColumnTypes(#"Renamed Columns4",{{"Answers", type text}}),
#"Removed Columns3" = Table.RemoveColumns(#"Changed Type6",{"PositionXPositionY"}),
#"Renamed Columns5" = Table.RenameColumns(#"Removed Columns3",{{"Answers", "GivenAnswers"}}),
#"Merged Queries" = Table.NestedJoin(#"Renamed Columns5", {"GivenAnswers", "QuestionId"}, RightAnswerToAnswerOption, {"AnswerOption", "QuestionId"}, "RightAnswerToAnswerOption", JoinKind.LeftOuter),
#"Expanded RightAnswerToAnswerOption" = Table.ExpandTableColumn(#"Merged Queries", "RightAnswerToAnswerOption", {"RightAnswerText"}, {"RightAnswerText"}),
#"Renamed Columns6" = Table.RenameColumns(#"Expanded RightAnswerToAnswerOption",{{"RightAnswerText", "AnswerText"}})
in
#"Renamed Columns6"
4.保存して変更を適用すると、クエリが正しく読み込まれ、レポートに表示されます。
クエリを更新しても、上記のようなエラーが発生することがあります。これは特定のクイズがスマートフォンで試行され、StateパラメータにNULL値が入力されたことを示しています。
解決策として、クエリの詳細エディタを使用してクエリを調整し、この設問を含むクイズの試行を除外します。
これを行うには、 Quiz Attempt Detailsクエリの「詳細エディタ」を開き、クエリの「$filter=」と「PassingTimeTicks」の間に「State ne null and」を追加します。
これを行った場合、これらのクイズの試行はレポートから除外されることにご留意ください。
これらの情報を円滑に取り込むため、次の手順を行ってください。
- LMS 365モバイルアプリの既存のバージョンを削除せず保持します。
- 最新バージョンのインストールに進みます。
- モバイルアプリ内に回答が入力されていないクイズがあるコースごとに、ユーザーを各コースのホームページに誘導してください。
- ユーザーはコースホームページでコースコンテンツが完全に読み込まれるまで待ちます。
- この手順により、以前に入力した回答がLMS365システムと同期されます。
このプロセスでは、影響を受けたユーザーが手動で操作する必要があります。
ご不明な点などございましたら、サポートまでお問い合わせください。