The GDELT Project

Visual Global Entity Graph 2.0: People Account For 70% Of Evening News Airtime

It turns out that unsurprisingly, human beings have been depicted in more than 70% of the total airtime of ABC, CBS and NBC evening news broadcasts of the past decade and that number has remained almost perfectly steady for all ten years, reminding us just how important people are in how we tell the news. Evening news features human newsreaders, commentators and field reporters, all looking into the camera speaking, interviewees and others all telling the news through the human face, reminding us just how much television news is like traditional storytelling.

The timeline below shows the percentage of combined airtime on ABC, CBS and NBC evening news broadcasts by day over the last ten years that depicted at least one person, smoothed using a 14-day rolling average.

Technical Details

Creating this graph required just a single query in BigQuery:

select DAY,
SUM(KGOEntitySeconds) KGOTotEntitySeconds, SUM(KGOAllSeconds) KGOTotAllSeconds, SAFE_DIVIDE(SUM(KGOEntitySeconds), SUM(KGOAllSeconds))*100 KGOPercEntityAirtime,
SUM(KPIXEntitySeconds) KPIXTotEntitySeconds, SUM(KPIXAllSeconds) KPIXTotAllSeconds, SAFE_DIVIDE(SUM(KPIXEntitySeconds), SUM(KPIXAllSeconds))*100 KPIXPercEntityAirtime,
SUM(KNTVEntitySeconds) KNTVTotEntitySeconds, SUM(KNTVAllSeconds) KNTVTotAllSeconds, SAFE_DIVIDE(SUM(KNTVEntitySeconds), SUM(KNTVAllSeconds))*100 KNTVPercEntityAirtime,
SUM(KGOEntitySeconds)+SUM(KPIXEntitySeconds)+SUM(KNTVEntitySeconds) TotEntitySeconds, SUM(KGOAllSeconds)+SUM(KPIXAllSeconds)+SUM(KNTVAllSeconds) TotAllSeconds, SAFE_DIVIDE((SUM(KGOEntitySeconds)+SUM(KPIXEntitySeconds)+SUM(KNTVEntitySeconds)), (SUM(KGOAllSeconds)+SUM(KPIXAllSeconds)+SUM(KNTVAllSeconds)))*100 PercEntityAirtime
 from (
SELECT DATE(date, "America/Los_Angeles") DAY, count(1) KGOEntitySeconds, 0 KGOAllSeconds, 0 KPIXEntitySeconds, 0 KPIXAllSeconds, 0 KNTVEntitySeconds, 0 KNTVAllSeconds FROM `gdelt-bq.gdeltv2.vgegv2_iatv`,UNNEST(entities) AS entity where entity.name='person' and station='KGO' and EXTRACT(DAYOFWEEK from DATE(date, "America/Los_Angeles")) >= 2 and EXTRACT(DAYOFWEEK from DATE(date, "America/Los_Angeles")) <= 6 group by DAY
UNION ALL
SELECT DATE(date, "America/Los_Angeles") DAY, 0 KGOEntitySeconds, 0 KGOAllSeconds, count(1) KPIXEntitySeconds, 0 KPIXAllSeconds, 0 KNTVEntitySeconds, 0 KNTVAllSeconds FROM `gdelt-bq.gdeltv2.vgegv2_iatv`,UNNEST(entities) AS entity where entity.name='person' and station='KPIX' and EXTRACT(DAYOFWEEK from DATE(date, "America/Los_Angeles")) >= 2 and EXTRACT(DAYOFWEEK from DATE(date, "America/Los_Angeles")) <= 6 group by DAY
UNION ALL
SELECT DATE(date, "America/Los_Angeles") DAY, 0 KGOEntitySeconds, 0 KGOAllSeconds, 0 KPIXEntitySeconds, 0 KPIXAllSeconds, count(1) KNTVEntitySeconds, 0 KNTVAllSeconds FROM `gdelt-bq.gdeltv2.vgegv2_iatv`,UNNEST(entities) AS entity where entity.name='person' and station='KNTV' and EXTRACT(DAYOFWEEK from DATE(date, "America/Los_Angeles")) >= 2 and EXTRACT(DAYOFWEEK from DATE(date, "America/Los_Angeles")) <= 6 group by DAY
UNION ALL
SELECT DATE(date, "America/Los_Angeles") DAY, 0 KGOEntitySeconds, count(1) KGOAllSeconds, 0 KPIXEntitySeconds, 0 KPIXAllSeconds, 0 KNTVEntitySeconds, 0 KNTVAllSeconds FROM `gdelt-bq.gdeltv2.vgegv2_iatv` where station='KGO' and EXTRACT(DAYOFWEEK from DATE(date, "America/Los_Angeles")) >= 2 and EXTRACT(DAYOFWEEK from DATE(date, "America/Los_Angeles")) <= 6 group by DAY
UNION ALL
SELECT DATE(date, "America/Los_Angeles") DAY, 0 KGOEntitySeconds, 0 KGOAllSeconds, 0 KPIXEntitySeconds, count(1) KPIXAllSeconds, 0 KNTVEntitySeconds, 0 KNTVAllSeconds FROM `gdelt-bq.gdeltv2.vgegv2_iatv` where station='KPIX' and EXTRACT(DAYOFWEEK from DATE(date, "America/Los_Angeles")) >= 2 and EXTRACT(DAYOFWEEK from DATE(date, "America/Los_Angeles")) <= 6 group by DAY
UNION ALL
SELECT DATE(date, "America/Los_Angeles") DAY, 0 KGOEntitySeconds, 0 KGOAllSeconds, 0 KPIXEntitySeconds, 0 KPIXAllSeconds, 0 KNTVEntitySeconds, count(1) KNTVAllSeconds FROM `gdelt-bq.gdeltv2.vgegv2_iatv` where station='KNTV' and EXTRACT(DAYOFWEEK from DATE(date, "America/Los_Angeles")) >= 2 and EXTRACT(DAYOFWEEK from DATE(date, "America/Los_Angeles")) <= 6 group by DAY
) group by DAY order by DAY asc