Power Query jest niezwykle użyteczny i może być wykorzystywany do realizacji wielu, różnych celów. Dzisiaj chciałbym pokazać w jaki sposób można wykorzystać aplikację dostępne w Azure Marketplace – w tym przypadku aplikację Bing Search. Pobrane zdjęcia następnie zostaną pokazane na raporcie w Power Bi Desktop.
W Power Bi Desktop, w Power Query dodajmy nową funkcję, która pozwala będzie pobierać zdjęcia.
let ImageUrl = let LoadSingleData = (Query as text) as text=> let WebResults = Marketplace.Subscriptions() { [ServiceUrl="https://api.datamarket.azure.com/Data.ashx/Bing/Search/v1/"] } [Feeds] { [ Name="Image" ,Signature="function (Query as text, Options as nullable text, Market as nullable text, Adult as nullable text, Latitude as nullable number, Longitude as nullable number, ImageFilters as nullable text) as table" ] } [Data] ( Query // Query , null // Options , null // Market , null // Adult , null // Latitude , null // Longiture , "Size:Small" // ImageFilters ) , JpegImages = Table.SelectRows(WebResults, each ([ContentType] = "image/jpeg")), ImageUrls = Table.SelectColumns(JpegImages, "MediaUrl"), FirstImageUrl = Table.FirstN(ImageUrls,1), FirstImageUrlValue = FirstImageUrl{0}[MediaUrl] in FirstImageUrlValue in LoadSingleData in ImageUrl
Zmieńmy teraz nazwę funkcji na: “fFindImageForQuery”. Aby przetestować funkcję wystarczy użyć przycisku “Invoke”.
Teraz wystarczy wprowadzić parametry funkcji – w tym przypadku szukana fraza dla zdjęc i zaakceptować wybór.
Przy wykonywaniu funkcji po raz pierwszy Power Query poprosi o autentykację z Azure Marketplace – w tym przypadku wystarczy tylko podać dane logowania i na ekranie pojawi się rezultat dla danego zapytania – pojedynczy adres url obrazka dla danej frazy:
Aby przetestować funkcję w rzeczywistości utwórzmy plik txt oraz dodajmy listę fraz, które chcielibyśmy wyszukać, na przykład nazwy zwierząt:
fox giraffe dog horse elephant snake cat buffalo butterfly camel cow shark bird zebra crocodile fish frog bear dolphin duck gorilla iguana koala lion monkey
Teraz pobierzmy dane z przygotowanego pliku oraz w jednym z kroków wyweołajmy funkcję, która pobierze adresy zdjęć. Na przykład:
let Source = Table.FromColumns({Lines.FromBinary(File.Contents("C:UsersAdministratorDesktopanimals.txt"),null,null,1252)}), RenameHeader = Table.RenameColumns(Source,{{"Column1", "animal"}}), FindImageForAnimal = Table.AddColumn(RenameHeader, "Custom", each fFindImageForQuery([animal])), RenameImageUrl = Table.RenameColumns(FindImageForAnimal,{{"Custom", "AnimalImageUrl"}}), AddImageUrl = Table.DuplicateColumn(RenameImageUrl, "AnimalImageUrl", "AnimalImageUrlSource") in AddImageUrl
Teraz można zamknąć zapytanie. Przed utworzniem raportu musimy jednak wykonać jeszcze jeden krok, który pozwoli pokazać zdjęcia w Power Bi Desktop. Aby wyświetlić zdjęcia należy okreslić odpowiednią kategorię dla kolumny. W tym celu należy przejść do zakładki “Data” oraz zmienić “Data Category” na “Image URL”. Dodatkowo w podanym przykładzie kolumna została zduplikowana i można ustalić jej kategorię na “Web URL”. Pozwoli to oprócz wyświetlenia zdjęć wyświetlenie źródła pobranego zdjęcia oraz pozwoli na przejście do źródła.
Teraz można przygotować raport, a zdjęcia zostaną pobrane z internetu za pomocą Bing Search Api oraz automatycznie pokazane na raporcie w Power Bi Desktop.
- Docker dla amatora danych – Tworzenie środowiska (VM) w Azure i VirtualBox (skrypt) - April 20, 2020
- Power-up your BI project with PowerApps – materiały - February 5, 2020
- Docker dla “amatora” danych – kod źródłowy do prezentacji - November 18, 2019
Last comments