Salta el contingut

Obtenir dades amb Power BI

Exercici power-bi-get-data-annex.pdf · PDF

Has passat aquesta unitat dins d'una sola eina. Has connectat Superset a una base de dades, li has fet preguntes en SQL i n'has desat les respostes com a datasets i taules. Llavors arribes a les pràctiques a l'empresa i ningú no ha sentit a parlar de Superset. "Nosaltres fem servir Power BI", et diuen, i et donen un portàtil amb Windows.

Comences de zero? No. Les fonts són les mateixes sis. Una base de dades continua demanant host, port, base de dades, usuari i contrasenya. Un CSV continua tenint un separador. El que canvia és on acaben les dades un cop les has obtingudes, i aquesta única diferència explica gairebé tota la resta de l'eina.

A l'última pàgina vas guardar la teva feina de dues maneres: una recepta (una consulta desada) o una carmanyola (files emmagatzemades). Tingues present aquella cuina. La pregunta d'avui és: aquesta eina guarda la recepta o la carmanyola?

Què aprendràs

  • Dir què és Power BI Desktop i en què es diferencia d'una eina que s'executa en un servidor
  • Trobar un connector a la finestra Get data i dir quin tipus de font abasta
  • Carregar un fitxer CSV i una taula de PostgreSQL a Power BI, amb els mateixos paràmetres de connexió que vas usar a Superset
  • Explicar la diferència entre Import i DirectQuery, i triar-ne un per a un cas concret
  • Comparar on acaben les dades a Superset i a Power BI
  • Evitar la trampa: creure que "en directe" sempre és millor que una còpia

Una eina sense servidor pel mig

Power BI és la família d'eines de Microsoft per convertir dades en gràfics i informes. Power BI Desktop és el programa que instal·les en un ordinador per construir aquests informes.

Microsoft va llançar Power BI al públic general el 24 de juliol de 2015, el mateix any que va néixer Superset a Airbnb. És un producte comercial: una empresa és la propietària i ven serveis al voltant. Power BI Desktop en si és una descàrrega gratuïta, amb una pega: només funciona a Windows. No hi ha versió per a Linux ni per a macOS.

La gran diferència és a la canonada. Compara les dues imatges:

flowchart TB
    subgraph SUP ["<b>Superset</b>: un servidor pel mig"]
        direction LR
        B1["El teu navegador"] --> S["Superset<br>en un servidor"] --> D1[("PostgreSQL")]
    end
    subgraph PBI ["<b>Power BI Desktop</b>: tot al teu PC"]
        direction LR
        P["Power BI Desktop<br>al teu PC amb Windows"] --> D2[("PostgreSQL")]
        P --> F["<b>Fitxer .pbix</b><br>(la nevera)"]
    end

A Superset, la connexió es configura una sola vegada, al servidor, i tothom consulta a través seu. A Power BI Desktop no hi ha cap servidor pel mig: el programa s'executa al teu PC, es connecta des del teu PC i desa el resultat en un fitxer al teu PC.

Un fitxer .pbix és un informe de Power BI desat al disc: els seus gràfics, la descripció d'on venen les dades i, molt sovint, una còpia de les dades.

Recorda aquest fitxer. A la cuina d'avui, és la nevera.

Un mur de connectors

A Power BI Desktop, totes les fonts comencen al mateix botó: Home → Get data. Tria More... i s'obre la finestra Get Data amb una llista llarga de fonts, agrupades per categoria: File, Database, Online Services i altres.

Un connector és la peça d'una eina que sap parlar amb un tipus de font.

És la mateixa idea que el driver de Connectar Superset, amb un formulari al davant. Repassa la llista i hi reconeixeràs vells coneguts de Fonts de dades:

Connector Categoria La font que abasta Ja ho vas fer a Superset quan...
Text/CSV File Un fitxer CSV ...vas pujar pokemon_df.csv
PostgreSQL database Database Un servidor PostgreSQL ...vas usar la connexió Dades classe
Excel workbook File Un fitxer .xlsx
JSON File Un fitxer JSON
Web Other Una adreça web, inclosa una API ...no podies: Superset necessitava un script abans

Els mateixos sis tipus de font de sempre. Només són nous els botons.

Power BI canvia cada mes

Microsoft actualitza Power BI Desktop cada mes, i les etiquetes es mouen. Si un menú de la teva pantalla no coincideix paraula per paraula amb aquesta pàgina, busca el nom més proper. Les idees d'aquí (connector, Import, DirectQuery) no es mouen.

Tres maneres d'entrar

Portaràs els Pokémon a Power BI tres vegades: des d'un fitxer, des de la base de dades com a còpia, i des de la base de dades en directe.

Des d'un fitxer

Pas Fes això Hauries de veure
1 Home → Get data → Text/CSV, tria pokemon_df.csv, Open Una previsualització de la taula
2 Abans de prémer res, llegeix les tres caselles de dalt File Origin (la codificació), Delimiter (Comma) i Data Type Detection (Based on first 200 rows)
3 Load El tauler Data de la dreta llista pokemon_df
4 Obre la Table view (icona de la barra esquerra) i busca charmander 949 files. Mira la seva cel·la type_2.

Torna a mirar el pas 2. Aquestes tres caselles són les mateixes tres comprovacions que vas aprendre a fer en un editor de text: codificació, separador i quin tipus de valor conté cada columna. Power BI les endevina totes tres per tu. Una endevinalla pot ser equivocada.

Compte: \"és el mateix fitxer, així que les dues eines llegeixen el mateix\"

No exactament. El nostre CSV escriu un valor absent com les dues lletres NA.

Càrrega a Superset Power BI
El type_2 de Charmander NULL: una cel·la buida El text NA

Encara hi ha més. Power BI decideix quin tipus de valor conté cada columna mirant només les primeres 200 files, tret que canviïs la casella Data Type Detection. A la columna generation_id, el primer NA és a la fila 803, molt després d'aquestes 200 files. Així que Power BI decideix que la columna és numèrica, i després es troba 147 cel·les que no són números. Ves a mirar què en va fer.

Els mateixos ingredients, dos cuiners, dos plats. Mira sempre què ha fet l'eina amb el teu fitxer abans de fiar-te d'un recompte.

Des de la base de dades, com a còpia

Ara la mateixa connexió que coneixes de Superset, de forma nova. Necessites la taula pokemon_by_generation que vas construir a Datasets i destí.

Pas Fes això Hauries de veure
1 Home → Get data → More... → Database → PostgreSQL database → Connect Una finestra amb dues caselles: Server i Database
2 Server: el host de la teva base de dades. Database: el seu nom. Tots dos te'ls donen a classe
3 Data Connectivity mode: tria Import, després OK Una finestra que et pregunta qui ets
4 A l'esquerra tria Database (no Windows), escriu el teu nom d'usuari i contrasenya, Connect Un avís que la connexió no està xifrada
5 Llegeix l'avís, després OK El Navigator: la llista de taules que pots llegir
6 Marca public.generations i public.pokemon_by_generation, després Load Les dues taules al tauler Data; cadascuna té 8 files
7 File → Save as, anomena-ho pokemon_import.pbix Un fitxer al teu disc

On han anat a parar els cinc paràmetres?

Paràmetre Al formulari de Superset A la finestra de PostgreSQL de Power BI
Host Host Server
Port Port En lloc, si és l'habitual 5432. Si no, s'afegeix al servidor com a host:port.
Base de dades Database name Database
Usuari i contrasenya Username, Password La finestra següent, a la pestanya Database
Driver Instal·lat al servidor de Superset (psycopg2) Integrat a Power BI Desktop

Cinc paràmetres i un traductor, exactament com abans. Si la casella Server et dona problemes, recorda què és un host: el nom o l'adreça d'una màquina. Sense http:// al davant, i no el port 8088 de Superset. Aquesta porta és de la pàgina web de Superset, no de PostgreSQL.

Què vol dir l'avís de xifratge

El xifratge embrolla el que viatja per la xarxa perquè només els dos extrems ho puguin llegir. Power BI t'avisa que aquesta connexió no està embrollada: la teva contrasenya i les teves dades creuen la xarxa en forma llegible. En una xarxa d'aula tancada, això és acceptable. En una xarxa d'empresa real o per internet, no ho és, i la base de dades s'hauria de configurar per acceptar connexions xifrades.

Des de la base de dades, en directe

Una vegada més, amb una casella canviada.

Pas Fes això Hauries de veure
1 File → New: un segon informe, buit
2 Repeteix els passos 1 a 5 de dalt, però tria DirectQuery en lloc d'Import El Navigator una altra vegada
3 Marca només public.pokemon_by_generation, després Load La taula al tauler Data
4 Al tauler Data marca region i n_pokemon Power BI dibuixa un gràfic de les vuit regions. Unova és la més alta, amb 156; Galar té 0.
5 Mira la barra de l'esquerra, i la cantonada inferior dreta de la finestra La Table view ha desaparegut, i la barra d'estat indica el mode d'emmagatzematge

Per què ha desaparegut la Table view? Perquè no hi ha cap taula per veure. A DirectQuery, Power BI no conté cap fila. Cada gràfic que dibuixes, cada casella que marques, envia una consulta nova a la base de dades.

Import o DirectQuery: carmanyola o recepta

Aquesta casella, Data Connectivity mode, és l'elecció més important d'aquesta pàgina.

Import copia les dades a l'informe. DirectQuery deixa les dades a la base de dades i hi torna a preguntar cada vegada que un gràfic les necessita.

A la cuina:

  • Import és la carmanyola. Has cuinat una vegada i has guardat el resultat. La nevera és el fitxer .pbix.
  • DirectQuery és la recepta. No es guarda res. Cada gràfic torna a fer la comanda a la cuina.
Import (carmanyola) DirectQuery (recepta)
On viuen les dades Una còpia dins del fitxer .pbix A la base de dades d'origen; no es copia res
Velocitat Ràpid: els gràfics llegeixen la còpia Tan ràpid com respongui la base de dades a cada consulta
Frescor Tal com estaven l'última vegada que vas prémer Refresh Actual: cada gràfic pregunta a l'origen
Funciona amb Tots els connectors: fitxers, web, bases de dades Només alguns connectors, sobretot bases de dades. No Text/CSV.
Compte Les taules grans fan fitxers grans. No es pot canviar a DirectQuery després. Una consulta que retorna més d'un milió de files falla. Es pot canviar a Import, sense tornada enrere.

I Superset? A quin dels dos s'assembla? DirectQuery. Superset mai no conserva les teves files: cada gràfic envia una consulta a la base de dades. Aquesta va ser la primera idea de Connectar Superset, i ara té nom en una altra eina.

Compte: \"DirectQuery és millor, és en directe\"

Sona millor. És més lent i més limitat. La documentació de Microsoft mateixa diu que usis Import per defecte, i que només vagis més enllà quan alguna cosa t'hi obligui: dades massa grans per copiar-les, o que canvien massa de pressa perquè una còpia serveixi.

Un CSV de 949 files que no canvia mai? Import, evidentment: un fitxer només es pot importar, i la còpia és minúscula. Una base de dades de vendes amb files noves cada minut, mostrada en una pantalla a la botiga? Aquest és un cas per a DirectQuery.

Compte: \"Power BI està connectat al meu CSV\"

Va llegir el fitxer una vegada i en va guardar una còpia. Edita el CSV després i l'informe no se n'adonarà, fins que algú premi Refresh. Una carmanyola no es torna a omplir sola.

Una API en una sola finestra

Recorda què va costar portar 20 Pokémon de la PokéAPI a Superset: un script de Python, un fitxer CSV i una càrrega. Superset només parla amb bases de dades, així que l'API s'havia d'extreure i carregar primer.

Power BI té un connector per a això.

Pas Fes això Hauries de veure
1 Get data → Web, deixa Basic, enganxa https://pokeapi.co/api/v2/pokemon?limit=20, OK Una finestra que pregunta com iniciar sessió
2 Tria Anonymous, després Connect S'obre el Power Query Editor amb el JSON ja llegit: count, next, previous i results mostrat com a List
3 Fes clic a results, converteix la llista en una taula i expandeix-la 20 files, amb les columnes name i url

Cap script. Doncs, el problema de l'API està resolt? Sigues honest sobre el que has obtingut:

Continua sent problema teu Per què
Només ha arribat la pàgina 1 L'API reparteix la llista en pàgines. El camp next conté l'adreça de la pàgina següent, i ningú no l'ha obtinguda.
Els detalls són en un altre lloc Les estadístiques de cada Pokémon viuen a la seva pròpia adreça: la columna url. Són 20 preguntes més per fer.
Torna a ser una carmanyola El connector Web importa. L'informe mostra l'API tal com era quan la vas carregar.

El que afegeix Power BI és que el pas d'aplanar (convertir JSON imbricat en files i columnes) es fa amb clics en lloc de codi. Aquests clics tenen nom, Power Query, i una pàgina pròpia a la unitat següent: Power Query.

Superset i Power BI, costat per costat

Tot el d'aquesta pàgina en una taula.

Superset Power BI Desktop
Qui el fa Un projecte de codi obert de l'Apache Software Foundation Microsoft, un producte comercial
On s'executa En un servidor; l'uses des d'un navegador Al teu PC amb Windows
PostgreSQL Una connexió compartida, configurada una vegada. Driver instal·lat al servidor. Cada informe es connecta per si sol. Driver inclòs al programa.
Un fitxer CSV Pujat a la base de dades: es converteix en una taula que tothom pot consultar Llegit a l'informe: una còpia dins del fitxer .pbix
On acaben les dades A la base de dades, sempre. Superset hi torna a preguntar cada vegada. Import: una còpia al .pbix. DirectQuery: es queden a la base de dades.
Una API que respon en JSON No directament: extreu, aplana i carrega primer a la base de dades El connector Web la llegeix; aplanes amb clics. Només Import.

Cap de les dues columnes és "la bona". Un equip que comparteix una base de dades i vol que tothom vegi les mateixes xifres està ben servit per un servidor pel mig. Una persona que explora un fitxer en un portàtil està ben servida per un programa que simplement l'obre. Saber en quina situació ets és l'habilitat.

Prova-ho: les mateixes dades, una altra eina

Necessites un PC amb Windows i Power BI Desktop, el fitxer pokemon_df.csv de la pàgina de Recursos i les dades de connexió de la teva base de dades de classe.

Fes les tres vies d'aquesta pàgina i omple aquesta fitxa:

Camp Què cal escriure
Les tres caselles de la previsualització del CSV File origin, delimiter, data type detection
charmander, type_2 Què mostra Power BI, i què va mostrar Superset per a la mateixa cel·la
Els cinc paràmetres de connexió On ha anat a parar cadascun a la finestra de PostgreSQL
L'avís de xifratge Una frase: què no està protegit?
generation_id Què va fer Power BI amb les 147 cel·les que diuen NA?
Import i DirectQuery Dues diferències que has vist en pantalla

No tens cap PC amb Windows a casa? Fes la fitxa a partir dels apunts de classe, i respon l'última pregunta amb la taula comparativa.

Idees clau

  • Power BI Desktop és el programa de Microsoft per construir informes. Es pot descarregar gratis, només funciona a Windows i no té cap servidor pel mig: el resultat és un fitxer .pbix al teu PC.
  • Un connector és la versió de Power BI d'un driver amb un formulari al davant. Les fonts són les mateixes sis de sempre, i una base de dades continua demanant host, port, base de dades, usuari i contrasenya.
  • Import copia les dades al .pbix (la carmanyola); DirectQuery les deixa a la base de dades i hi torna a preguntar cada vegada (la recepta).
  • El consell de Microsoft és Import per defecte. DirectQuery és per a dades massa grans o que canvien massa de pressa per copiar-les, i només funciona amb alguns connectors.
  • Superset es comporta com DirectQuery: mai no conserva les teves files. Un CSV pujat a Superset es converteix en una taula de la base de dades; un CSV carregat a Power BI es converteix en una còpia dins de l'informe.
  • Dues eines poden llegir el mateix fitxer de manera diferent: NA va passar a NULL a Superset i es va quedar com a text a Power BI. Comprova sempre què ha fet l'eina.

Comprovació ràpida

1. Què és un connector a Power BI?
  • El cable entre el PC i el servidor
  • La peça de l'eina que sap parlar amb un tipus de font
  • Una consulta desada que Power BI executa cada matí
  • El fitxer on es desa l'informe

Un connector és la mateixa idea que un driver, amb un formulari al davant: un per a Text/CSV, un per a PostgreSQL, un per a Web, i així successivament. El fitxer on es desa un informe és el .pbix.

2. Carregues una taula amb Import i deses l'informe. On són ara les files?
  • Només a la base de dades
  • Als servidors de Microsoft
  • En una còpia dins del fitxer .pbix
  • En lloc: Power BI torna a preguntar a la base de dades per a cada gràfic

Import és la carmanyola: les files es copien al fitxer de l'informe. Tornar a preguntar a la base de dades per a cada gràfic és el que fa DirectQuery.

3. Quin mode de Power BI es comporta més com Superset?
  • Import, perquè totes dues conserven una còpia de les dades
  • DirectQuery, perquè totes dues deixen les dades a la base de dades i envien una consulta cada vegada
  • Cap: Superset també desa dades en fitxers .pbix
  • Tots dos, segons el gràfic

Superset és un client que mai no conserva les teves files: cada gràfic és una consulta a la base de dades. Això és exactament el que fa DirectQuery a Power BI.

4. A la finestra de PostgreSQL de Power BI, on va el host?
  • A la casella Database
  • A la casella Server
  • A la casella del nom d'usuari, després d'una @
  • En lloc: Power BI troba la base de dades per si sol

Power BI anomena el host Server. El port només s'afegeix (com a host:port) quan no és l'habitual 5432, el nom de la base de dades va a Database, i l'usuari i la contrasenya es demanen a la finestra següent.

5. El type_2 de Charmander és NULL a Superset i el text NA a Power BI. Totes dues llegeixen el mateix CSV. Quina és la lliçó?
  • Una de les dues eines té un error
  • El fitxer CSV va ser malmès per la segona eina
  • Cada eina pren les seves pròpies decisions quan llegeix un fitxer, així que has de comprovar què ha fet
  • NULL i NA són dos noms per exactament la mateixa cosa

El fitxer només conté les lletres NA. La càrrega de Superset les va convertir en un valor buit de veritat, NULL; Power BI les va conservar com a text. Un recompte de "Pokémon sense segon tipus" s'escriuria diferent a cada eina. Els mateixos ingredients, dos cuiners.

6. Per què Microsoft recomana Import per defecte?
  • Perquè DirectQuery costa diners addicionals
  • Perquè Import sempre mostra les dades més recents
  • Perquè els gràfics llegeixen una còpia local, així que és ràpid i funciona amb tots els connectors
  • Perquè DirectQuery no funciona amb bases de dades

Import és ràpid (els gràfics llegeixen la còpia) i tots els connectors el suporten. El seu preu és la frescor: les dades són tan velles com l'últim Refresh. DirectQuery és l'intercanvi oposat: actual, però més lent i limitat a alguns connectors, sobretot bases de dades.

7. La base de dades de vendes d'una botiga rep files noves cada minut i una pantalla de la botiga ha de mostrar les vendes d'avui ara mateix. Un professor té un CSV de 949 files que no canvia mai. Tria les dues opcions correctes.
  • La pantalla de la botiga usa DirectQuery: les dades es queden a la base de dades i cada gràfic hi torna a preguntar
  • La pantalla de la botiga usa Import: una còpia sempre està al dia
  • El CSV del professor s'importa: un fitxer només es pot importar, i una còpia de 949 files és petita i ràpida
  • El CSV del professor usa DirectQuery perquè es mantingui en directe

Les dades que canvien massa de pressa per a una còpia són el cas de DirectQuery. Un fitxer petit que no canvia mai és la carmanyola perfecta, i el connector Text/CSV només suporta Import de totes maneres.

Això tanca la Unitat 1: pots trobar una font, entrar-hi, demanar exactament el que necessites, desar el resultat, i fer-ho en dues eines diferents. Però el que has obtingut encara no està net. Ja has vist NA, NULL i una columna que no sabia què volia ser. A la unitat següent ho arregles: Unitat 2 · Neteja.