Как вызвать пользовательскую функцию для применения в файлах запросов с различным диапазоном столбцов? - PullRequest
0 голосов
/ 12 сентября 2018

Я следовал этому руководству , чтобы импортировать файлы из папки и очищать их. Однако для этого примера каждый файл .xls имеет одинаковое количество столбцов. В моем случае у меня это (после очистки):

| Col1 | Col2 |
|------|------|
| 1    | 3    |
| 4    | 2    |

и

+------+------+------+
| Col1 | Col2 | Col3 |
+------+------+------+
|    3 |    4 |    8 |
|    4 |    7 |    1 |
+------+------+------+

И я хочу получить такой результат:

+------+------+------+
| Col1 | Col2 | Col3 |
+------+------+------+
|    1 |    3 |    - |
|    4 |    2 |    - |
|    3 |    4 |    8 |
|    4 |    7 |    1 |
+------+------+------+

Моя пользовательская функция выглядит следующим образом (столбцы заменены на etc, так как их почти две тысячи). Я полагаю, мне придется удалить оба шага #"Changed Type", но как я могу удалить ненужные строки?

(ExcelFile) =>
let
Source = Excel.Workbook(ExcelFile, null, true),
#"CMG Barras pesos_Sheet" = Source{[Item="CMG Barras pesos",Kind="Sheet"]}[Data],
#"Changed Type" = Table.TransformColumnTypes(#"CMG Barras pesos_Sheet",{"Column1", type any}, etc)
#"Removed Top Rows" = Table.Skip(#"Changed Type",8),
#"Promoted Headers" = Table.PromoteHeaders(#"Removed Top Rows", [PromoteAllScalars=true]),
#"Changed Type1" = Table.TransformColumnTypes(#"Promoted Headers",{{"Barra", type any}, etc),
#"Removed Top Rows1" = Table.Skip(#"Changed Type1",1)
in
#"Removed Top Rows1"

1 Ответ

0 голосов
/ 12 сентября 2018

Шаги "#Changed Type" - единственные в вашей функции, которые относятся к столбцам по отдельности.Другие просто удаляют (пропускают) несколько строк таблицы и выдвигают строку в качестве имен столбцов.

Существуют способы работы с переменным числом столбцов, но в вашем случае я недумаю, что вам нужно сделать что-нибудь причудливое.Просто возьмите эти шаги:

    (ExcelFile) =>
let
    Source = Excel.Workbook(ExcelFile, null, true),
    #"CMG Barras pesos_Sheet" = Source{[Item="CMG Barras pesos",Kind="Sheet"]}[Data],
    #"Removed Top Rows" = Table.Skip(#"CMG Barras pesos_Sheet",8),
    #"Promoted Headers" = Table.PromoteHeaders(#"Removed Top Rows", [PromoteAllScalars=true]),
    #"Removed Top Rows1" = Table.Skip(#"Promoted Headers",1)
in
    #"Removed Top Rows1"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...