Вот один из подходов, который преобразует ваш список компаний в таблицу, сопоставляет значения тегов, фильтрует результаты, а затем определяет выходные данные:
#"Renamed Columns3" = //your previous step here
fnMatchingList = (MyList) =>
let
AllLists = #table(type table [#"ListName"=text, #"ListValues"=list],
{{"FoodCompanies",{"Nestlé", "Pepsico", "Unilever"}},
{"ClothingCompanies", {"Nike", "Ralph Lauren", "Old Navy"}},
{"TechCompanies",{"Apple", "Samsung", "IBM"}}}),
FullList = Table.ExpandListColumn(AllLists, "ListValues"),
Match = Table.AddColumn(FullList, "Match", each List.Contains(MyList,[ListValues])),
Filtered = Table.SelectRows(Match, each ([Match] = true)),
Output = if Table.RowCount(Filtered) = 1 then Filtered{0}[ListValues] else
if List.Distinct(Filtered[ListName]) = List.Distinct(FullList[ListName]) then "AllCompanies" else
Text.Combine(List.Distinct(Filtered[ListName]),", ")
in
Output,
#"Added Matching List" = Table.AddColumn(#"Previous Step", "taglist", each if [tag] = null or [tag] = "" then "(Empty Tag)" else fnMatchingList(Text.Split([tag],", ")))
Редактировать : помочьпонимание, вот отдельный запрос, который вы можете выполнить, чтобы увидеть, что на самом деле делает функция:
let
MyList = {"Pepsico", "Nike"},
AllLists = #table(type table [#"ListName"=text, #"ListValues"=list],
{{"FoodCompanies",{"Nestlé", "Pepsico", "Unilever"}},
{"ClothingCompanies", {"Nike", "Ralph Lauren", "Old Navy"}},
{"TechCompanies",{"Apple", "Samsung", "IBM"}}}),
FullList = Table.ExpandListColumn(AllLists, "ListValues"),
Match = Table.AddColumn(FullList, "Match", each List.Contains(MyList,[ListValues])),
Filtered = Table.SelectRows(Match, each ([Match] = true)),
Output = if Table.RowCount(Filtered) = 1 then Filtered{0}[ListValues] else
if List.Distinct(Filtered[ListName]) = List.Distinct(FullList[ListName]) then "AllCompanies" else
Text.Combine(List.Distinct(Filtered[ListName]),", ")
in
Output