GDELT データベースは、BigQuery を通じてアクセスすることができます。2.5 億におよぶデータをリアルタイムでクエリ、さらに、掘り下げて調べることが可能です。BigQuery の使い方についてですが、GDELT では、相関を計算するために使っています。相関を計算すると、例えば、2011 年のエジプト革命の前のタイムラインを追いかけ、他の国々で 35 年間に同様のパターンがなかったかを探すことが可能になります。
BigQuery を使うと、単一の SQL クエリで(GDELT チームはまさにそうやっているのですが)、わずか数分で 250 万以上の相関関係を走査することができるのです。データの一部でははく、GDELTの生データ全体を使うことによって、偉大なる発見をする場合があります。
GDELT チームは、次のようなクエリを走らせています。
SELECT
STRFTIME_UTC_USEC(a.ending_at, "%Y-%m-%d") ending_at1,
STRFTIME_UTC_USEC(b.ending_at-60*86400000000, "%Y-%m-%d") starting_at2,
STRFTIME_UTC_USEC(b.ending_at, "%Y-%m-%d") ending_at2,
a.country, b.country, CORR(a.c, b.c) corr, COUNT(*) c
FROM (
SELECT country, date+i*86400000000 ending_at, c, i
FROM [gdelt-bq:sample_views.country_date_matconf_numarts] a
CROSS JOIN (SELECT i FROM [fh-bigquery:public_dump.numbers_255] WHERE i < 60) b
) b
JOIN (
SELECT country, date+i*86400000000 ending_at, c, i
FROM [gdelt-bq:sample_views.country_date_matconf_numarts] a
CROSS JOIN (SELECT i FROM [fh-bigquery:public_dump.numbers_255] WHERE i < 60) b
WHERE country='Egypt'
AND date+i*86400000000 = PARSE_UTC_USEC('2011-01-27')
) a
ON a.i=b.i
WHERE a.ending_at != b.ending_at
GROUP EACH BY ending_at1, ending_at2, starting_at2, a.country, b.country
HAVING (c = 60 AND ABS(corr) > 0.254)
ORDER BY corr DESC
このクエリには、2つのサブクエリがあります。小さいほうは、2011年1月27日のエジプトの革命から30 日さかのぼったエジプトでの出来事について確認しています。左側のデータは、GDELT を通じて確認したエジプト革命の 30 日前の各国の状況です。最初のセットと、左側のセットを組み合わせることにより、BigQuery が100万を超える組み合わせがリアルタイムで計算されます。表示については、以下 IPython notebook をご確認ください。
BigQuery を実行させ、GDELT は、この 35 年間で、2011 年のエジプト革命に最も近い出来事を探し出しました。数学的あるいは統計的見地からそれらの出来事が最も近いと判断された後、GDELT チームが、それらがなぜ近いと判断されるかについて、深い研究をすすめます。GDELT のKalev による投稿をご覧下さい。
月に1テラバイトまでのデータ処理は無料ですので、GDELT データベースあるいは、公のデータセットを Google BigQuery を使って処理してみてください。
本件は、 Developer Advocate の Felipe Hoffa により8月13日に投稿されたものの抄訳です。