初めまして、2月よりKIYONOに入社したエンジニアの山下です。
本記事は、SQL、BigQuery初学者が’spotifyオープンデータを用いた2023年チャート分析’をおこなったものになります。
-
オープンデータについて
本記事で用いたデータはkaggle上で公開されている2023年のSpotifyのTopチャートを蓄積したデータを利用致します。
https://www.kaggle.com/datasets/nelgiriyewithana/top-spotify-songs-2023
上記のデータは2023/05/18〜2024/02/25までのspotifyの各国のTop50チャートが1日ごとにデータ化されています。
本データでは下記のように変数が格納されています。 これらの関数を使って分析を行なっていきます。変数詳細
date: 日付 position: 順位 song: 曲名 artist: アーティスト名 popularity: 人気度 duration_ms: 再生時間 album_type: シングル or アルバム total_tracks: トラック数 release_date: リリース日 album_cover_url: ジャケ写
-
分析プラットフォーム
分析プラットフォームはGoogle BigQueryを用います。
今回のデータはcsv形式のローカルデータですので、手順に従いアップロードしていきます。アップロードが完了したら、いよいよクエリをを書いて目的のデータの抽出を行います。 -
今回集計する項目
jp, us, uk Regionごとの
1. アーティストごとのチャートTop50に入った楽曲数
2. 連続してTop1を取った日数
3. 1週間ごとの楽曲チャートTop10推移上記3項目を抽出するようなクエリを書いていきましょう
集計結果
1. アーティストごとのチャートTop50に入った楽曲数
--楽曲名の重複は認めず、アーティストごとに楽曲数を集計します
select
artist,
count(distinct song) as chart_in_count
from
your_table
group by
1
order by
2 desc
非常にコンパクトなクエリで抽出できますね。
クエリ結果は下記の通り
以下は各リージョンごとの集計結果です。
日本では最もチャートインした楽曲の多いアーティストでも10曲ですが、英語圏ではTaylor Swiftが60曲近くチャートインするなど、チャートの傾向が違うことが見て取れますね。
英語圏では、長い期間活動しているアーティストの楽曲が広く愛されていること解釈できていいですね。
日本
アメリカ
イギリス
2. 連続してTop1を取った日数
--連続してTop1を取った日数
with ranked_days as (
select
date,
song,
artist,
--次に1位を取る日の抽出
lead(date) over (partition by song, artist order by date) as next_date
from
your_table
where
date between '2023-05-18' and '2024-02-25'
and position = 1
),
differences as (
select
song,
artist,
date,
next_date,
--現在日時と次に1位を取る日の差分の抽出
date_diff(next_date, date, day) as diff
from
ranked_days
),
grouped as (
select
song,
artist,
date,
--現在日時と次に1位を取る日の差分が1日の場合は0を、それ以外の場合は1を返します(連続して1位を取っているか否か)
if(diff = 1, 0, 1) as is_break,
--同一の楽曲が連続して1位を取っている区間を0, 1, 2, 3, 4.....と数値を割り振ります
sum(if(diff = 1, 0, 1)) over (partition by song, artist order by date) as groupid
from
differences
),
consecutivetopdays as (
select
song,
artist,
--下2行のクエリでそれぞれの同一の楽曲が連続して1位を取っている区間の合計日数を抽出
groupid,
count(*) as consecutivedays
from
grouped
group by
1, 2, 3
),
maxconsecutivetopdays as (
select
song,
artist,
--同一の楽曲が連続して1位を取っている区間の最大値の抽出
max(consecutivedays) as maxconsecutivedays
from
consecutivetopdays
group by
1, 2
)
select
song,
artist,
maxconsecutivedays
from
maxconsecutivetopdays
order by
3 desc
クエリ結果は下記の通り
以下は各リージョンごとの集計結果です。
今回の集計期間は283日間ですが、
日本のチャート1位を連続で取っていた上位2楽曲のみで140日以上居座り続けました。また、1位を取った楽曲は7種類と楽曲の人気にかなり偏りがあることが伺えます。
アメリカは最大でも1ヶ月程度しかチャート1位を連続取り続ける楽曲がありません。
イギリスを比較すると、一部の楽曲がチャート1位を連続して取っており日本とかなり傾向が似ています。
日本
アメリカ
イギリス
3. 1週間ごとの楽曲チャートTop10推移
集計期間は283日間ありますが、全ての日程でプロットすると視覚的に認識し辛くなるので毎週月曜日のチャートTop10を取得します。
select
date,
position,
song,
artist
from
your_table
where
date between '2023-05-18' and '2024-02-25'
--月曜日のデータのみを抽出
and extract(dayofweek from date) = 2
and position between 1 and 10
order by
1, 2 asc
クエリ結果は下記の通り
日本のチャートTop10に入る楽曲数は少なく、一部の楽曲が長期間Topチャートに居座り続けることが見て取れます。
イギリスのTop10は日本に比べ、楽曲数は多いですが、1位に注目すると日本と同様に一部の楽曲が居座り続けることになります。
一方、アメリカはTop10に入る楽曲数も最も多く、1位も頻繁に入れ替わっています。多様性の国だということもトップチャートからも伺えますね!
日本
アメリカ
イギリス
終わりに
今回調べたデータから各国の音楽チャートの傾向の一部を見ることが出来ました。
以下は今回のデータを踏まえた所感です。
日本:チャートインした楽曲数も少なく、トップチャートは一部の楽曲が支配することが伺えました。無名なアーティストから見るとトップチャート入りすることは難しいですが、人気が出れば長い期間音楽シーンを支配し続けることができます。人気が出る楽曲もアニメやメディアなどのタイアップ曲が多く、メディアミックスでの展開が勝ち残るためには必要なことが伺えました。
アメリカ:チャートインした楽曲数は最多で、チャートの移り変わりも最も激しい地域になりました。多国籍国家らしさもチャートから伺うことが出来きたのは非常に面白い結果となったと感じます。一方で、人気のアーティストの楽曲はリリースから時間がたってもチャートインするなど、アーティストが長く愛されていることを感じ取れました。
イギリス:日本とアメリカのチャートの傾向を足して二で割ったような特徴が伺えました。チャートインした楽曲数も多く、人気のアーティスト(Taylor Swiftは英米ともに大人気ですねw)の楽曲はリリースから時間がたってもチャートインするなどアメリカのチャートの傾向と似ていました。
しかし、1位の楽曲は日本と同様に1部の楽曲が支配し続けました。
また、アメリカと同じ英語圏ではあってもその時に流行る楽曲は異なりました。
以上で、本記事を終了とさせていただきます。
このような身近なオープンデータを用いた分析も非常に楽しいですね!
google cloud/Analytics Hub、kaggle、各種サービスなどが面白いオープンデータを公開していることがあるので気になるデータに触れてみることも面白いかと思います。
コメント