Страницы: 1
RSS
Смена источника в Power Query с папки на файл и обратно
 
Очень нужна помощь. Как изменить источник в Power Query: с папки на файл или таблицу и в обратном порядке. И еще одно. Power Query по прежнему не "дружит" с файлами сохраненными как двоичная книга? (то есть если запрос ссылается на именно такую книгу). Или в этом деле произошел прорыв?
заранее спасибо
 
На вскидку, примерно так, как в примере.
Идея такая: в файле есть 2 параметра "Путь к папке" и "Путь к файлу". Запрос изначально делается к папке, а далее происходит проверка, если путь к файлу пустой, то обрабатываем все файлы в папке, если есть какое-то имя файлы, то выбираем этот файл и работаем только с ним.
Про двоичные файлы, на сколько мне известно, ничего не поменялось.
Вот горшок пустой, он предмет простой...
 
или так
Код
// debug
1 meta [IsParameterQuery=true, Type="Number", IsParameterQueryRequired=true]

// FolderPath
"J:\xlsx" meta [IsParameterQuery=true, Type="Any", IsParameterQueryRequired=true]

// Запрос1
let
    Source    = Folder.Files(FolderPath),
    Filtered  = Table.SelectRows(Source, each not [Attributes]?[NotContentIndexed]?),
    Transform = Table.TransformColumns(Filtered, {"Content",each fnTransformFile(_, 0, 0)}),
    ForDebug  = Transform meta (if debug=1 then [bin=Filtered{i}[Content]] else [])
in
    ForDebug

// fnTransformSheet
let
    Источник = (tbl as any, debug as number) => let
    Source   = if debug=1 then Value.Metadata(Workbook)[tbl] else tbl,
    Promoted = Table.PromoteHeaders(Source),
    Result   = {Promoted,Table.ColumnNames(Promoted)}
    in
        Result
in
    Источник

// fnTransformFile
let
    Источник = (Bin as binary, debug as number, j as number) => let
    Source    = if debug=1 then Value.Metadata(Запрос1)[bin] else Bin,
    Workbook  = Excel.Workbook(Source),
    Filtered  = Table.SelectRows(Workbook, each ([Kind] = "Sheet"))[[Name],[Data]],
    Transform = Table.SplitColumn(Filtered,"Data",(a)=>fnTransformSheet(a, 0),{"Data","Columns"}),
    Expand    = Table.ExpandTableColumn(Transform[[Name],[Data]], "Data", List.Distinct(List.Combine(Transform[Columns]))),
    ForDebug  = Expand meta (if debug=1 then [tbl=Filtered{j}[Data]] else [])
    in
        ForDebug
in
    Источник

// i
0 meta [IsParameterQuery=true, Type="Number", IsParameterQueryRequired=true]

// Bin
null meta [IsParameterQuery=true, Type="Binary", IsParameterQueryRequired=false]

// Workbook
let
    Source    = if debug=1 then Value.Metadata(Запрос1)[bin] else Bin,
    Workbook  = Excel.Workbook(Source),
    Filtered  = Table.SelectRows(Workbook, each ([Kind] = "Sheet"))[[Name],[Data]],
    Transform = Table.SplitColumn(Filtered,"Data",(a)=>fnTransformSheet(a, 0),{"Data","Columns"}),
    Expand    = Table.ExpandTableColumn(Transform[[Name],[Data]], "Data", List.Distinct(List.Combine(Transform[Columns]))),
    ForDebug  = Expand meta (if debug=1 then [tbl=Filtered{j}[Data]] else [])
in
    ForDebug

// j
0 meta [IsParameterQuery=true, Type="Number", IsParameterQueryRequired=false]

// tbl
null meta [IsParameterQuery=true, Type="Any", IsParameterQueryRequired=false]

// Sheet
let
    Source   = if debug=1 then Value.Metadata(Workbook)[tbl] else tbl,
    Promoted = Table.PromoteHeaders(Source),
    Result   = {Promoted,Table.ColumnNames(Promoted)}
in
    Result
Изменено: Андрей Лящук - 16.05.2020 08:21:44
 
Ого. спасибо. Пошла разбираться
 
Видимо что-то пошло не так и функции fnTransformFile и fnTransformSheet перестали быть обновляемыми. Пересоздал функции, обновил свой пост с файлом, сейчас все норм. Функции обновляются при изменении запросов Workbook и Sheet.
Страницы: 1
Наверх