Хотя вы можете сделать это в DAX, я бы посоветовал сделать это в редакторе запросов. Шаги будут выглядеть примерно так:
- Объединить таблицу
Correct
с таблицей Bad
, используя внешнее левое соединение с идентификатором columns
.
- Разверните таблицу
Correct
, чтобы получить столбец Colx
.
Создайте пользовательский столбец, чтобы выбрать нужные значения. (Добавить столбец> Пользовательский столбец)
if [Colx] = null then [Col1] else [Colx]
- Вы можете удалить столбцы
Col1
и Colx
, если хотите, или просто оставить их. Если вы удалите Col1
, вы можете переименовать столбец Col2
в Col1
.
Если вы не хотите, чтобы исходные таблицы плавали, вы можете выполнить все вышеперечисленное в одном запросе, подобном следующему:
let
BadSource = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUTJQitWJVjICsfRMwWxjINsIzDIBsnSNlWJjAQ==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [ID = _t, Col1 = _t]),
CorrectSource = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlLSUTJUitWJVjIBskyVYmMB", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [ID = _t, Colx = _t]),
Bad = Table.TransformColumnTypes(BadSource,{{"ID", Int64.Type}, {"Col1", type number}}),
Correct = Table.TransformColumnTypes(CorrectSource,{{"ID", Int64.Type}, {"Colx", type number}}),
#"Merged Queries" = Table.NestedJoin(Bad,{"ID"},Correct,{"ID"},"Correct",JoinKind.LeftOuter),
#"Expanded Correct" = Table.ExpandTableColumn(#"Merged Queries", "Correct", {"Colx"}, {"Colx"}),
#"Added Custom" = Table.AddColumn(#"Expanded Correct", "Col2", each if [Colx] = null then [Col1] else [Colx]),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Col1", "Colx"}),
#"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Col2", "Col1"}})
in
#"Renamed Columns"