Function.InvokeAfter проблема - PullRequest
       10

Function.InvokeAfter проблема

0 голосов
/ 25 августа 2018

Я пытаюсь отложить каждый вызов StockData на 5 секунд, чтобы обойти ограничение вызовов API. Кажется, я не могу сделать это правильно, что я делаю не так?

let
    Source = Excel.CurrentWorkbook(){[Name="Stocks"]}[Content],
    #"Invoked Custom Function" = Function.InvokeAfter(Table.AddColumn(Source, "StockData", each StockData([Full Name])), #duration(0,0,0,5)),
    #"Expanded StockData" = Table.ExpandTableColumn(#"Invoked Custom Function", "StockData", {"Name", "Value.1. open", "Value.2. high", "Value.3. low", "Value.4. close", "Value.5. volume"}, {"StockData.Name", "StockData.Value.1. open", "StockData.Value.2. high", "StockData.Value.3. low", "StockData.Value.4. close", "StockData.Value.5. volume"}),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded StockData",{"Size", "Short Name", "ISIN"})
in
    #"Removed Columns"

Связанный код, если кто-то хотел бы попробовать его:

let StockData = (stock as text) =>

        let
            Source = Json.Document(Web.Contents("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=" & stock & "&outputsize=compact&apikey=RG5AM4ORXWE1X0V8")),
            #"Time Series (Daily)" = Source[#"Time Series (Daily)"],
            #"Converted to Table" = Record.ToTable(#"Time Series (Daily)"),
            #"Expanded Value" = Table.ExpandRecordColumn(#"Converted to Table", "Value", {"1. open", "2. high", "3. low", "4. close", "5. volume"}, {"Value.1. open", "Value.2. high", "Value.3. low", "Value.4. close", "Value.5. volume"})
        in
            #"Expanded Value"
in StockData

1 Ответ

0 голосов
/ 28 августа 2018

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

Перепишите вторую строку как:

#"Invoked Custom Function" = Table.AddColumn(Source, "StockData", each Function.InvokeAfter(()=>StockData([Full Name])), #duration(0,0,0,5))),
...