MarcoNeukom
Hola,
Estoy buscando una manera de obtener tipos de cambio históricos en mi informe (también tipos actualizados diariamente) y he estado buscando en ecb.europa.eu y su API restante, pero me resulta difícil;
¿Alguien sabe una manera bastante fácil de obtener estas cifras?
Descargo de responsabilidad; No tengo habilidades de desarrollador, solo soy analista de negocios, obviamente…
janvanwerkhoven
En respuesta a MarcoNeukom
@MarcoNeukom Sugeriría primero crear una tabla con fechas secuenciales en cada fila. Luego, al invocar la función, enviará las fechas a la función una por una, devolviendo así la información del tipo de cambio de cada día. Puede usar este ejemplo que primero genera una lista de fechas de los últimos 365 días (esto se actualiza con cada actualización) e invoca la función:
let Source = {Number.From(Date.AddDays(DateTime.Date(DateTime.LocalNow()),-365))..Number.From(DateTime.Date(DateTime.LocalNow()))}, #"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error), #"Changed Type" = Table.TransformColumnTypes(#"Converted to Table",{{"Column1", type date}}), #"Renamed Columns" = Table.RenameColumns(#"Changed Type",{{"Column1", "Date"}}), #"Invoked Custom Function" = Table.AddColumn(#"Renamed Columns", "ExchangeRates", each Fn_GetHistoricExchangeRates(Date.ToText([Date],"yyyy-MM-dd"))), #"Expanded ExchangeRates" = Table.ExpandTableColumn(#"Invoked Custom Function", "ExchangeRates", {"Currency", "Rate"}, {"Currency", "Rate"}), #"Changed Type1" = Table.TransformColumnTypes(#"Expanded ExchangeRates",{{"Rate", type number}, {"Currency", type text}}) in #"Changed Type1"
Para que funcione, debe crear una función llamada Fn_GetHistoricExchangeRates, utilizando el código de mi publicación anterior.
¡Espero que ayude!
ene
RBnNC
Se puede hacer en PBRS de ChristianSteven
Teige Gao
Hola @MarcoNeukom,
Usaré datos de este sitio web: https://www.x-rates.com/historical/?from=USD&amount=1&date=2019-07-17, podemos cambiar la URL a la fecha especificada para obtener tipos de cambio históricos. Luego podemos usar el conector web en PowerBI para obtener los datos de ellos:
Atentamente,
Teigio
MarcoNeukom
En respuesta a Teige Gao
¿Así que actualizas la URL cada vez que quieres nuevos datos?
Debería ser posible obtener los datos más recientes agregados a sus consultas anteriores y respuestas almacenadas en caché.
MarcoNeukom
En respuesta a Teige Gao
Hola @TeigeGao,
Gracias por tu respuesta.
Debería haber sido más específico:
Lo que estoy tratando de lograr es tener un gráfico de líneas con tasas históricas que se actualice con nuevos puntos de datos todos los días.
ECB tiene una sintaxis para hacer eso, pero parece que no puedo hacer que funcione.
https://sdw-wsrest.ecb.europa.eu/help/
janvanwerkhoven
En respuesta a MarcoNeukom
@MarcoNeukom Recientemente creé una función simple que extrae información sobre el tipo de cambio del sitio https://exchangeratesapi.io/ que obtiene sus datos del sitio del BCE:
let Source = (Date as text) => let Source = Json.Document(Web.Contents("https://api.exchangeratesapi.io/" & Date & "?base=USD")), rates = Source[rates], #"Converted to Table" = Record.ToTable(rates), #"Renamed Columns" = Table.RenameColumns(#"Converted to Table",{{"Name", "Currency"}, {"Value", "Rate"}}) in #"Renamed Columns" in Source
Usando una tabla de fechas o un rango de fechas generado, puede invocar la función personalizada de esta manera:
= Table.AddColumn(#"Removed Other Columns", "Rates", each Fn_GetHistoricCurrencyRates(DateTime.ToText([Date],"yyyy-MM-dd")))
¡Espero que ayude!
ene
MarcoNeukom
En respuesta a janvanwerkhoven
@janvanwerkhoven esto parece prometedor, también me topé con ese sitio.
Soy totalmente inexperto con esto; La «función de invocación» me permite ingresar el parámetro como fecha. ¿Debería completar un rango de fechas y luego usar la segunda función que menciona?
janvanwerkhoven
En respuesta a MarcoNeukom
@MarcoNeukom Sugeriría primero crear una tabla con fechas secuenciales en cada fila. Luego, al invocar la función, enviará las fechas a la función una por una, devolviendo así la información del tipo de cambio de cada día. Puede usar este ejemplo que primero genera una lista de fechas de los últimos 365 días (esto se actualiza con cada actualización) e invoca la función:
let Source = {Number.From(Date.AddDays(DateTime.Date(DateTime.LocalNow()),-365))..Number.From(DateTime.Date(DateTime.LocalNow()))}, #"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error), #"Changed Type" = Table.TransformColumnTypes(#"Converted to Table",{{"Column1", type date}}), #"Renamed Columns" = Table.RenameColumns(#"Changed Type",{{"Column1", "Date"}}), #"Invoked Custom Function" = Table.AddColumn(#"Renamed Columns", "ExchangeRates", each Fn_GetHistoricExchangeRates(Date.ToText([Date],"yyyy-MM-dd"))), #"Expanded ExchangeRates" = Table.ExpandTableColumn(#"Invoked Custom Function", "ExchangeRates", {"Currency", "Rate"}, {"Currency", "Rate"}), #"Changed Type1" = Table.TransformColumnTypes(#"Expanded ExchangeRates",{{"Rate", type number}, {"Currency", type text}}) in #"Changed Type1"
Para que funcione, debe crear una función llamada Fn_GetHistoricExchangeRates, utilizando el código de mi publicación anterior.
¡Espero que ayude!
ene
mariusmc2
En respuesta a janvanwerkhoven
Solo tenga en cuenta que esto no se puede usar en el servicio Power BI, se incluye en un conjunto de datos dinámico y no se puede actualizar:
https://docs.microsoft.com/en-us/power-bi/connect-data/refresh-data#refresh-and-dynamic-data-sources
kristenc
En respuesta a mariusmc2
Puede reformular la consulta de esta manera utilizando RelativePath (consulte el excelente blog de Chris Webb sobre esta solución para fuentes de datos dinámicas):
let
Source = (Date as text) => let
Source = Json.Document(
Web.Contents("https://api.exchangeratesapi.io/",
[RelativePath = "Date",
Query =
[base="USD"]])),
rates = Source[rates],
#"Converted to Table" = Record.ToTable(rates),
#"Renamed Columns" = Table.RenameColumns(#"Converted to Table",{{"Name", "Currency"}, {"Value", "Rate"}})
in
#"Renamed Columns"
in
Source