Как очистить данные о местоположении в Power Bi - PullRequest
0 голосов
/ 23 мая 2018

У меня сейчас две таблицы.У меня есть одна таблица со списком мест, таких как:

Загреб (Хорватия)

Сиэтл, Вашингтон, США

Нью-Йорк, Нью-Йорк

Казахстан, Алматы

У меня также есть основной список 200 000 городов, который выглядит так:

Загреб |Хорватия

Сиэтл |США

Нью-Йорк Сити |США

Алматы |Казахстан

Я хочу добавить новый столбец к первой таблице, как показано ниже:

Загреб (Хорватия) |Хорватия

Сиэтл, Вашингтон, США |США

Нью-Йорк, Нью-Йорк |США

Казахстан, Алматы |Казахстан

Это обновление из живого источника, из которого я не могу контролировать качество данных, поэтому любое решение должно быть динамичным.

Любые идеи приветствуются!

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Назовите первую таблицу как "location", включая 1 столбец с именем "location".Назовите 2-ю таблицу как «город», включая 2 столбца с названиями «город» и «страна».Код:

let
    location = Excel.CurrentWorkbook(){[Name="location"]}[Content],
    city = Excel.CurrentWorkbook(){[Name="city"]}[Content],
    result = Table.AddColumn(location,"city",each Table.SelectRows(city,(x)=>Text.Contains([location],x[city]))[country]{0})
in
    result
0 голосов
/ 23 мая 2018

Один из возможных подходов заключается в добавлении пользовательского столбца в первую таблицу, который ищет строку для всех городов, которые появляются во втором столбце таблицы City.

 = Table.AddColumn(#"Changed Type", "City",
       (L) => List.Select(Cities[City], each Text.Contains(L[Location], _)))

Это дает список соответствиягорода.Разверните этот список, чтобы получить следующее:

Cities

Затем можно выполнить слияние с таблицей Cities (сопоставление по столбцам City из каждой таблицы).), чтобы перетащить столбец Country.


Вот полный текст моего запроса из расширенного редактора:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WikpML0pNUtBwLspPLMlM1FSK1YlWCk5NLCnJSdVRCHfUUQgNdgQL+qWWK0TmF2UrOGeWVOoo+EWCRb0TqxKzM4pLEvN0FBxzchNLKpViYwE=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Location = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Location", type text}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "City", (L) => List.Select(Cities[City], each Text.Contains(L[Location], _))),
    #"Expanded City" = Table.ExpandListColumn(#"Added Custom", "City"),
    #"Merged Queries" = Table.NestedJoin(#"Expanded City",{"City"},Cities,{"City"},"Cities",JoinKind.LeftOuter),
    #"Expanded Cities" = Table.ExpandTableColumn(#"Merged Queries", "Cities", {"Country"}, {"Country"})
in
    #"Expanded Cities"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...