Вставить новый столбец со списком значений в PowerQuery / M - PullRequest
0 голосов
/ 26 января 2020

Если у меня есть следующий источник:

#"My Source" = Table.FromRecords({
        [Name="Jared Smith", Age=24],
        [Name = "Tom Brady", Age=44],
        [Name="Hello Tom", Age = null],
        [Name = "asdf", Age = "abc"]
    }),

Как добавить новый столбец из списка значений, например:

Table.AddColumn(#"My Source", "New Col", {'x', 'y', 'z', null})

Теперь в моей таблице будет три колонны. Как это можно сделать?

Ответы [ 2 ]

1 голос
/ 26 января 2020

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

let
    Source1 = Table.FromRecords({
        [Name="Jared Smith", Age=24],
        [Name = "Tom Brady", Age=44],
        [Name="Hello Tom", Age = null],
        [Name = "asdf", Age = "abc"]
    }),
    #"Added Index" = Table.AddIndexColumn(Source1, "Index", 0, 1),
    #"Added Custom" = Table.AddColumn(#"Added Index", "Custom", each {"x", "y", "z", null}{[Index]}),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Index"})
in
    #"Removed Columns"
1 голос
/ 26 января 2020

Я новичок в PQ, поэтому могут быть более эффективные методы, но вот один из них:

  • Добавление столбца индекса в каждую из таблиц
  • Объединение двух таблиц , используя столбец индекса в качестве ключа
  • Удалить столбец индекса

let
    Source1 = Table.FromRecords({
        [Name="Jared Smith", Age=24],
        [Name = "Tom Brady", Age=44],
        [Name="Hello Tom", Age = null],
        [Name = "asdf", Age = "abc"]
    }),
    #"Added Index" = Table.AddIndexColumn(Source1, "Index", 0, 1),
    Source2 = Table.FromRecords({
        [New="x"],
        [New = "y"],
        [New = "z"],
        [New = null]
    }),
    #"Added Index2" = Table.AddIndexColumn(Source2, "Index", 0, 1),
    Merge = Table.Join(#"Added Index", "Index",#"Added Index2", "Index"),
    #"Removed Columns" = Table.RemoveColumns(Merge,{"Index"})
in
    #"Removed Columns"

enter image description here

...