Я бы предпочел сделать это в редакторе запросов, поскольку там проще создавать индексные столбцы.
Убедитесь, что обе ваши таблицы загружены в редактор запросов, таблица замены, Replace
.
let
Source = Table.FromRows({{"Value1"},{"Value2"},{"Value3"},{"Value4"}},{"Value"}),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Value", type text}}),
#"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 0, 1)
in
#"Added Index"
И таблица вашего примера.
- Добавьте индекс к таблице вашего примера.
- Преобразуйте столбец индекса, взяв по модулю число строк
Replace
(в данном случае - 4). - Объединить
Replace
с Example
, совпадающими по индексу. - Развернуть столбец
Value
до Value.1
. - Добавьте пользовательский столбец, чтобы выбрать, какой из них использовать.
- Очистить.Удалите все столбцы, которые вы не хотите хранить.
Вот код M для запроса:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45W8ssvUXAsS8zMSUzKSVWK1RkuIk6Z2QQZwdmJJalJ+YlFKVTn5uWXU5sXkJqXV6ngRDTfyTcCk44FAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Value = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Value", type text}}),
#"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 0, 1),
#"Calculated Modulo" = Table.TransformColumns(#"Added Index", {{"Index", each Number.Mod(_, Table.RowCount(Replace)), type number}}),
#"Merged Queries" = Table.NestedJoin(#"Calculated Modulo",{"Index"},Replace,{"Index"},"Replace",JoinKind.LeftOuter),
#"Expanded Replace" = Table.ExpandTableColumn(#"Merged Queries", "Replace", {"Value"}, {"Value.1"}),
#"Added Custom" = Table.AddColumn(#"Expanded Replace", "Value2", each if [Value] = "Not Available" then [Value.1] else [Value], type text),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Index", "Value.1"})
in
#"Removed Columns"