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
WHEREque 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
WHEREamagat: 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.