Coluna personalizada com origem da tabela

0

Eu tenho uma consulta de energia com 14 tabelas de 14 folhas. As colunas em cada tabela variam. Alguns têm colunas exclusivas para uma folha. Todos compartilham cerca de 10 colunas, mas a ordem varia.

Como posso adicionar uma coluna personalizada para mostrar a origem da folha ou a origem da tabela?

(Eu estrategicamente nomeei as tabelas / folhas para cada tabela na planilha como segue Table Name = Sheet Name ). Eu sou novo em power-query e, por novo, quero dizer, eu construí meu primeiro hoje.

Eu tentei uma coluna personalizada com fórmula: Table.AddColumn(#"Changed Type", "Custom", each Source{[Item="Report",Kind="Sheet"]}[Name]) , que não funciona como visto abaixo.

    
por urdearboy 29.08.2018 / 01:02

1 resposta

0

Todas as tabelas que você deseja vincular em sua consulta não precisam da mesma estrutura (nomes de coluna). Aqui uma solução para este caso.
Você tem que escrever um código M personalizado. Use como primeiro passo a função Excel.CurrentWorkbook .

Aqui o M-Code que você pode colocar no seu Editor (o nome da consulta está no meu exemplo "OutputTable" - > para ser substituído no código abaixo!):

let
    Source = Excel.CurrentWorkbook(),
    // Filter out the table (= your Query Name) which will result as output
    #"Filtered Rows" = Table.SelectRows(Source, each ([Name] <> "OutputTable")),

    // Bring the table name as 1st column
    #"Reordered Columns" = Table.ReorderColumns(#"Filtered Rows",{"Name", "Content"}),

    // Rename the "Name" column to prevent conflict with next steps
    #"Renamed Columns" = Table.RenameColumns(#"Reordered Columns",{{"Name", "TableName"}}),

    // Find out all column names present in Content tables 
    #"all table column name" = List.Accumulate(#"Renamed Columns"[Content], {}, (state, current) => List.Union({state, Table.ColumnNames(current)})),

    // Dynamically expand all columns
    #"Expanded {0}" = Table.ExpandTableColumn(#"Renamed Columns", "Content", #"all table column name")
in
    #"Expanded {0}"

O passo # "todo o nome da coluna da tabela" é inspirado em esta resposta no Stackoverflow

    
por 29.08.2018 / 12:51