#powerbi #powerquery
Вопрос:
Может кто-нибудь, пожалуйста, помочь мне с этим SQL-запросом?
CASE
WHEN al.subject_type LIKE '%User' THEN (SELECT CONCAT_WS(" ",u.fname,u.lname) from users WHERE users.id = al.subject_id )
WHEN al.subject_type LIKE '%Group' THEN (SELECT name from `groups` WHERE `groups`.id = al.subject_id )
WHEN al.subject_type LIKE '%ResourceOpportunity' THEN (SELECT title from resource_occasions ro JOIN resources r ON r.id= ro.resource_id AND ro.id = al.subject_id)
WHEN al.subject_type LIKE '%QuestionAnswer' THEN
(SELECT ri.name from question_answers qa
JOIN questions q ON q.id= qa.question_id
JOIN resource_items ri ON ri.id = q.item_id
AND qa.id = al.subject_id)
ELSE al.subject_type
END Resource
Как достичь этого случая SQL в Power Query?
Я пытаюсь создать новый пользовательский столбец с формулой, которая может сделать это:
если [subject_type] = «Пользователь», затем ВЫБЕРИТЕ имя пользователя из таблицы пользователей, иначе если [subject_type] = «Группа», затем ВЫБЕРИТЕ имя из таблицы групп, иначе если [subject_type] = «Возможность использования ресурсов», затем ВЫБЕРИТЕ заголовок из таблицы resource_occasions, иначе если [subject_type] = «Ответ на вопросы», затем ВЫБЕРИТЕ имя из таблицы questions_answers, еще [subject_type]
Но это совсем не работает. Может кто-нибудь помочь, пожалуйста. Я пытаюсь решить эту проблему уже несколько дней. Спасибо!
Ответ №1:
Предполагая, что каждая таблица поиска содержит только одно (или ни одного) значения для каждого идентификатора:
let
Source = al,
join = Table.NestedJoin(Source, "id", users, "id", "users"),
join1 = Table.NestedJoin(join, "id", groups, "id", "groups"),
join2 = Table.NestedJoin(join1, "id", resource_occassions, "id", "resource_occassions"),
join3 = Table.NestedJoin(join2, "id", questions_answers, "id", "questions_answers"),
final = Table.AddColumn(join3, "new", each if [subject_type] = "User" then [users][username]{0}?
else if [subject_type] = "Group" then [groups][name]{0}?
else if [subject_type] = "ResourceOpportunity" then [resource_occasions][title]{0}?
else if [subject_type] = "QuestionAnswer" then [questions_answers][name]{0}?
else [subject_type])
in
final