Salta el contingut

Filtres i filtres creuats

Exercici filters-and-cross-filters-annex.pdf · PDF

Obres la botiga de Steam i cerques un joc. Al costat dels resultats hi ha un panell: acota per preu, acota per etiqueta. Marques una casella i tota la llista canvia. No un sol joc. Tota.

El teu quadre de comandament (dashboard) Steam market diu que la mediana del preu és 4.99. Però el nostre estudi indie espera fer un èxit. És 4.99 la mediana del preu dels èxits? Ningú ho sap: el quadre de comandament només respon per a tot el mercat. Construeixes un segon quadre de comandament per als èxits? Un tercer per al 2018? No. Et quedes amb un sol quadre de comandament i deixes que el lector triï la porció.

Què aprendràs

  • Afegir un filtre Value i un filtre Time range a un quadre de comandament, i aplicar-los
  • Explicar un filtre com un WHERE que Superset escriu a cada gràfic del seu abast
  • Canviar l'abast d'un filtre perquè un gràfic l'ignori, i dir per què
  • Fer que un filtre depengui d'un altre
  • Fer servir el filtratge creuat clicant un gràfic, i distingir-lo d'un filtre de la barra
  • Evitar la trampa: per què un KPI filtrat pot ser un número cert amb una història falsa

Un control, tots els gràfics reaccionen

Un filtre (Superset l'anomena native filter, filtre natiu) és un control del quadre de comandament que deixa el lector quedar-se només amb algunes files. Cada gràfic que toca es torna a dibuixar només amb aquestes files.

És el panell de la botiga. Un control al costat, i tot de la pàgina l'obeeix.

Els filtres viuen a la barra de filtres (filter bar), la franja a l'esquerra del quadre de comandament. Afegeix el primer:

Pas Fes això Hauries de veure
1 Obre la barra de filtres: la fletxa a dalt de la franja estreta de l'esquerra La barra s'obre
2 Fes clic a la icona de l'engranatge → Add or edit filters El diàleg de filtres
3 Filter name: Owners tier. Filter Type: Value. Dataset: games_clean. Column: owners_tier. Save Un control anomenat Owners tier a la barra
4 A la barra, tria Hit i prem Apply filters Tota la fila de KPI canvia

Mira la fila superior abans i després:

KPI Tot el mercat Amb Owners tier = Hit
Games 26,685 623
Free share 11.6% 29.2%
Median price 4.99 9.99
Hits 623 623

Aquí tens la resposta per a l'estudi. Entre els èxits, la mediana del preu és 9.99: el doble de la mediana del mercat. I gairebé un terç dels èxits són gratuïts.

Compte: triar no és aplicar

Tries un valor i no passa res. És normal: els gràfics esperen fins que prems Apply filters al peu de la barra. El mateix val per a Clear all. Buida els controls, però els gràfics conserven el filtre antic fins que tornes a aplicar.

El WHERE amagat

Com va saltar la mediana de 4.99 a 9.99? Obre els tres punts del KPI Games → View query. Superset mostra l'SQL que hi ha darrere del gràfic, i hi ha una línia nova:

WHERE owners_tier IN ('Hit')

Aquesta clàusula la tens escrita a mà des de la Unitat 1 (SQL Lab: filtres). Un filtre de quadre de comandament no és res més que un WHERE que Superset escriu per al lector, a la consulta de cada gràfic que toca.

flowchart LR
    R["<b>Lector</b><br>tria Hit,<br>prem Apply filters"] --> F["<b>Filtre</b><br>Owners tier"]
    F -- "afegeix WHERE owners_tier IN ('Hit')" --> Q1["<b>Consulta</b> del KPI Games"]
    F -- "afegeix el mateix WHERE" --> Q2["<b>Consulta</b> del KPI Median price"]
    F -- "afegeix el mateix WHERE" --> Q3["<b>Consulta</b> del gràfic de línies"]
    Q1 --> D[("<b>Base de dades</b><br>games_clean")]
    Q2 --> D
    Q3 --> D

Ho pots demostrar sense el quadre de comandament. Executa tu mateix els quatre KPI a SQL Lab amb aquest WHERE:

SELECT COUNT(*) AS games,
       ROUND(100 * AVG(is_free::int), 1) AS free_pct,
       PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY price) AS median_price,
       COUNT(*) FILTER (WHERE owners_tier = 'Hit') AS hits
FROM games_clean
WHERE owners_tier IN ('Hit');
games free_pct median_price hits
623 29.2 9.99 623

Els mateixos números que al quadre de comandament. Cap màgia: una consulta.

Compte: un filtre no amaga, recalcula

"El filtre amaga algunes dades de la pantalla." Fa més que això. Cada gràfic executa la seva consulta una altra vegada amb un WHERE més. Una mediana no es pot "amagar": s'ha de tornar a calcular sobre les 623 files que queden. Per això canvia.

Dos tipus de filtre: Value i Time range

Tipus de filtre El lector tria Bo per a El nostre exemple
Value Un o més valors d'una columna, d'una llista Categories owners_tier = Hit, price_band = Free
Time range Una data d'inici i una data de final Qualsevol cosa amb data Jocs publicats el 2018

Un filtre Time range demana més cura, per com funciona el final. Per quedar-te amb els jocs del 2018:

Pas Fes això Hauries de veure
1 Add or edit filters → Add filter. Filter Type: Time range. Nom: Release date. Save Un control que diu No filter
2 Fes-hi clic. Range type: Custom Les caselles de data
3 Canvia Start (inclusive) a Specific Date/Time i escriu 2018-01-01. A End (exclusive) escriu 2019-01-01 Les dues dates fixades
4 Prem APPLY, després Apply filters Games diu 8,845 i Hits diu 37

Torna a llegir les dues etiquetes: l'inici és inclusiu (inclusive), el final és exclusiu (exclusive). La data d'inici hi és dins. La data de final, fora. Així que "tot el 2018" acaba a 2019-01-01, no a 2018-12-31. En SQL és la parella que ja coneixes:

WHERE release_date >= '2018-01-01' AND release_date < '2019-01-01'

Si el teu KPI Games s'acosta a 8,845 però no hi coincideix, les teves dates tenen un dia de diferència.

Abast: qui obeeix el filtre

Amb el 2018 aplicat, mira el gràfic de línies de jocs per any. Ara té un sol punt. Un gràfic d'història amb un any d'història no serveix per a res.

Hauria cada gràfic d'obeir cada filtre? No.

L'abast (scope) d'un filtre és el conjunt de gràfics que toca. Un gràfic fora de l'abast ignora del tot el filtre.

A la botiga, el panell de preu canvia la llista de resultats, però no el bàner de dalt de la pàgina. El bàner és fora de l'abast.

Pas Fes això Hauries de veure
1 Add or edit filters → selecciona Release date → Scoping Un arbre de gràfics sota All panels
2 Desmarca el gràfic de línies. Save El diàleg es tanca
3 Si en desar Release date ha tornat a No filter, fixa el 2018 una altra vegada i prem Apply filters Els KPI diuen 8,845, i la línia continua anant del 2004 al 2018
flowchart LR
    F["<b>Filtre</b><br>Release date = 2018"]
    subgraph IN ["<b>Dins de l'abast</b>: recalculats per al 2018"]
        K["Els quatre KPI"]
        P["Gràfic de franja de preu"]
    end
    subgraph OUT ["<b>Fora de l'abast</b>: sense canvis"]
        L["Gràfic de línies<br>jocs per any, del 2004 al 2018"]
    end
    F -- "afegeix el seu WHERE" --> IN
    F -. "ignorat" .-> OUT

Compte: un filtre no sempre toca tot el quadre de comandament

Com a lector, no suposis mai que tots els gràfics de la pantalla mostren la mateixa porció. Com a autor, si treus un gràfic de l'abast, fes-ho evident: una capçalera com The whole period, 2004–2018 damunt del gràfic de línies estalvia al lector una conclusió equivocada.

Filtres dependents: una llista que s'encongeix

Afegeix un filtre Value anomenat Publisher sobre la columna publisher. Obre'l i desplaça't. La llista no s'acaba mai: la taula té 13,951 editors diferents.

SELECT COUNT(DISTINCT publisher) AS publishers,
       COUNT(DISTINCT publisher) FILTER (WHERE owners_tier = 'Hit') AS with_a_hit
FROM games_clean;
publishers with_a_hit
13951 336

Només 336 d'ells han publicat mai un èxit. Si el lector ja ha triat Hit, per què mostrar els altres tretze mil?

Un filtre dependent és un filtre la llista de valors del qual es redueix per l'elecció feta en un altre filtre.

Imagina el panell de la botiga fent el mateix: quan marques un gènere, la llista d'editors només ofereix els que tenen un joc d'aquest gènere.

Pas Fes això Hauries de veure
1 Afegeix un filtre Value anomenat Publisher sobre la columna publisher Un control nou
2 A la seva configuració, marca Values are dependent on other filters i tria Owners tier. Save El diàleg es tanca
3 Clear all, Apply filters. Obre Publisher 1000 options
4 Tria Owners tier = Hit. Obre Publisher una altra vegada 336 options: només editors que tenen un èxit
5 Tria Valve i prem Apply filters Games diu 22

Dos detalls. Primer, l'opció Values are dependent on other filters només apareix quan el quadre de comandament ja té un altre filtre. Segon, per què 1000 options i no 13,951? Un filtre carrega com a màxim 1,000 valors, en ordre alfabètic. Sense la dependència, Valve ni tan sols és a la llista. Amb Hit triat, sí. Valve és l'editor amb més èxits: 22.

Filtratge creuat: el gràfic és el control

Fins ara, tu, l'autor, has decidit quines preguntes pot fer el lector. Però un lector que mira el gràfic de sectors de franges de preu es pot preguntar: i només els jocs gratuïts? No hi ha cap filtre per a això. Ha de preguntar-t'ho a tu?

El filtratge creuat (cross-filtering) vol dir clicar una part d'un gràfic (un sector, una barra) per filtrar els altres gràfics del quadre de comandament per aquest valor.

A la botiga, és clicar una etiqueta a la pàgina d'un joc: sense panell, només cliques el que estàs mirant.

Pas Fes això Hauries de veure
1 Clear all, Apply filters. Al menú de l'engranatge, comprova que Enable cross-filtering està marcat Està marcat per defecte
2 Fes clic al sector Free del teu gràfic de sectors de franja de preu Els altres gràfics reaccionen. La barra mostra la selecció sota Cross-filters
3 Llegeix els KPI. Després torna a clicar el sector Games 3,094 i Hits 182, i després de nou tot el mercat

No tots els gràfics es poden clicar

Un Bar Chart amb les franges de preu a l'eix X no reacciona als clics. Si és el que tens: tres punts → Edit chart, canvia el tipus de gràfic a Pie Chart amb Dimensions price_band, i desa'l com un gràfic nou anomenat UT4 · Price band pie. Després afegeix-lo a Steam market.

Per sota, un filtre creuat fa el mateix que un filtre: afegeix un WHERE als altres gràfics. La diferència és qui mana.

Filtre a la barra Filtre creuat
Qui el prepara L'autor, per endavant Ningú: el lector clica un gràfic
Bo per a Les preguntes que t'esperes (nivell, any) La pregunta que surt mentre mires
Es veu com a Un control amb nom, sempre allà Una etiqueta sota Cross-filters, que desapareix amb un clic

Compte: més filtres no és un millor quadre de comandament

Cada filtre és una pregunta que t'esperes que faci el lector. Deu controls que ningú no fa servir són soroll, exactament com deu gràfics que ningú no llegeix. Dos o tres bons filtres guanyen una paret de menús desplegables.

La trampa del 2018: un número cert, una història falsa

Posa les quatre porcions una al costat de l'altra:

KPI Tot Hit 2018 Free
Games 26,685 623 8,845 3,094
Free share 11.6% 29.2% 12.1% 100.0%
Median price 4.99 9.99 3.99 0.00
Hits 623 623 37 182

Mira la columna del 2018. Aquell any té un terç de tots els jocs de la taula (8,845 de 26,685) però només 37 dels 623 èxits. Els jocs del 2018 eren pitjors?

No. Eren més joves. Un joc publicat el desembre del 2018 només va tenir setmanes per trobar propietaris quan es van recollir les dades. Un joc del 2012 en va tenir sis anys. El filtre va canviar l'any, i alguna cosa més va canviar amb ell sense avisar-te: el temps que cada joc va tenir per vendre.

El número 37 és cert. La història "els jocs del 2018 són pitjors" és falsa. El filtre te'ls va donar tots dos.

Dos hàbits et protegeixen:

  • Digues què s'ha filtrat abans de citar el número. No "la mediana del preu és 9.99", sinó "entre els 623 jocs amb almenys un milió de propietaris, la meitat costen 9.99 o menys, el doble de la mediana de tot el mercat".
  • Pregunta què més ha canviat amb el filtre. Una porció rarament és diferent d'una sola manera.

Si els KPI semblen encallats en números vells

Un filtre o un filtre creuat encara és actiu. Prem Clear all, després Apply filters, i mira sota Cross-filters si hi ha una selecció oblidada.

Idees clau

  • Un filtre és un control de la barra de filtres que deixa el lector triar una porció. No canvia res fins que es prem Apply filters.
  • Un filtre és un WHERE amagat: cada gràfic del seu abast torna a executar la seva consulta. Comprova-ho amb View query.
  • Els filtres Value trien categories; els filtres Time range trien dates, amb un inici inclusiu i un final exclusiu.
  • L'abast decideix quins gràfics obeeixen. Treu un gràfic quan el filtre el deixaria inútil, com la línia d'història.
  • Un filtre dependent redueix la seva llista segons un altre filtre. El filtratge creuat deixa el lector filtrar clicant un gràfic.
  • Un KPI filtrat pot ser un número cert amb una història falsa: digues què s'ha filtrat, i pregunta què més ha canviat amb ell.

Comprovació ràpida

1. Què fa Superset als gràfics quan el lector aplica un filtre?
  • Amaga una part de cada gràfic a la pantalla sense tocar les dades
  • Afegeix un WHERE a la consulta de cada gràfic de l'abast del filtre i torna a executar les consultes
  • Esborra de la taula les files que no coincideixen
  • Crea una còpia del quadre de comandament per a aquesta porció

Un filtre és un WHERE amagat. Cada gràfic de l'abast consulta la base de dades una altra vegada, i per això una mediana pot canviar de 4.99 a 9.99. La taula en si no es modifica mai.

2. Tries Hit al filtre Owners tier i els KPI no es mouen. Quina és la raó més probable?
  • El filtre només funciona amb gràfics de sectors
  • El quadre de comandament és en mode de visualització
  • No has premut Apply filters
  • Els filtres Value necessiten un segon filtre per funcionar

Triar un valor només omple el control. Els gràfics esperen Apply filters. El mateix passa després de Clear all.

3. Vols exactament els jocs publicats el 2018 amb un filtre Time range. Quines dates escrius?
  • Inici 2018-01-01, final 2018-12-31
  • Inici 2018-01-01, final 2019-01-01
  • Inici 2017-12-31, final 2018-12-31
  • Inici 2018-01-01, final 2018-01-01

L'inici és inclusiu i el final és exclusiu: la mateixa data de final queda fora. Acabar a 2018-12-31 deixaria fora els jocs publicats l'últim dia de l'any.

4. Amb el filtre del 2018 activat, el teu gràfic de línies de jocs per any mostra un sol punt. Quina és la solució correcta?
  • Esborrar el gràfic de línies del quadre de comandament
  • Esborrar el filtre Release date
  • Canviar l'abast del filtre perquè el gràfic de línies l'ignori
  • Convertir el gràfic de línies en un Big Number

L'abast és el conjunt de gràfics que toca un filtre. Desmarca el gràfic de línies a Scoping i continua mostrant del 2004 al 2018 mentre els KPI segueixen el filtre.

5. El filtre Publisher diu '1000 options'. Després de triar Owners tier = Hit diu '336 options'. Per què?
  • Superset ha tret els editors amb noms llargs
  • Els altres editors s'han esborrat de games_clean
  • Publisher és un filtre dependent: la seva llista es redueix als editors que tenen almenys un èxit
  • Un filtre mai no pot mostrar més de 336 valors quan hi ha un altre filtre actiu

Un filtre dependent pren la seva llista de les files que deixa un altre filtre. Només 336 dels 13,951 editors tenen un èxit, així que la llista s'encongeix i Valve és fàcil de trobar.

6. Quina és la diferència principal entre un filtre de la barra i un filtre creuat?
  • Un filtre canvia les consultes; un filtre creuat només canvia colors
  • Un filtre creuat és permanent; un filtre desapareix quan cliques
  • Un filtre només funciona amb dates; un filtre creuat només amb números
  • Un filtre l'autor el prepara per endavant; un filtre creuat l'improvisa el lector clicant un gràfic

Tots dos afegeixen un WHERE als altres gràfics. La diferència és el propietari: l'autor dissenya filtres per a les preguntes que s'espera, i el filtratge creuat serveix la pregunta que surt mentre es mira.

7. Un quadre de comandament de notes de l'escola té aplicat el filtre 'Group = 2n DAM' i mostra 'Average mark: 7.8'. Tria les dues coses que has de fer abans de repetir aquest número.
  • Dir què s'ha filtrat: és la mitjana de 2n DAM, no de l'escola
  • Res: un número d'un quadre de comandament sempre és sobre totes les dades
  • Preguntar què més canvia amb el filtre, per exemple quants alumnes o quines assignatures hi ha darrere d'aquesta mitjana
  • Treure la barra de filtres perquè ningú no pugui canviar el número

Aquesta és la trampa del 2018 amb un altre vestit. Un KPI filtrat només és cert per a la seva porció, i una porció sol diferir en més d'una cosa. Digues què s'ha filtrat i pregunta què més ha canviat.

El teu quadre de comandament ara respon moltes preguntes en lloc d'una. Però fins ara només el pots veure tu. A continuació: Publicació i permisos, o qui pot obrir la teva feina.