Я хочу обогатить свою таблицу Excel данными обмена валют в реальном времени без зависимости от подписки Microsoft 365 (так называемая функция «Акции»).
Для этого я написал следующий Power Query:
let
EXCHANGE_DATA = Table.FromRecords({[
EUR2ILS = try Web.Page(Web.Contents("https://transferwise.com/gb/currency-converter/eur-to-ils-rate")){0}[Data]{0}[#"Exchange rate(1 EUR → ILS)"]
otherwise Text.Replace(Web.Page(Web.Contents("https://transferwise.com/gb/currency-converter/eur-to-ils-rate")){0}[Data]{0}[Israeli New Sheqel], " ILS", ""),
USD2ILS = try Web.Page(Web.Contents("https://transferwise.com/gb/currency-converter/usd-to-ils-rate")){0}[Data]{0}[#"Exchange rate(1 USD → ILS)"]
otherwise Text.Replace(Web.Page(Web.Contents("https://transferwise.com/gb/currency-converter/usd-to-ils-rate")){0}[Data]{0}[Israeli New Sheqel], " ILS", "")
]})
in
EXCHANGE_DATA
Затем я решил сделать его более понятным и выделил извлечение данных в отдельные переменные:
let
EUR2ILS = Web.Page(Web.Contents("https://transferwise.com/gb/currency-converter/eur-to-ils-rate")){0}[Data]{0},
USD2ILS = Web.Page(Web.Contents("https://transferwise.com/gb/currency-converter/usd-to-ils-rate")){0}[Data]{0},
EXCHANGE_DATA = Table.FromRecords({[
EUR2ILS = try EUR2ILS[#"Exchange rate(1 EUR → ILS)"]
otherwise Text.Replace(EUR2ILS[Israeli New Sheqel], " ILS", ""),
USD2ILS = try USD2ILS[#"Exchange rate(1 USD → ILS)"]
otherwise Text.Replace(USD2ILS[Israeli New Sheqel], " ILS", "")
]})
in
EXCHANGE_DATA
Этот подход добавляет дополнительный шаг «Навигация» в очередь Примененных шагов.
С точки зрения производительности, какой подход я должен предпочесть в Power Query?
- Получение данных напрямую, указав последний столбец:
let EXCHANGE_DATA = Web.Page(Web.Contents("https://transferwise.com/gb/currency-converter/eur-to-ils-rate")){0}[Data]{0}[Israeli New Sheqel]
Или я могу сначала получить все данные и только потом указать конкретный столбец:
let EUR2ILS = Web.Page(Web.Contents("https://transferwise.com/gb/currency-converter/eur-to-ils-rate")){0}[Data]{0}
EXCHANGE_DATA = EUR2ILS[Israeli New Sheqel]