Перебор каждой ячейки в столбце в Power Query - PullRequest
0 голосов
/ 24 мая 2018

Я создал таблицу под названием Table3 с двумя столбцами с пустым URL-адресом и значением, содержащим список веб-сайтов.Следующий запрос извлекает данные с веб-сайтов, хранящихся в таблице 3.

let
    Parameter = Excel.CurrentWorkbook(){[Name="Table3"]}[Content],
    URL= Parameter{1}[Value],
    Source = Web.Page(Web.Contents(URL)),
    Data0 = Source{0}[Data],
    #"Changed Type" = Table.TransformColumnTypes(Data0,{{"Date", type date}, {"Open", type number}, {"High", type number}, {"Low", type number}, {"Close", type number}, {"Volume", type number}, {"Market Cap", type number}}),
    #"Removed Columns" = Table.RemoveColumns(#"Changed Type",{"Market Cap", "Open", "High", "Low"}),
    #"Sorted Rows" = Table.Sort(#"Removed Columns",{{"Date", Order.Ascending}})
in
    #"Sorted Rows" 

Во второй строке выполняется запрос для первого веб-сайта в столбце Значение.

Можно ли ввести цикл, который будет выполнять запрос для всех веб-сайтов?

Если нет, можно ли выполнить запрос для всех веб-сайтов последовательно, вручную вставив вышеуказанный код и изменив число в скобках для каждого веб-сайта?

Если это возможно, я предполагаю, что он будет загружать содержимое на одном листе, есть ли способ загрузить содержимое на разных листах для каждой итерации?

Спасибо, что прочитали мой вопрос.

1 Ответ

0 голосов
/ 24 мая 2018

Циклы в Power Query не очень важны, но вы все равно можете делать то, что вам нужно.Я не знаю, с каких URL вы тянете, поэтому приведу пример использования общедоступных.


Предположим, мои Table3 следующие:

URL
--------
https://finance.yahoo.com/quote/AAPL?p=AAPL
https://finance.yahoo.com/quote/AAPL?p=GOOG

Я могу загрузить это в редактор запросов и создать собственный столбец, который читает веб-страницу для каждого URL.

= Web.Page(Web.Contents([URL])){0}[Data]

(Таблица, которую я хочу, является первой (отсюда и индекс строки {0})) и находится в столбце [Data].

Теперь у меня есть такая таблица, где нижняя таблица представляет собой предварительный просмотр выбранной ячейки.

Preview Table

Щелкните значок стрелки, чтобы развернуть таблицы.

Expand Tables

Здесь вы можете отфильтровать Column1, чтобы выбрать, какиезначения, которые вас интересуют (скажем, Ask, Bid, Open и Volume), а затем поверните этот столбец (Transform> Pivot Column).Выберите Column2 в качестве столбца значений и выберите «Не объединять» в разделе «Дополнительные параметры».

Pivot Column

Результатом должна быть таблица, которую вы видите вышедиалоговое окно сводки.


Вот полный M-код для запроса, который отображается в расширенном редакторе

let
    Source = Excel.CurrentWorkbook(){[Name="Table3"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"URL", type text}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each Web.Page(Web.Contents([URL])){0}[Data]),
    #"Expanded Custom" = Table.ExpandTableColumn(#"Added Custom", "Custom", {"Column1", "Column2"}, {"Column1", "Column2"}),
    #"Filtered Rows" = Table.SelectRows(#"Expanded Custom", each ([Column1] = "Ask" or [Column1] = "Bid" or [Column1] = "Open" or [Column1] = "Volume")),
    #"Pivoted Column" = Table.Pivot(#"Filtered Rows", List.Distinct(#"Filtered Rows"[Column1]), "Column1", "Column2")
in
    #"Pivoted Column"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...