Получение данных из Yandex Disk API 🔥
Если ваш гугл-диск попал (или может попасть) под санкции, а шлюзы вы не любите, вам очень пригодится функция для Яндекс Диск API:)
Как обновлять данные из локального файла в Power BI Service без шлюза? 🥹
1) Грузим файл на Яндекс.Диск.
2) Обращаемся к API Яндекс.Диска с помощью функции и получаем файл в Power BI Desktop.
3) Выгружаем отчёт с файлом в альтернативную рабочую область Power BI Service ("Моя рабочая область" не подойдёт).
В "Моей рабочей области" Power BI требует шлюз, так что там пользы от функции мало.
Где это еще работает?
Функция работает в Excel, а также в потоках данных Power BI. Можно запустить поток данных с обращением к разным файлам и использовать везде его - это довольно удобно.
Сложно поверить, но говорят, что даже в Report Server функция работает 😵💫
А вот и сама функция:
let
function=
(fileLink as text, token as text )=>
let
headers=[#"Content-Type" = "application/json", #"Authorization" = "OAuth "&token, #"Accept" = "application/json"],
querydata = [#"path" = Text.Replace(fileLink, "\","/")],
web = Web.Contents("https://cloud-api.yandex.net/", [RelativePath="v1/disk/resources/download", Headers = headers, ManualStatusHandling = {404, 400}, Query =querydata]),
result = Json.Document(web),
link = result[href],
relative = Text.Replace(result[href], "https://downloader.disk.yandex.ru/",""),
href = Web.Contents("https://downloader.disk.yandex.ru/", [RelativePath = relative, Headers = headers, ManualStatusHandling = {404, 400}])
in href,
result = Value.ReplaceType(function, FuncType),
FuncType = type function (
fileLink as (type text meta [
Documentation.FieldCaption = "Путь к файлу после C:\YandexDisk\:",
Documentation.SampleValues = {"Мои файлы\файлик.xxx"}
]),
token as (type text meta [
Documentation.FieldCaption = "Ваш токен (ссылка на получение ниже):",
Documentation.SampleValues = {"y0_AgAAAMfGA...rBX0d-ZpA5O"}
])
)
as table meta [
Documentation.Name = "Получаем файл с Яндекс.Диска",
Documentation.LongDescription = "",
Documentation.Examples = {
[
Description = "Ссылка на получение токена:",
Code = "https://oauth.yandex.ru/authorize?response_type=token&client_id=a363cf6712db45978a012820777fc06a",
Result = "По ссылке вы получите токен"
]
}
]
in result
Если ваш гугл-диск попал (или может попасть) под санкции, а шлюзы вы не любите, вам очень пригодится функция для Яндекс Диск API:)
Как обновлять данные из локального файла в Power BI Service без шлюза? 🥹
1) Грузим файл на Яндекс.Диск.
2) Обращаемся к API Яндекс.Диска с помощью функции и получаем файл в Power BI Desktop.
3) Выгружаем отчёт с файлом в альтернативную рабочую область Power BI Service ("Моя рабочая область" не подойдёт).
В "Моей рабочей области" Power BI требует шлюз, так что там пользы от функции мало.
Где это еще работает?
Функция работает в Excel, а также в потоках данных Power BI. Можно запустить поток данных с обращением к разным файлам и использовать везде его - это довольно удобно.
Сложно поверить, но говорят, что даже в Report Server функция работает 😵💫
А вот и сама функция:
let
function=
(fileLink as text, token as text )=>
let
headers=[#"Content-Type" = "application/json", #"Authorization" = "OAuth "&token, #"Accept" = "application/json"],
querydata = [#"path" = Text.Replace(fileLink, "\","/")],
web = Web.Contents("https://cloud-api.yandex.net/", [RelativePath="v1/disk/resources/download", Headers = headers, ManualStatusHandling = {404, 400}, Query =querydata]),
result = Json.Document(web),
link = result[href],
relative = Text.Replace(result[href], "https://downloader.disk.yandex.ru/",""),
href = Web.Contents("https://downloader.disk.yandex.ru/", [RelativePath = relative, Headers = headers, ManualStatusHandling = {404, 400}])
in href,
result = Value.ReplaceType(function, FuncType),
FuncType = type function (
fileLink as (type text meta [
Documentation.FieldCaption = "Путь к файлу после C:\YandexDisk\:",
Documentation.SampleValues = {"Мои файлы\файлик.xxx"}
]),
token as (type text meta [
Documentation.FieldCaption = "Ваш токен (ссылка на получение ниже):",
Documentation.SampleValues = {"y0_AgAAAMfGA...rBX0d-ZpA5O"}
])
)
as table meta [
Documentation.Name = "Получаем файл с Яндекс.Диска",
Documentation.LongDescription = "",
Documentation.Examples = {
[
Description = "Ссылка на получение токена:",
Code = "https://oauth.yandex.ru/authorize?response_type=token&client_id=a363cf6712db45978a012820777fc06a",
Result = "По ссылке вы получите токен"
]
}
]
in result