Страницы: 1
RSS
Подстановка даты из ячейки excel в код запроса для Power query
 
Всем доброго дня!
Прошу помочь дописать код для Power query для переноса значения из ячейки Excel в качестве переменной в код для Power query
 
Код
= Excel.CurrentWorkbook(){[Name="Table1"]}[Content]{[Param = "Report Date"]}[Value]
Пришелец-прораб.
 
Благодарю!
В смысле вот так?
= Table.SelectRows(#"Измененный тип3", each ([Date created] = Excel.CurrentWorkbook(){[Name="Table1"]}[Content]{[Param = "Report Date"]}[Value])))
 
Digital_Sportsman, ну можно и так, наверное. Попробуйте. Но лучше, наверное, отдельный запрос (или именованный шаг в запросе) создать, коль скоро вы или ваш код будет ссылаться на параметр не единожды.
Пришелец-прораб.
 
Прописал такую формулу:  = Table.SelectRows(#"Измененный тип3", each [Date created] = Excel.CurrentWorkbook(){[Name="tParam"]}[Content]{[Param="Report Date"]}[Value])))


Выдал такую ошибку: Expression.SyntaxError: Ожидался токен Eof.



Изначально там код стоит: Table.SelectRows(#"Измененный тип3", each ([Date created] = #date(2023, 10, 25)))

Параметр создан "= Excel.CurrentWorkbook(){[Name="tParam"]}[Content]{[Param="Report Date"]}[Value]"
это его результат "25.10.2023 0:00:00" (то что я внес в ячейку данные из которой хочу в код подставлять)

Че не так?)
Изменено: Digital_Sportsman - 27.10.2023 09:33:12
 
Цитата
Digital_Sportsman написал:
Че не так?)
весь код покажите
Пришелец-прораб.
 
Цитата
let
   Источник = Folder.Files("Рабочие файлы"),
   #"Строки с примененным фильтром" = Table.SelectRows(Источник, each Text.Contains([Name], "for_analys")),
   #"Строки с примененным фильтром1" = Table.SelectRows(#"Строки с примененным фильтром", each not Text.StartsWith([Name], "~$")),
   #"Измененный тип3" = Table.TransformColumnTypes(#"Строки с примененным фильтром1",{{"Date created", type date}}),
   #"ДАТА ОТЧЕТА" = Table.SelectRows(#"Измененный тип3", each ([Date created] = #date(2023, 10, 25))),
Изменено: Digital_Sportsman - 27.10.2023 09:56:56
 
Цитата
#"Другие удаленные столбцы" = Table.SelectColumns(#"ДАТА ОТЧЕТА",{"Content"}),
   Content = #"Другие удаленные столбцы"{0}[Content],
   #"Импортированные значения Excel" = Excel.Workbook(Content),
   #"Другие удаленные столбцы1" = Table.SelectColumns(#"Импортированные значения Excel",{"Data"}),
   Data = #"Другие удаленные столбцы1"{0}[Data],
И так продолжается если это нужно...
 
Digital_Sportsman, не, не надо. Там что-то длинное, наверное. Можете локализовать шаг, на котором возникает ошибка? Просто пройдитесь последовательно по шагам.
Цитата
Token EoF expected usually occurs when an invalid function name is used, or it uses the wrong case (for example, if is a valid command, while If with an upper case I is not).
Пришелец-прораб.
 
 #"ДАТА ОТЧЕТА" = #!"Table.SelectRows(#""Измененный тип3"", each ([Date created] = Excel.CurrentWorkbook(){[Name=""tParam""]}[Content]{[Param=""Report Date""]}[Value])))",
 
Digital_Sportsman, ... У вас же скобка закрывающая лишняя.
Не делайте так:
Код
  filter = Table.SelectRows (
    #"Измененный тип3", 
    each ( [Date created] = Excel.CurrentWorkbook(){[ Name = "tParam" ]}[Content]{[ Param = "Report Date" ]}[Value] )
  )

Для каждой строки таблицы данных PQ заново будет грузить таблицу из Excel. На большом объеме  будет тормозить.
Скалярные значения не пересчитываются в PQ. В отдельную переменную вынесите дату:
Код
let
  ...
  date_for_filter = Date.From ( Excel.CurrentWorkbook(){[ Name = "tParam" ]}[Content]{[ Param = "Report Date" ]}[Value] ), 
  filter          = Table.SelectRows ( #"Измененный тип3", each [Date created] = date_for_filter )
in
  filter
Изменено: surkenny - 27.10.2023 10:56:31
 
Цитата


let
 
 date_for_filter = Date.From ( Excel.CurrentWorkbook(){[ Name = "tParam" ]}[Content]{[ Param = "Report Date" ]}[Value] ),
 filter          = Table.SelectRows ( #"Измененный тип3", each [Date created] = date_for_filter )
in
 filter


let
   Источник = Folder.Files("),
   #"Строки с примененным фильтром" = Table.SelectRows(Источник, each Text.Contains([Name], "for_analys")),
   #"Строки с примененным фильтром1" = Table.SelectRows(#"Строки с примененным фильтром", each not Text.StartsWith([Name], "~$")),
   #"Измененный тип3" = Table.TransformColumnTypes(#"Строки с примененным фильтром1",{{"Date created", type date}}),
   #"ДАТА ОТЧЕТА" = Table.SelectRows(#"Измененный тип3", each ([Date created] = date_for_filter ))),
   #"Другие удаленные столбцы" = Table.SelectColumns(#"ДАТА ОТЧЕТА",{"Content"}),
А можете этот код подправить чтобы это все отработало? А то я подставил переменную, все равно ошибка
Изменено: Digital_Sportsman - 27.10.2023 12:39:21
 
Цитата
Digital_Sportsman написал:
#"ДАТА ОТЧЕТА" = Table.SelectRows(#"Измененный тип3", each ([Date created] = date_for_filter ))),
вам же surkenny выше написал, что скобка закрывающая лишняя. Поменяйте на
Код
#"ДАТА ОТЧЕТА" = Table.SelectRows(#"Измененный тип3", each ([Date created] = date_for_filter )),

это если запрос, который получает дату, действительно называется date_for_filter
Пришелец-прораб.
 
В общем есть запрос с названием "date", это таблица с одним столбцом "Report date" в которой одна строка - дата в формате (дд.мм.гггг) (дату в ячейке excel меняю и она соответственно обновляет этот запрос.
Результат запроса выглядит вот так!
Report date
25.10.2023

Есть код запроса
Цитата
let
   Источник = Folder.Files(),
   #"Строки с примененным фильтром" = Table.SelectRows(Источник, each Text.Contains([Name], "...")),
   #"Строки с примененным фильтром1" = Table.SelectRows(#"Строки с примененным фильтром", each not Text.StartsWith([Name], "~$")),
   #"Измененный тип3" = Table.TransformColumnTypes(#"Строки с примененным фильтром1",{{"Date created", type date}}),
   #"ДАТА ОТЧЕТА" = Table.SelectRows(#"Измененный тип3", each ([Date created] = #date(2023, 10, 25))),
   #"Другие удаленные столбцы" = Table.SelectColumns(#"ДАТА ОТЧЕТА",{"Content"}),
Как вместо константы "#date(2023, 10, 25)" подставить дату из моего запроса?
Я может затупил очень, но не получается ни как воспользоваться вашими кодами!
Можно как-то прямо в этом коде поправить на то как должно быть, плиз!!!
Изменено: Digital_Sportsman - 27.10.2023 12:40:44
 
Так вроде несколько раз показали уже...
Код
let
   Источник = Folder.Files(),
   #"Строки с примененным фильтром" = Table.SelectRows(Источник, each Text.Contains([Name], "...")),
   #"Строки с примененным фильтром1" = Table.SelectRows(#"Строки с примененным фильтром", each not Text.StartsWith([Name], "~$")),
   #"Измененный тип3" = Table.TransformColumnTypes(#"Строки с примененным фильтром1",{{"Date created", type date}}),
   dt = Date.From(Excel.CurrentWorkbook(){[ Name = "tParam" ]}[Content]{[ Param = "Report Date" ]}[Value]),
   #"ДАТА ОТЧЕТА" = Table.SelectRows(#"Измененный тип3", each ([Date created] = dt)),
   #"Другие удаленные столбцы" = Table.SelectColumns(#"ДАТА ОТЧЕТА",{"Content"}),

это самое правильное и понятное обращение будет.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
написал:
Так вроде несколько раз показали уже...Кодlet
  Источник = Folder.Files(),
  #"Строки с примененным фильтром" = Table.SelectRows(Источник, each Text.Contains([Name], "...")),
  #"Строки с примененным фильтром1" = Table.SelectRows(#"Строки с примененным фильтром", each not Text.StartsWith([Name], "~$")),
  #"Измененный тип3" = Table.TransformColumnTypes(#"Строки с примененным фильтром1",{{"Date created", type date}}),
  dt = Date.From(Excel.CurrentWorkbook(){[ Name = "tParam" ]}[Content]{[ Param = "Report Date" ]}[Value]),
  #"ДАТА ОТЧЕТА" = Table.SelectRows(#"Измененный тип3", each ([Date created] = dt)),
  #"Другие удаленные столбцы" = Table.SelectColumns(#"ДАТА ОТЧЕТА",{"Content"}),это самое правильное и понятное обращение будет.
Так вы же теперь опять через параметр предлагаете решение, а я уже создал запрос..., и параметр вообще удалил.
Как сделать то надо? Вроде бы не сложная задача)
 
Цитата
Digital_Sportsman написал:
опять через параметр предлагаете решение
не совсем понятно, чем он Вам помешал-то? Вы же просили дату брать из ячейки. Показано как. А если не из ячейки - откуда тогда? В приложенном Вами файле в первом сообщении вообще не нашел умных таблиц.
Приложите реальный файл в котором надо что-то такое проделать и где есть этот самый
Цитата
Digital_Sportsman написал:
а я уже создал запрос
тогда будет что обсуждать. Сейчас выглядит странно. Или может Вам вообще просто текущая дата нужна, а не дата из ячейки? Вы опишите задачу, которую решаете, а не способ, который придумали для её решения.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дата из ячейки нужна
Я этот запрос добавил в power query, название запроса date
Report date
27.10.2023
Я так понимаю что нужно поменять всего лишь один аргумент : #date(2023, 10, 25), заменив его на адрес ячейки из моего запроса date...
#"ДАТА ОТЧЕТА" = Table.SelectRows(#"Измененный тип3", each ([Date created] = #date(2023, 10, 25))),
 
Приложите файл с запросами. Иначе будем топтаться на месте до тех пор, пока кто-то не угадает что там у Вас за запросы и где чего создавалось.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Через параметр с добавлением шага "dt" все получилось, благодарю!
А как это теперь можно решить через запрос, если не сложно можете написать, запрос выше уже описывал.
Страницы: 1
Читают тему
Наверх