Допустим, я тренирую команду по легкой атлетике и веду журнал результатов моих учеников, пробежавших 800 м за определенный период времени, в PowerBI. Моя таблица забега на 800 метров выглядит примерно так:
Я хотел бы иметь отдельную таблицу со средними показателями за неделю:
Как я могу сделать это в PowerBI? Самая большая проблема, которую я вижу, заключается в том, что я эффективно уничтожаю или объединяю несколько строк в одну, с чем я раньше не сталкивался.
У меня есть отдельная таблица с общими сведениями о студентах:
Я надеялся, что смогу использовать Power Query для добавления столбца в эту таблицу и получить значение в каждой строке как среднее время моих учеников на этой неделе. Однако я мог получить доступ к данным только в этой конкретной таблице для добавления столбца, а не к какой-либо другой таблице. Что еще я мог сделать?
@DanielA.White Я не очень хорошо разбираюсь в SQL, но понимаю основы.
Я имею в виду в этом контексте? sqlfiddle.com/sql-server/…
@DanielA.White Я понимаю, что делает этот код, но не уверен, как я могу применить его к своему контексту, когда работаю с несколькими таблицами в Power Query.
Этот код powerquery вставлен в домашний...расширенный редактор...
let Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type date}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Seconds", each #duration(0,0,0,Number.IntegerDivide(Number.From(Text.Split([800m],":"){0})*60+Number.From(Text.Split([800m],":"){1}),1))),
#"Added Custom1" = Table.AddColumn(#"Added Custom", "WeekStarting", each Date.StartOfWeek([Date], Day.Monday),type date),
#"Grouped Rows" = Table.Group(#"Added Custom1", {"Student", "WeekStarting"}, {{"Average", each List.Average([Seconds]), type duration}})
in #"Grouped Rows"
берет данные из Таблицы 1 и вычисляет средний результат на дистанции 800 м за каждую неделю для каждого человека. Затем вы можете объединить ее в другую таблицу, показывающую профили учащихся, довольно просто с помощью дома... объединить запросы...
Загрузите обе таблицы в слой преобразования с одинаковым именем столбца. Просто внесите изменения в таблицу забегов на 800 м, а затем объедините с ней данные об учениках.
Ниже приведен код:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WCsqozEtV0lEy0zcyASIgy8jK0FQpVgdFygwuZYAuZQGXMgJLOeZkFmckoploYIkhBzfSwBRDDm6mgbFSbCwA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Student = _t, Date = _t, #"800m" = _t]),
#"Added Prefix" = Table.TransformColumns(Source, {{"800m", each "0:" & _, type text}}),
#"Changed Type" = Table.TransformColumnTypes(#"Added Prefix",{{"800m", type duration}, {"Date", type date}}),
#"Calculated End of Week" = Table.TransformColumns(#"Changed Type",{{"Date", Date.EndOfWeek, type date}}),
#"Renamed Columns" = Table.RenameColumns(#"Calculated End of Week",{{"Date", "End of Week"}}),
#"Grouped Rows" = Table.Group(#"Renamed Columns", {"Student", "End of Week"}, {{"Week Average for 800m", each List.Average([800m]), type nullable duration}}),
#"Merged Queries" = Table.NestedJoin(#"Grouped Rows", {"Student"}, Student, {"Student"}, "Student.1", JoinKind.RightOuter),
#"Expanded Student.1" = Table.ExpandTableColumn(#"Merged Queries", "Student.1", {"Student ID", "Class"}, {"Student ID", "Class"})
in
#"Expanded Student.1"
Вы можете составить сводную таблицу следующим образом:
Щелкните правой кнопкой мыши запрос, который вы хотите суммировать, и выберите «Ссылка». Появится новый запрос, основанный на нем.
Теперь выберите столбец, по которому вы хотите сгруппировать, в вашем случае «Студент», щелкните правой кнопкой мыши и выберите «Группировать по». Дайте столбцу суммирования имя, выберите в качестве операции «среднее» и в качестве столбца время, в вашем случае «800 м».
Затем вы можете объединить ее с существующей таблицей учащихся и расширить только средний столбец.
можешь написать немного sql?'