Something I’ve had on my development bucket list for a while now is to do something with big datasets. Just something simple as to be frank I don’t have the intelligence to dabble in anything overly complex. One thing that I’ve always had an interest in is Politics and by extension the news. I’m one of those boring types who likes to look at political and cultural trends and try to understand the reasons behind events.
I’ve read up a bit on Gdelt lately and thought it could be an interesting little project to work with. But what is Gdelt?
“The Global Database of Events, Language and Tone is one of the largest datasets on the planet. It is the quantitative database of human society, relying on thousands of news sources from every corner of the globe dating back to 1979.” (See https://www.gdeltproject.org/)
“The GDELT 2.0 Event Database is a global catalog of worldwide activities (“events”) in over 300 categories from protests and military attacks to peace appeals and diplomatic exchanges. Each event record details 58 fields capturing many different attributes of the event. The GDELT 2.0 Event Database currently runs from February 2015 to present, updated every 15 minutes and is comprised of 326 million mentions of 103 million distinct events as of February 19, 2016. This dataset uses machine translation coverage of all monitored content in 65 core languages, with a sample of an additional 35 languages hand translated. It also expands upon GDELT 1.0 by providing a separate MENTIONS table that records every mention of each event, along with the offset, context and confidence of each of those mentions.”
And whats great about GDelt is the fact that its accessible via Google BigQuery, “Google’s powerful cloud-based analytical database service”.
BigQuery is basically the world’s fastest SQL engine. Due to the sheer power of BigQuery, you can get results on GDELT queries incredibly fast.
This is incredibly impressive because it has opened up opportunities never before seen in the analysis of large scale societal/cultural/political events.
“Imagine computing the most significant conflict interaction in the world by month over the past 35 years, or performing cross-tabbed correlation over different classes of relationships between a set of countries. Such queries can be run entirely inside of BigQuery and return in just a handful of seconds. This enables you to try out “what if” hypotheses on global-scale trends in near-real time.”
At present, GDELT on BigQuery is updated every 15 minutes so its an incredibly reliable and accurate tool for analysis.
But beware using GDelt via BigQuery is expensive. See here and keep in mind you can always pay for more if you actually develop a commercially viable application on top of this data. Its also worth noting new developer accounts with BigQuery can get a generous 300 euro free allowance to play with.
So with all that said, lets get on with it and see what we can do
Set up an Account for BigQuery
If you want to use BigQuery to access GDELT from within an application, you will be using Google’s Cloud Platform via the Google Dev Console.
First things first, you will need a Google account. If you don’t have one, you have to create it. Then, enter your console where you will be asked to create a project if you don’t already have one.
Check out the console. In the top left you’ll see a hamburger menu (an icon with three horizontal lines) that gives access to all parts of the platform.
Using your project, go to the API library and enable the BigQuery API.
Next, create a service account for your project and give this account the role of BigQuery User. This allows it to run queries. You can change permissions later on the IAM tab. For “member”, select your service account ID.
Your service account allows you to create a key (via a dropdown menu), a JSON file that you download and save in a secure place. You need this file!!! DO NOT LOSE IT!!!
Finally, you need to set up a billing account for your project. You’ll get a free allowance to get you started but beware once you use it up you’ll be charged for any further queries. Its worth noting that the BigQuery interface will give an indication of how much data your query is likely to process. So if you see a query thats going to process 1TB of data, maybe rethink running that one.
The NodeJS App
So we’ve got our Google Console BigQuery account set up, basically we can now look at how we’d access the data with a NodeJs App.
We won’t go into the nitty gritty of building a simple NodeJS app as its outside the scope of this post.
But what I will show is the code for a route we can use within an express( https://expressjs.com/ ) node app. Basically we can use a route with express so that a client application can hit a url i.e myapplication.com/test/bigquery and this will return some data from gdelt.
Heres some example code for a route we can add to our Node app.
var express = require('express');
var router = express.Router();
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();
bigquery.projectId = 'project-gdelt-250421'
bigquery.keyFilename = 'PATH TO YOUR KEY FILE'//i.e './bigQueryKeyFile.json'
var options = {}
router.post('/', function(req, res, next) {
console.log('in here')
var rrows = []
var tableName = '`gdelt-bq.gdeltv2.gkg`'
var queryName = req.body.data
var query = `SELECT V2Themes from ${tableName} where DATE>20190801000000 and DATE < 20190830000000 and V2Persons like '%${queryName}%' limit 10;`
bigquery.query(query,options).then( (rows)=> {
if(rows){
rows.forEach(function (row) {
var rowJson = row;
rowJson.ActionGeo_Lat = parseFloat(rowJson.ActionGeo_Lat);
rowJson.ActionGeo_Long = parseFloat(rowJson.ActionGeo_Long);
rowJson.AvgTone = parseFloat(rowJson.AvgTone);
rowJson.EventCode = rowJson.EventCode;
//rowJson.sourceFile = datafile;
rowJson.globaleventid = rowJson.GLOBALEVENTID;
rrows.push(rowJson);
});
res.send(rrows)
}
})
});
module.exports = router;
So theres a few things happening in here, the main points being :
We require and then create an instance of the BigQuery Client API library. This allows us to call BigQuery methods from our NodeJS app.
*Note – We have to add the BigQuery client api to our NodeJS dependencies. You can do that by running “npm install @google-cloud/bigquery –save”
We also configure some properties of the bigquery object. We set the projectid from the google console project we created earlier. And we also specify the path to the JSON file you downloaded when creating your BigQuery service account. You can put your key file wherever you want, just remember not to push it to your github directory etc…
To access the BigQuery data we’ll make a call within a router.post method. Basically within our client app we’ll hit the url route of our node app which calls out to BigQuery and gets some data based on an SQL Query we pass to it.
In the above example we’re calling a post method with a body. This example is fairly simple and expects a persons name to be sent as the body of the request. The query then selects all the “theme” values associated with that named person(with a limit of 10 news events) for the month of August in 2019. These themes are basically topics Gdelt identifies as being associated with that person in the news.
An example call might be
this.http.post('http://myapp/themes', {data:'Varadkar'})
And an example output of this would be
[
[
{
"V2Themes": "GENERAL_GOVERNMENT,33;GENERAL_GOVERNMENT,157;GENERAL_GOVERNMENT,571;GENERAL_GOVERNMENT,880;EPU_POLICY_GOVERNMENT,33;EPU_POLICY_GOVERNMENT,157;EPU_POLICY_GOVERNMENT,571;EPU_POLICY_GOVERNMENT,880;CRISISLEX_O01_WEATHER,273;UNGP_TRANSPORTATION_ROADS,750;CRISISLEX_CRISISLEXREC,455;CRISISLEX_C04_LOGISTICS_TRANSPORT,293;NATURAL_DISASTER_SEVERE_WEATHER,262;NATURAL_DISASTER_ICE,998;"
},
{
"V2Themes": "MANMADE_DISASTER_RESTORE_POWER,8018;MANMADE_DISASTER_WITHOUT_ELECTRICITY,7602;MANMADE_DISASTER_WITHOUT_ELECTRICITY,18460;MANMADE_DISASTER_WITHOUT_ELECTRICITY,18574;MANMADE_DISASTER_WITHOUT_ELECTRICITY,19327;POWER_OUTAGE,7602;POWER_OUTAGE,18460;POWER_OUTAGE,18574;POWER_OUTAGE,19327;TAX_FNCACT_TENANTS,1093;MANMADE_DISASTER_TRAFFIC_COLLISION,13732;MANMADE_DISASTER_SERVICE_DISRUPTION,17325;NATURAL_DISASTER_BLIZZARD,132;NATURAL_DISASTER_BLIZZARD,12942;NATURAL_DISASTER_SEVERE_WEATHER,1673;NATURAL_DISASTER_SEVERE_WEATHER,4386;NATURAL_DISASTER_SEVERE_WEATHER,6086;NATURAL_DISASTER_SEVERE_WEATHER,6286;NATURAL_DISASTER_SEVERE_WEATHER,8751;NATURAL_DISASTER_SEVERE_WEATHER,17351;NATURAL_DISASTER_SEVERE_WEATHER,23163;MANMADE_DISASTER_IMPLIED,23;MANMADE_DISASTER_IMPLIED,3784;MANMADE_DISASTER_IMPLIED,6186;MANMADE_DISASTER_IMPLIED,7081;MANMADE_DISASTER_IMPLIED,21307;MANMADE_DISASTER_IMPLIED,21375;"
},
{
"V2Themes": "RURAL,3152;TAX_FNCACT_WOMAN,1213;TAX_FNCACT_WOMAN,1412;TAX_FNCACT_WOMAN,1617;TAX_DISEASE_DEMENTIA,1631;TAX_WORLDLANGUAGES_DANISH,1585;TAX_DISEASE_DISEASES,1161;WB_1406_DISEASES,1161;WB_621_HEALTH_NUTRITION_AND_POPULATION,1161;UNGP_HEALTHCARE,1161;CRISISLEX_T01_CAUTION_ADVICE,867;LEADER,781;TAX_FNCACT_PRIME_MINISTER,781;BORDER,3739;TAX_FNCACT_EMPLOYERS,3492;WB_2690_CATEGORIES_OF_EMPLOYMENT,3492;WB_2670_JOBS,3492;WB_2689_JOBS_DIAGNOSTICS,3492;WB_2704_EMPLOYER,3492;PUBLIC_TRANSPORT,518;KILL,1314;CRISISLEX_T02_INJURED,1314;CRISISLEX_T03_DEAD,1314;REFUGEES,1248;EPU_CATS_MIGRATION_FEAR_MIGRATION,1248;DISABILITY,1176;WB_1458_HEALTH_PROMOTION_AND_DISEASE_PREVENTION,1176;WB_635_PUBLIC_HEALTH,1176;WB_1464_HEALTH_OF_THE_DISABLED,1176;WB_168_ROADS_AND_HIGHWAYS,333;WB_168_ROADS_AND_HIGHWAYS,1897;WB_168_ROADS_AND_HIGHWAYS,3224;WB_1809_HIGHWAYS,333;WB_1809_HIGHWAYS,1897;WB_1809_HIGHWAYS,3224;NATURAL_DISASTER_BLIZZARDS,603;WB_1609_FOOD_AND_IN_KIND_TRANSFERS,1120;WB_1620_ELDERLY,1120;WB_1466_SOCIAL_ASSISTANCE,1120;WB_1618_FOOD_DISTRIBUTION,1120;WB_697_SOCIAL_PROTECTION_AND_LABOR,1120;SECURITY_SERVICES,1592;SECURITY_SERVICES,1834;SECURITY_SERVICES,3008;TAX_FNCACT_POLICE,1592;TAX_FNCACT_POLICE,1834;TAX_FNCACT_POLICE,3008;CRISISLEX_C07_SAFETY,1592;CRISISLEX_C07_SAFETY,1834;CRISISLEX_C07_SAFETY,3008;NATURAL_DISASTER_COLD_SNAP,176;NATURAL_DISASTER_HEAVY_SNOW,354;TAX_ETHNICITY_IRISH,498;TAX_ETHNICITY_IRISH,766;TAX_WORLDLANGUAGES_IRISH,498;TAX_WORLDLANGUAGES_IRISH,766;CRISISLEX_O02_RESPONSEAGENCIESATCRISIS,2974;GENERAL_GOVERNMENT,3462;EPU_POLICY_GOVERNMENT,3462;NATURAL_DISASTER_EXTREME_COLD,171;WB_566_ENVIRONMENT_AND_NATURAL_RESOURCES,1360;WB_1777_FORESTS,1360;WB_590_ECOSYSTEMS,1360;UNGP_FORESTS_RIVERS_OCEANS,1360;NATURAL_DISASTER_HIGH_WINDS,18;NATURAL_DISASTER_HIGH_WINDS,367;CRISISLEX_O01_WEATHER,18;CRISISLEX_O01_WEATHER,367;EPU_POLICY_POLITICAL,2683;MEDIA_MSM,1393;MANMADE_DISASTER_IMPLIED,503;TAX_WORLDLANGUAGES_SWEDISH,1185;WB_678_DIGITAL_GOVERNMENT,1191;WB_694_BROADCAST_AND_MEDIA,1191;WB_133_INFORMATION_AND_COMMUNICATION_TECHNOLOGIES,1191;AFFECT,315;CRISISLEX_C04_LOGISTICS_TRANSPORT,315;SOC_POINTSOFINTEREST_HOSPITAL,1330;CRISISLEX_C03_WELLBEING_HEALTH,1330;SOC_CHRONICDISEASE,1161;WB_1427_NON_COMMUNICABLE_DISEASE_AND_INJURY,1161;SOC_POINTSOFINTEREST_AIRPORTS,45;SOC_POINTSOFINTEREST_AIRPORTS,242;SOC_POINTSOFINTEREST_AIRPORTS,1879;SOC_POINTSOFINTEREST_AIRPORTS,2193;SOC_POINTSOFINTEREST_AIRPORTS,2279;SOC_POINTSOFINTEREST_AIRPORTS,2300;WB_135_TRANSPORT,45;WB_135_TRANSPORT,242;WB_135_TRANSPORT,1879;WB_135_TRANSPORT,2193;WB_135_TRANSPORT,2279;WB_135_TRANSPORT,2300;WB_1803_TRANSPORT_INFRASTRUCTURE,45;WB_1803_TRANSPORT_INFRASTRUCTURE,242;WB_1803_TRANSPORT_INFRASTRUCTURE,1879;WB_1803_TRANSPORT_INFRASTRUCTURE,2193;WB_1803_TRANSPORT_INFRASTRUCTURE,2279;WB_1803_TRANSPORT_INFRASTRUCTURE,2300;WB_1804_AIRPORTS,45;WB_1804_AIRPORTS,242;WB_1804_AIRPORTS,1879;WB_1804_AIRPORTS,2193;WB_1804_AIRPORTS,2279;WB_1804_AIRPORTS,2300;TAX_FNCACT_AUTHORITIES,441;TAX_FNCACT_AUTHORITIES,2935;CRISISLEX_CRISISLEXREC,441;CRISISLEX_CRISISLEXREC,2935;EPU_POLICY_AUTHORITIES,441;EPU_POLICY_AUTHORITIES,2935;NATURAL_DISASTER_SEVERE_WEATHER,931;TAX_FNCACT_MINISTER,781;ECON_DEVELOPMENTORGS_WORLD_HEALTH_ORGANIZATION,1018;TAX_AIDGROUPS_WORLD_HEALTH_ORGANIZATION,1018;GENERAL_HEALTH,1005;MEDICAL,1005;TAX_FNCACT_WOMEN,3517;TAX_ETHNICITY_FRENCH,2323;TAX_WORLDLANGUAGES_FRENCH,2323;POVERTY,2564;CRISISLEX_C05_NEED_OF_SHELTERS,2564;NATURAL_DISASTER_HEAVY_SNOWFALL,3440;SOC_POINTSOFINTEREST_AIRPORT,422;SOC_POINTSOFINTEREST_AIRPORT,1926;TAX_FNCACT_WORKERS,2974;TAX_FNCACT_WORKERS,3613;TAX_FNCACT_OFFICIALS,2468;TAX_FNCACT_OFFICIALS,2656;CLOSURE,230;TAX_FNCACT_DRIVERS,306;TAX_FNCACT_DRIVERS,2870;"
},
{
"V2Themes": "GENERAL_GOVERNMENT,43;GENERAL_GOVERNMENT,224;GENERAL_GOVERNMENT,1411;GENERAL_GOVERNMENT,2162;EPU_POLICY_GOVERNMENT,43;EPU_POLICY_GOVERNMENT,224;EPU_POLICY_GOVERNMENT,1411;EPU_POLICY_GOVERNMENT,2162;TAX_FNCACT_UNIONIST,246;TAX_FNCACT_UNIONIST,747;TAX_FNCACT_UNIONIST,1337;TAX_FNCACT_UNIONIST,1834;BORDER,613;BORDER,1648;BORDER,1712;TAX_ECON_PRICE,992;CONSTITUTIONAL,137;NEGOTIATIONS,1487;WB_696_PUBLIC_SECTOR_MANAGEMENT,1487;WB_840_JUSTICE,1487;WB_2473_DIPLOMACY_AND_NEGOTIATIONS,1487;WB_939_NEGOTIATION,1487;WB_2470_PEACE_OPERATIONS_AND_CONFLICT_MANAGEMENT,1487;WB_936_ALTERNATIVE_DISPUTE_RESOLUTION,1487;WB_2432_FRAGILITY_CONFLICT_AND_VIOLENCE,1487;WB_843_DISPUTE_RESOLUTION,1487;WB_2471_PEACEKEEPING,1487;TAX_FNCACT_UNIONISTS,1006;TAX_FNCACT_UNIONISTS,1668;TAX_FNCACT_UNIONISTS,1904;TAX_FNCACT_MINISTER,2107;TAX_POLITICAL_PARTY_ULSTER_UNIONIST_PARTY,252;TAX_FNCACT_CHAIRMAN,1852;TAX_FNCACT_LEADER,259;TAX_FNCACT_LEADER,1841;EPU_CATS_MIGRATION_FEAR_FEAR,422;DEMOCRACY,2002;TAX_POLITICAL_PARTY_UNIONIST_PARTY,252;USPEC_POLITICS_GENERAL1,252;TAX_ETHNICITY_IRISH,32;TAX_ETHNICITY_IRISH,213;TAX_ETHNICITY_IRISH,606;TAX_ETHNICITY_IRISH,2151;TAX_WORLDLANGUAGES_IRISH,32;TAX_WORLDLANGUAGES_IRISH,213;TAX_WORLDLANGUAGES_IRISH,606;TAX_WORLDLANGUAGES_IRISH,2151;"
},
{
"V2Themes": "GENERAL_GOVERNMENT,43;GENERAL_GOVERNMENT,224;GENERAL_GOVERNMENT,1411;GENERAL_GOVERNMENT,2162;EPU_POLICY_GOVERNMENT,43;EPU_POLICY_GOVERNMENT,224;EPU_POLICY_GOVERNMENT,1411;EPU_POLICY_GOVERNMENT,2162;TAX_FNCACT_UNIONIST,246;TAX_FNCACT_UNIONIST,747;TAX_FNCACT_UNIONIST,1337;TAX_FNCACT_UNIONIST,1834;BORDER,613;BORDER,1648;BORDER,1712;TAX_ECON_PRICE,992;CONSTITUTIONAL,137;NEGOTIATIONS,1487;WB_696_PUBLIC_SECTOR_MANAGEMENT,1487;WB_840_JUSTICE,1487;WB_2473_DIPLOMACY_AND_NEGOTIATIONS,1487;WB_939_NEGOTIATION,1487;WB_2470_PEACE_OPERATIONS_AND_CONFLICT_MANAGEMENT,1487;WB_936_ALTERNATIVE_DISPUTE_RESOLUTION,1487;WB_2432_FRAGILITY_CONFLICT_AND_VIOLENCE,1487;WB_843_DISPUTE_RESOLUTION,1487;WB_2471_PEACEKEEPING,1487;TAX_FNCACT_UNIONISTS,1006;TAX_FNCACT_UNIONISTS,1668;TAX_FNCACT_UNIONISTS,1904;TAX_FNCACT_MINISTER,2107;TAX_POLITICAL_PARTY_ULSTER_UNIONIST_PARTY,252;TAX_FNCACT_CHAIRMAN,1852;TAX_FNCACT_LEADER,259;TAX_FNCACT_LEADER,1841;EPU_CATS_MIGRATION_FEAR_FEAR,422;DEMOCRACY,2002;TAX_POLITICAL_PARTY_UNIONIST_PARTY,252;USPEC_POLITICS_GENERAL1,252;TAX_ETHNICITY_IRISH,32;TAX_ETHNICITY_IRISH,213;TAX_ETHNICITY_IRISH,606;TAX_ETHNICITY_IRISH,2151;TAX_WORLDLANGUAGES_IRISH,32;TAX_WORLDLANGUAGES_IRISH,213;TAX_WORLDLANGUAGES_IRISH,606;TAX_WORLDLANGUAGES_IRISH,2151;"
},
{
"V2Themes": "TAX_FNCACT_METEOROLOGIST,2129;GENERAL_GOVERNMENT,488;EPU_POLICY_GOVERNMENT,488;AFFECT,1123;CRISISLEX_C04_LOGISTICS_TRANSPORT,1123;SOC_POINTSOFINTEREST_AIRPORTS,1023;WB_135_TRANSPORT,1023;WB_1803_TRANSPORT_INFRASTRUCTURE,1023;WB_1804_AIRPORTS,1023;TAX_FNCACT_CITIZEN,531;TAX_FNCACT_MINISTER,1613;NATURAL_DISASTER_ICE,990;NATURAL_DISASTER_SNOW_STORM,568;MILITARY,1463;TAX_FNCACT_CHEF,493;CRISISLEX_O01_WEATHER,1784;TAX_FNCACT_OPERATOR,1955;ENV_CLIMATECHANGE,2198;UNGP_CLIMATE_CHANGE_ACTION,2198;CRISISLEX_CRISISLEXREC,462;WB_137_WATER,1913;MANMADE_DISASTER_IMPLIED,209;MANMADE_DISASTER_IMPLIED,1304;MANMADE_DISASTER_IMPLIED,1845;PUBLIC_TRANSPORT,209;PUBLIC_TRANSPORT,1304;PUBLIC_TRANSPORT,1845;TAX_ETHNICITY_IRISH,817;TAX_WORLDLANGUAGES_IRISH,817;TAX_ETHNICITY_BLACK,986;"
},
{
"V2Themes": "GENERAL_GOVERNMENT,201;GENERAL_GOVERNMENT,1344;GENERAL_GOVERNMENT,2065;EPU_POLICY_GOVERNMENT,201;EPU_POLICY_GOVERNMENT,1344;EPU_POLICY_GOVERNMENT,2065;TAX_FNCACT_UNIONIST,223;TAX_FNCACT_UNIONIST,701;TAX_FNCACT_UNIONIST,1270;TAX_FNCACT_UNIONIST,1755;BORDER,567;BORDER,1569;BORDER,1633;TAX_ECON_PRICE,946;CONSTITUTIONAL,114;NEGOTIATIONS,1420;WB_696_PUBLIC_SECTOR_MANAGEMENT,1420;WB_840_JUSTICE,1420;WB_2473_DIPLOMACY_AND_NEGOTIATIONS,1420;WB_939_NEGOTIATION,1420;WB_2470_PEACE_OPERATIONS_AND_CONFLICT_MANAGEMENT,1420;WB_936_ALTERNATIVE_DISPUTE_RESOLUTION,1420;WB_2432_FRAGILITY_CONFLICT_AND_VIOLENCE,1420;WB_843_DISPUTE_RESOLUTION,1420;WB_2471_PEACEKEEPING,1420;TAX_FNCACT_UNIONISTS,962;TAX_FNCACT_UNIONISTS,1589;TAX_FNCACT_UNIONISTS,1825;TAX_FNCACT_MINISTER,2016;TAX_POLITICAL_PARTY_ULSTER_UNIONIST_PARTY,229;TAX_FNCACT_CHAIRMAN,1773;TAX_FNCACT_LEADER,236;TAX_FNCACT_LEADER,1762;EPU_CATS_MIGRATION_FEAR_FEAR,399;DEMOCRACY,1911;TAX_POLITICAL_PARTY_UNIONIST_PARTY,229;USPEC_POLITICS_GENERAL1,229;TAX_ETHNICITY_IRISH,190;TAX_ETHNICITY_IRISH,560;TAX_WORLDLANGUAGES_IRISH,190;TAX_WORLDLANGUAGES_IRISH,560;"
},
{
"V2Themes": "GENERAL_GOVERNMENT,43;GENERAL_GOVERNMENT,224;GENERAL_GOVERNMENT,1411;GENERAL_GOVERNMENT,2162;EPU_POLICY_GOVERNMENT,43;EPU_POLICY_GOVERNMENT,224;EPU_POLICY_GOVERNMENT,1411;EPU_POLICY_GOVERNMENT,2162;TAX_FNCACT_UNIONIST,246;TAX_FNCACT_UNIONIST,747;TAX_FNCACT_UNIONIST,1337;TAX_FNCACT_UNIONIST,1834;BORDER,613;BORDER,1648;BORDER,1712;TAX_ECON_PRICE,992;CONSTITUTIONAL,137;NEGOTIATIONS,1487;WB_696_PUBLIC_SECTOR_MANAGEMENT,1487;WB_840_JUSTICE,1487;WB_2473_DIPLOMACY_AND_NEGOTIATIONS,1487;WB_939_NEGOTIATION,1487;WB_2470_PEACE_OPERATIONS_AND_CONFLICT_MANAGEMENT,1487;WB_936_ALTERNATIVE_DISPUTE_RESOLUTION,1487;WB_2432_FRAGILITY_CONFLICT_AND_VIOLENCE,1487;WB_843_DISPUTE_RESOLUTION,1487;WB_2471_PEACEKEEPING,1487;TAX_FNCACT_UNIONISTS,1006;TAX_FNCACT_UNIONISTS,1668;TAX_FNCACT_UNIONISTS,1904;TAX_FNCACT_MINISTER,2107;TAX_POLITICAL_PARTY_ULSTER_UNIONIST_PARTY,252;TAX_FNCACT_CHAIRMAN,1852;TAX_FNCACT_LEADER,259;TAX_FNCACT_LEADER,1841;EPU_CATS_MIGRATION_FEAR_FEAR,422;DEMOCRACY,2002;TAX_POLITICAL_PARTY_UNIONIST_PARTY,252;USPEC_POLITICS_GENERAL1,252;TAX_ETHNICITY_IRISH,32;TAX_ETHNICITY_IRISH,213;TAX_ETHNICITY_IRISH,606;TAX_ETHNICITY_IRISH,2151;TAX_WORLDLANGUAGES_IRISH,32;TAX_WORLDLANGUAGES_IRISH,213;TAX_WORLDLANGUAGES_IRISH,606;TAX_WORLDLANGUAGES_IRISH,2151;"
},
{
"V2Themes": "GENERAL_GOVERNMENT,43;GENERAL_GOVERNMENT,224;GENERAL_GOVERNMENT,1411;GENERAL_GOVERNMENT,2162;EPU_POLICY_GOVERNMENT,43;EPU_POLICY_GOVERNMENT,224;EPU_POLICY_GOVERNMENT,1411;EPU_POLICY_GOVERNMENT,2162;TAX_FNCACT_UNIONIST,246;TAX_FNCACT_UNIONIST,747;TAX_FNCACT_UNIONIST,1337;TAX_FNCACT_UNIONIST,1834;BORDER,613;BORDER,1648;BORDER,1712;TAX_ECON_PRICE,992;CONSTITUTIONAL,137;NEGOTIATIONS,1487;WB_696_PUBLIC_SECTOR_MANAGEMENT,1487;WB_840_JUSTICE,1487;WB_2473_DIPLOMACY_AND_NEGOTIATIONS,1487;WB_939_NEGOTIATION,1487;WB_2470_PEACE_OPERATIONS_AND_CONFLICT_MANAGEMENT,1487;WB_936_ALTERNATIVE_DISPUTE_RESOLUTION,1487;WB_2432_FRAGILITY_CONFLICT_AND_VIOLENCE,1487;WB_843_DISPUTE_RESOLUTION,1487;WB_2471_PEACEKEEPING,1487;TAX_FNCACT_UNIONISTS,1006;TAX_FNCACT_UNIONISTS,1668;TAX_FNCACT_UNIONISTS,1904;TAX_FNCACT_MINISTER,2107;TAX_POLITICAL_PARTY_ULSTER_UNIONIST_PARTY,252;TAX_FNCACT_CHAIRMAN,1852;TAX_FNCACT_LEADER,259;TAX_FNCACT_LEADER,1841;EPU_CATS_MIGRATION_FEAR_FEAR,422;DEMOCRACY,2002;TAX_POLITICAL_PARTY_UNIONIST_PARTY,252;USPEC_POLITICS_GENERAL1,252;TAX_ETHNICITY_IRISH,32;TAX_ETHNICITY_IRISH,213;TAX_ETHNICITY_IRISH,606;TAX_ETHNICITY_IRISH,2151;TAX_WORLDLANGUAGES_IRISH,32;TAX_WORLDLANGUAGES_IRISH,213;TAX_WORLDLANGUAGES_IRISH,606;TAX_WORLDLANGUAGES_IRISH,2151;"
},
{
"V2Themes": "GENERAL_GOVERNMENT,42;GENERAL_GOVERNMENT,334;GENERAL_GOVERNMENT,1521;GENERAL_GOVERNMENT,2274;EPU_POLICY_GOVERNMENT,42;EPU_POLICY_GOVERNMENT,334;EPU_POLICY_GOVERNMENT,1521;EPU_POLICY_GOVERNMENT,2274;TAX_FNCACT_UNIONIST,356;TAX_FNCACT_UNIONIST,857;TAX_FNCACT_UNIONIST,1447;TAX_FNCACT_UNIONIST,1946;BORDER,723;BORDER,1760;BORDER,1824;TAX_ECON_PRICE,1102;CONSTITUTIONAL,247;NEGOTIATIONS,1597;WB_696_PUBLIC_SECTOR_MANAGEMENT,1597;WB_840_JUSTICE,1597;WB_2473_DIPLOMACY_AND_NEGOTIATIONS,1597;WB_939_NEGOTIATION,1597;WB_2470_PEACE_OPERATIONS_AND_CONFLICT_MANAGEMENT,1597;WB_936_ALTERNATIVE_DISPUTE_RESOLUTION,1597;WB_2432_FRAGILITY_CONFLICT_AND_VIOLENCE,1597;WB_843_DISPUTE_RESOLUTION,1597;WB_2471_PEACEKEEPING,1597;TAX_FNCACT_UNIONISTS,1116;TAX_FNCACT_UNIONISTS,1780;TAX_FNCACT_UNIONISTS,2016;TAX_FNCACT_MINISTER,2219;TAX_POLITICAL_PARTY_ULSTER_UNIONIST_PARTY,362;TAX_FNCACT_CHAIRMAN,1964;TAX_FNCACT_LEADER,369;TAX_FNCACT_LEADER,1953;EPU_CATS_MIGRATION_FEAR_FEAR,532;DEMOCRACY,2114;TAX_POLITICAL_PARTY_UNIONIST_PARTY,362;USPEC_POLITICS_GENERAL1,362;TAX_ETHNICITY_IRISH,31;TAX_ETHNICITY_IRISH,323;TAX_ETHNICITY_IRISH,716;TAX_ETHNICITY_IRISH,2263;TAX_WORLDLANGUAGES_IRISH,31;TAX_WORLDLANGUAGES_IRISH,323;TAX_WORLDLANGUAGES_IRISH,716;TAX_WORLDLANGUAGES_IRISH,2263;"
}
]
]
You can see this returns a lot of potential data associated with each news event regarding the person.
In Summary
This is a fairly simple example but it shows the potential power behind GDelt and the myriad of information it can return even for a small isolated set of events.
A great resource for playing around with Gdelt can be found at https://www.kaggle.com/gdelt/gdelt
This provides a sample interface which shows all the potential fields and values which can be returned from querying gdelt tables.