Add unique list of genres to Livebook

This commit is contained in:
Claudio Ortolina
2025-02-22 08:11:06 +00:00
parent 358dc10138
commit b44379134b
+25 -5
View File
@@ -20,9 +20,7 @@ opts = [
{:ok, conn} = Kino.start_child({Exqlite, opts})
```
## Aggregates
### Number of releases per record
## Number of releases per record
<!-- livebook:{"attrs":"eyJjYWNoZV9xdWVyeSI6dHJ1ZSwiY29ubmVjdGlvbiI6eyJ0eXBlIjoic3FsaXRlIiwidmFyaWFibGUiOiJjb25uIn0sImRhdGFfZnJhbWVfYWxpYXMiOiJFbGl4aXIuRXhwbG9yZXIuRGF0YUZyYW1lIiwicXVlcnkiOiJzZWxlY3RcbiAgZGlzdGluY3QganNvbl9leHRyYWN0KGFydGlzdHMsICckWzBdLm5hbWUnKSBBUyBhcnRpc3RfbmFtZSxcbiAgdGl0bGUsXG4gIGpzb25fYXJyYXlfbGVuZ3RoKHJlbGVhc2VfaWRzKSBBUyBudW1iZXJfb2ZfcmVsZWFzZXNcbmZyb20gcmVjb3Jkc1xub3JkZXIgYnkgbnVtYmVyX29mX3JlbGVhc2VzIGRlc2NcbjsiLCJyZXN1bHRfdmFyaWFibGUiOiJjb3VudF9ieV9yZWxlYXNlcyIsInRpbWVvdXQiOm51bGx9","chunks":null,"kind":"Elixir.KinoDB.SQLCell","livebook_object":"smart_cell"} -->
@@ -43,7 +41,7 @@ count_by_releases =
)
```
### Count of records per artist
## Count of records per artist
<!-- livebook:{"attrs":"eyJjYWNoZV9xdWVyeSI6dHJ1ZSwiY29ubmVjdGlvbiI6eyJ0eXBlIjoic3FsaXRlIiwidmFyaWFibGUiOiJjb25uIn0sImRhdGFfZnJhbWVfYWxpYXMiOiJFbGl4aXIuRXhwbG9yZXIuRGF0YUZyYW1lIiwicXVlcnkiOiJzZWxlY3QganNvbl9leHRyYWN0KGFydGlzdC52YWx1ZSwgJyQubmFtZScpIGFzIG5hbWUsIGNvdW50KDEpIGFzIGNcbmZyb20gcmVjb3JkcywganNvbl9lYWNoKHJlY29yZHMuYXJ0aXN0cykgYXJ0aXN0XG5ncm91cCBieSBuYW1lXG5vcmRlciBieSBjIGRlc2NcbjsiLCJyZXN1bHRfdmFyaWFibGUiOiJjb3VudF9ieV9hcnRpc3QiLCJ0aW1lb3V0IjpudWxsfQ","chunks":null,"kind":"Elixir.KinoDB.SQLCell","livebook_object":"smart_cell"} -->
@@ -72,7 +70,7 @@ VegaLite.new(width: 600, title: "Count by Artist")
|> VegaLite.encode_field(:y, "name", type: :nominal)
```
### Count of records by genre
## Count of records by genre
<!-- livebook:{"attrs":"eyJjYWNoZV9xdWVyeSI6dHJ1ZSwiY29ubmVjdGlvbiI6eyJ0eXBlIjoic3FsaXRlIiwidmFyaWFibGUiOiJjb25uIn0sImRhdGFfZnJhbWVfYWxpYXMiOiJFbGl4aXIuRXhwbG9yZXIuRGF0YUZyYW1lIiwicXVlcnkiOiJzZWxlY3QgZ2VucmUudmFsdWUsIGNvdW50KGdlbnJlLnZhbHVlKSBhcyBjXG5mcm9tIHJlY29yZHMsIGpzb25fZWFjaChyZWNvcmRzLmdlbnJlcykgZ2VucmVcbmdyb3VwIGJ5IGdlbnJlLnZhbHVlXG5vcmRlciBieSBjIGRlc2NcbjtcbiIsInJlc3VsdF92YXJpYWJsZSI6ImNvdW50X2J5X2dlbnJlIiwidGltZW91dCI6bnVsbH0","chunks":null,"kind":"Elixir.KinoDB.SQLCell","livebook_object":"smart_cell"} -->
@@ -109,3 +107,25 @@ VegaLite.new(width: 600, title: "Count by genre")
|> VegaLite.encode_field(:x, "c", type: :quantitative)
|> VegaLite.encode_field(:y, "value", type: :nominal)
```
## All unique genres
<!-- livebook:{"attrs":"eyJjYWNoZV9xdWVyeSI6dHJ1ZSwiY29ubmVjdGlvbiI6eyJ0eXBlIjoic3FsaXRlIiwidmFyaWFibGUiOiJjb25uIn0sImRhdGFfZnJhbWVfYWxpYXMiOiJFbGl4aXIuRXhwbG9yZXIuRGF0YUZyYW1lIiwicXVlcnkiOiJzZWxlY3QgZGlzdGluY3QgZ2VucmUudmFsdWVcbmZyb20gcmVjb3JkcywganNvbl9lYWNoKHJlY29yZHMuZ2VucmVzKSBnZW5yZVxuO1xuIiwicmVzdWx0X3ZhcmlhYmxlIjoiZ2VucmVzIiwidGltZW91dCI6bnVsbH0","chunks":null,"kind":"Elixir.KinoDB.SQLCell","livebook_object":"smart_cell"} -->
```elixir
genres =
Exqlite.query!(
conn,
~S"""
select distinct genre.value
from records, json_each(records.genres) genre
;
""",
[]
)
```
```elixir
Enum.join(genres.rows, ",")
```