Страницы: 1
RSS
Загрузка котировок с сайта Московской биржи на задаваемую пользователем дату
 
Добрый день всем!!

Код
let
    Источник = List.Numbers(1,1000,100),
    #"Преобразовано в таблицу" = Table.FromList(Источник, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Измененный тип" = Table.TransformColumnTypes(#"Преобразовано в таблицу",{{"Column1", type text}}),
    #"Добавлен пользовательский объект" = Table.AddColumn(#"Измененный тип", "Пользовательская", each Xml.Tables(Web.Contents("https://iss.moex.com/iss/history/engines/stock/markets/shares/securities.xml?date=Excel.Workbook(File.Contents(Excel.CurrentWorkbook(){[Name="Date_Parametr"]}[Content]{0}[Date From]), null, true)&start="&[Column1])){0}[Table]{0}[rows]{0}[row]),
    #"Удаленные ошибки" = Table.RemoveRowsWithErrors(#"Добавлен пользовательский объект", {"Пользовательская"}),
    #"Развернутый элемент Пользовательская" = Table.ExpandTableColumn(#"Удаленные ошибки", "Пользовательская", {"Attribute:BOARDID", "Attribute:TRADEDATE", "Attribute:SHORTNAME", "Attribute:SECID", "Attribute:NUMTRADES", "Attribute:VALUE", "Attribute:OPEN", "Attribute:LOW", "Attribute:HIGH", "Attribute:LEGALCLOSEPRICE", "Attribute:WAPRICE", "Attribute:CLOSE", "Attribute:VOLUME", "Attribute:MARKETPRICE2", "Attribute:MARKETPRICE3", "Attribute:ADMITTEDQUOTE", "Attribute:MP2VALTRD", "Attribute:MARKETPRICE3TRADESVALUE", "Attribute:ADMITTEDVALUE", "Attribute:WAVAL", "Attribute:TRADINGSESSION"}, {"Пользовательская.Attribute:BOARDID", "Пользовательская.Attribute:TRADEDATE", "Пользовательская.Attribute:SHORTNAME", "Пользовательская.Attribute:SECID", "Пользовательская.Attribute:NUMTRADES", "Пользовательская.Attribute:VALUE", "Пользовательская.Attribute:OPEN", "Пользовательская.Attribute:LOW", "Пользовательская.Attribute:HIGH", "Пользовательская.Attribute:LEGALCLOSEPRICE", "Пользовательская.Attribute:WAPRICE", "Пользовательская.Attribute:CLOSE", "Пользовательская.Attribute:VOLUME", "Пользовательская.Attribute:MARKETPRICE2", "Пользовательская.Attribute:MARKETPRICE3", "Пользовательская.Attribute:ADMITTEDQUOTE", "Пользовательская.Attribute:MP2VALTRD", "Пользовательская.Attribute:MARKETPRICE3TRADESVALUE", "Пользовательская.Attribute:ADMITTEDVALUE", "Пользовательская.Attribute:WAVAL", "Пользовательская.Attribute:TRADINGSESSION"}),
    #"Измененный элемент Пользовательская" = Table.TransformColumnTypes(#"Развернутый элемент Пользовательская",{{"Пользовательская.Attribute:BOARDID", type text}, {"Пользовательская.Attribute:TRADEDATE", type date}, {"Пользовательская.Attribute:SHORTNAME", type text}, {"Пользовательская.Attribute:SECID", type text}, {"Пользовательская.Attribute:NUMTRADES", type number}, {"Пользовательская.Attribute:OPEN", type number},{"Пользовательская.Attribute:LOW", type number}, {"Пользовательская.Attribute:HIGH", type number}, {"Пользовательская.Attribute:LEGALCLOSEPRICE", type number}, {"Пользовательская.Attribute:WAPRICE", type number}, {"Пользовательская.Attribute:CLOSE", type number}, {"Пользовательская.Attribute:VOLUME", type number}, {"Пользовательская.Attribute:MARKETPRICE2", type number}, {"Пользовательская.Attribute:MARKETPRICE3", type number}, {"Пользовательская.Attribute:ADMITTEDQUOTE", type number},  {"Пользовательская.Attribute:MP2VALTRD", type number}, {"Пользовательская.Attribute:MARKETPRICE3TRADESVALUE", type number},{"Пользовательская.Attribute:ADMITTEDVALUE",type number}, {"Пользовательская.Attribute:WAVAL",type number}, {"Пользовательская.Attribute:TRADINGSESSION", type number}},"en-GB"),
    #"Другие удаленные столбцы" = Table.SelectColumns(#"Измененный элемент Пользовательская",{"Пользовательская.Attribute:BOARDID", "Пользовательская.Attribute:TRADEDATE", "Пользовательская.Attribute:SHORTNAME", "Пользовательская.Attribute:SECID", "Пользовательская.Attribute:NUMTRADES", "Пользовательская.Attribute:VALUE", "Пользовательская.Attribute:OPEN", "Пользовательская.Attribute:LOW", "Пользовательская.Attribute:HIGH", "Пользовательская.Attribute:LEGALCLOSEPRICE", "Пользовательская.Attribute:WAPRICE", "Пользовательская.Attribute:CLOSE", "Пользовательская.Attribute:VOLUME", "Пользовательская.Attribute:MARKETPRICE2", "Пользовательская.Attribute:MARKETPRICE3", "Пользовательская.Attribute:ADMITTEDQUOTE", "Пользовательская.Attribute:MP2VALTRD", "Пользовательская.Attribute:MARKETPRICE3TRADESVALUE", "Пользовательская.Attribute:ADMITTEDVALUE", "Пользовательская.Attribute:WAVAL", "Пользовательская.Attribute:TRADINGSESSION"}),
    Пользовательская1 = Table.TransformColumnNames(#"Другие удаленные столбцы", each Text.AfterDelimiter(_,":"))
in
    Пользовательская1


Необходимо условие по дате ?date = задать как параметр, ссылающийся на значений из таблицы Date_Parametrs (5 строка кода).
Почему-то в таком виде код не работает(
Помогите, пжл.
Изменено: Vlad Nickolaev - 17.09.2021 12:25:21
 
Vlad Nickolaev, Добрый день!
С интернета редко делаю запросы. Ваш запрос у меня не отработал, выдал ошибку.
Но точно знаю, что Ваш параметр, который Вы передаете в ссылку, необходимо превратить в текст. Так как ссылка - это у Вас текстовая строка.
Воспользуйтесь Text.From() либо Date.ToText()
 
Цитата
Andrey_S написал:
Воспользуйтесь Text.From() либо Date.ToText()
Андрей, попробовал предложенный вариант, однако выдает ошибку "Ожидался comma" и выделяет почему-то название таблицы (Name="Date_Parametr").
 
Цитата
Vlad Nickolaev написал:
Ожидался comma
где-то запятую пропустили. Проверяйте запрос. Эта ошибка у Вас и в начальном варианте присутствует.
А еще правильнее, не растягивать портянки в одну строку, а выносить в "переменные". Например, для той же даты:
Код
dt_from = DateTime.ToText({[Name="Date_Parametr"]}[Content]{0}[Date From],"dd.MM.yyyy"),
    #"Добавлен пользовательский объект" = Table.AddColumn(#"Измененный тип", "Пользовательская", each Xml.Tables(Web.Contents("https://iss.moex.com/iss/history/engines/stock/markets/shares/securities.xml?date="&dt_from, null, true)&start="&[Column1])){0}[Table]{0}[rows]{0}[row]),
Так меньше шансов ошибиться. Например, изначально у Вас объединение строки URL с параметром было неверным(пропущены кавычки и амперсанд), да к тому излишнее обращение к Workbook.
А вот что там у Вас идет за чушь в виде [Column1])){0}[Table]{0}[rows]{0}[row] я не очень понимаю. Что это, откуда и почему именно там я так и не вкурил, а времени вникать и потрошить Ваш код сейчас нет.
Изменено: Дмитрий(The_Prist) Щербаков - 21.09.2021 12:52:55
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков,

Цитата
Дмитрий(The_Prist) Щербаков написал:
[Column1])){0}{0}[rows]{0}[row]
Эта часть кода предназначена, чтобы я вытягивал все строки на заданную дату, так как по умолчанию МосБиржа позволяет тянуть только 100 строк.
В части запятой - вставил Ваш кусок кода и все равно выдает ошибку comma(
 
Цитата
Vlad Nickolaev написал:
вставил Ваш кусок кода
это хорошо, но мой кусок кода не решал эту проблему, т.к. я изначально написал:
Цитата
Дмитрий(The_Prist) Щербаков написал:
Эта ошибка у Вас и в начальном варианте присутствует.
я не искал её и не пытался. Я показал Вам как дату и листа вставить. А все остальное написано как-то не понятно для меня и я не стал разбираться. Там вперемешку и данные с листов, и обращение к таблицам в тех местах, где таблиц вроде быть не должно...
Оставьте только ту часть, которая вызывает у Вас наибольшие проблемы и приложите сюда код. Например, тема у Вас подразумевает, что проблемы с использованием даты с листа. Вот и оставьте запрос со статичной датой в запросе, а мы покажем, как её заменить на дату с листа. А дальше уже по шагам можно будет решить и остальные проблемы.
Изменено: Дмитрий(The_Prist) Щербаков - 21.09.2021 15:52:24
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков,
Код
#"Добавлен пользовательский объект" = Table.AddColumn(#"Измененный тип", "Пользовательская", each Xml.Tables(Web.Contents("https://iss.moex.com/iss/history/engines/stock/markets/shares/securities.xml?date=2021-09-20&amp...), 

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

 
Цитата
Vlad Nickolaev написал:
не могу, куда смотреть
и не надо. приложите работающий запрос(без ошибок), а мы тут уже поможем написать его с параметрами. В Вашем сообщении ссылка "съелась" редактором. Да и я с этим сайтом последний раз года два назад работал и сейчас не пойму сразу, куда именно Вы хотите воткнуть номера(1, 101, 201 и т.д.). Поясните - тогда можно поразбираться.
Почитайте пока, вдруг поможет: Курс валют при помощи Power Query
та же тема, только на примере курса валют.
Изменено: Дмитрий(The_Prist) Щербаков - 21.09.2021 16:23:15
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков,
Спасибо за пример!

Пока попробую тогда разобраться своими силами)
 
Цитата
Vlad Nickolaev написал:
но при параметризации даты выявляется какая-то пропущенная запятая
ничего такого не увидел. Вставил статичную ссылку в Ваш файл, заменил только дату на параметр:
Код
let
    Источник = List.Numbers(1,1000,100),
    #"Преобразовано в таблицу" = Table.FromList(Источник, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Измененный тип" = Table.TransformColumnTypes(#"Преобразовано в таблицу",{{"Column1", type text}}),
    dt_from = DateTime.ToText(Excel.CurrentWorkbook(){[Name="Date_Parametr"]}[Content]{0}[Date From],"yyyy-MM-dd"),
    #"Добавлен пользовательский объект" = Table.AddColumn(#"Измененный тип", "Пользовательская", each Xml.Tables(Web.Contents("https://iss.moex.com/iss/history/engines/stock/markets/shares/securities.xml?date="&dt_from&"&..."), null){0}[Table]{0}[rows]{0}[row]),
    #"Удаленные ошибки" = Table.RemoveRowsWithErrors(#"Добавлен пользовательский объект", {"Пользовательская"}),
    #"Развернутый элемент Пользовательская" = Table.ExpandTableColumn(#"Удаленные ошибки", "Пользовательская", {"Attribute:BOARDID", "Attribute:TRADEDATE", "Attribute:SHORTNAME", "Attribute:SECID", "Attribute:NUMTRADES", "Attribute:VALUE", "Attribute:OPEN", "Attribute:LOW", "Attribute:HIGH", "Attribute:LEGALCLOSEPRICE", "Attribute:WAPRICE", "Attribute:CLOSE", "Attribute:VOLUME", "Attribute:MARKETPRICE2", "Attribute:MARKETPRICE3", "Attribute:ADMITTEDQUOTE", "Attribute:MP2VALTRD", "Attribute:MARKETPRICE3TRADESVALUE", "Attribute:ADMITTEDVALUE", "Attribute:WAVAL", "Attribute:TRADINGSESSION"}, {"Пользовательская.Attribute:BOARDID", "Пользовательская.Attribute:TRADEDATE", "Пользовательская.Attribute:SHORTNAME", "Пользовательская.Attribute:SECID", "Пользовательская.Attribute:NUMTRADES", "Пользовательская.Attribute:VALUE", "Пользовательская.Attribute:OPEN", "Пользовательская.Attribute:LOW", "Пользовательская.Attribute:HIGH", "Пользовательская.Attribute:LEGALCLOSEPRICE", "Пользовательская.Attribute:WAPRICE", "Пользовательская.Attribute:CLOSE", "Пользовательская.Attribute:VOLUME", "Пользовательская.Attribute:MARKETPRICE2", "Пользовательская.Attribute:MARKETPRICE3", "Пользовательская.Attribute:ADMITTEDQUOTE", "Пользовательская.Attribute:MP2VALTRD", "Пользовательская.Attribute:MARKETPRICE3TRADESVALUE", "Пользовательская.Attribute:ADMITTEDVALUE", "Пользовательская.Attribute:WAVAL", "Пользовательская.Attribute:TRADINGSESSION"}),
    #"Измененный элемент Пользовательская" = Table.TransformColumnTypes(#"Развернутый элемент Пользовательская",{{"Пользовательская.Attribute:BOARDID", type text}, {"Пользовательская.Attribute:TRADEDATE", type date}, {"Пользовательская.Attribute:SHORTNAME", type text}, {"Пользовательская.Attribute:SECID", type text}, {"Пользовательская.Attribute:NUMTRADES", type number}, {"Пользовательская.Attribute:OPEN", type number},{"Пользовательская.Attribute:LOW", type number}, {"Пользовательская.Attribute:HIGH", type number}, {"Пользовательская.Attribute:LEGALCLOSEPRICE", type number}, {"Пользовательская.Attribute:WAPRICE", type number}, {"Пользовательская.Attribute:CLOSE", type number}, {"Пользовательская.Attribute:VOLUME", type number}, {"Пользовательская.Attribute:MARKETPRICE2", type number}, {"Пользовательская.Attribute:MARKETPRICE3", type number}, {"Пользовательская.Attribute:ADMITTEDQUOTE", type number},  {"Пользовательская.Attribute:MP2VALTRD", type number}, {"Пользовательская.Attribute:MARKETPRICE3TRADESVALUE", type number},{"Пользовательская.Attribute:ADMITTEDVALUE",type number}, {"Пользовательская.Attribute:WAVAL",type number}, {"Пользовательская.Attribute:TRADINGSESSION", type number}},"en-GB"),
    #"Другие удаленные столбцы" = Table.SelectColumns(#"Измененный элемент Пользовательская",{"Пользовательская.Attribute:BOARDID", "Пользовательская.Attribute:TRADEDATE", "Пользовательская.Attribute:SHORTNAME", "Пользовательская.Attribute:SECID", "Пользовательская.Attribute:NUMTRADES", "Пользовательская.Attribute:VALUE", "Пользовательская.Attribute:OPEN", "Пользовательская.Attribute:LOW", "Пользовательская.Attribute:HIGH", "Пользовательская.Attribute:LEGALCLOSEPRICE", "Пользовательская.Attribute:WAPRICE", "Пользовательская.Attribute:CLOSE", "Пользовательская.Attribute:VOLUME", "Пользовательская.Attribute:MARKETPRICE2", "Пользовательская.Attribute:MARKETPRICE3", "Пользовательская.Attribute:ADMITTEDQUOTE", "Пользовательская.Attribute:MP2VALTRD", "Пользовательская.Attribute:MARKETPRICE3TRADESVALUE", "Пользовательская.Attribute:ADMITTEDVALUE", "Пользовательская.Attribute:WAVAL", "Пользовательская.Attribute:TRADINGSESSION"}),
    Пользовательская1 = Table.TransformColumnNames(#"Другие удаленные столбцы", each Text.AfterDelimiter(_,":"))
in
    Пользовательская1
все работает. Непонятно куда вторую дату закидывать.
Изменено: Дмитрий(The_Prist) Щербаков - 21.09.2021 16:31:28
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков,

Спасибо Вам большое за пример!

Я наконец-таки осознал, в чем была моя ошибка))
Страницы: 1
Наверх