Because the Visual Analytics Alphabet Series was inspired at the screening of a horror movie (see A is for Aggregated Data), most of the data used in this series is horror based.
HORROR_MOVIES
HORROR_MOVIES from Kaggle, a data set of horror films from 1950 – 2022, was extracted from The Movie Database (TMDB) using the TMDB API. The Movie Database is a community built movie and TV database that contains information about movies, TV shows, cast, and community reviews.
If you would like to use the TMDB API for your own data adventures, check out the documentation.
| Name |
Label |
Description |
Unique Count |
Range |
| id |
Movie ID |
Unique ID for TMDB, used to construct link to movie page |
32,540 |
|
| original_title |
Original Title |
Original movie title |
30,294 |
|
| title |
Movie Title |
Movie title |
29,563 |
|
| original_language |
Original Lanugage |
Language in which the movie was made (for example, en for English, no for Norwegian, de for German) |
97 |
|
| overview |
Description |
Description of movie |
31,021 |
|
| tagline |
Tagline |
Tagline of movie |
12, 514 |
|
| release_date |
Release Date |
Release date (mm/dd/yyyy) |
10,999 |
|
| poster_path |
Poster Image |
Unique name of the movie poster. This can be used to generate a link to the poster image. |
28,049 |
|
| popularity |
Popularity Score |
Lifetime popularity score generated by the community. For movies, this is based on daily metrics (like number of votes, number of views, times favorited, times watchlisted), release date, total votes, and the previous day’s score. Higher scores indicate movies that have been widely viewed, rated, and engaged with over time. |
|
0 - 5,088.584 |
| vote_count |
# User Ratings |
Number of user ratings for movie |
|
0 - 16,900 |
| vote_average |
User Score (1-1) |
Average rating for movie. Ratings range from 1 to 10 stars. |
|
0.5 - 10 |
| budget |
Budget (in $) |
Budget of movie in US dollars |
|
$1 - $200,000,000 |
| revenue |
Revenue (in $) |
Revenue made from movie in US dollars |
|
$1 -$701.842,551 |
| runtime |
Movie Runtime (min) |
Official runtime of movie (in minutes) |
|
1 - 683 |
| status |
Movie Status |
Status of movie (Released, In Production, Post Production, Planned) at time of extract (late 2022) |
4 |
|
| adult |
<not used> |
<not used> |
<not used> |
|
| backdrop_path |
Backdrop Image |
Unique name of movie backdrop image. This can be used to generate a link to the poster image. |
13,537 |
|
| genre_name |
Genre(s) |
List of movie genres |
772 |
|
| collection |
Collection ID |
ID of the collection, used to construct link to collection page. |
816 |
|
| collection_name |
Collection Name |
Name of collection |
816 |
|
A few data cleansing techniques needed to be applied to the HORROR_MOVIES table to get the data report ready:
- Several measures were set to zero when data was not available for those movies (for example, vote_average, budget, revenue, and runtime). These zeros were replaced with missing values.
- Year had to be created from release_year to join the table with KILLCOUNTS
- Some of the titles had to be modified to match the title with KILLCOUNTS
For some articles, additional steps were necessary:
A is for Aggregated Data
- The HORROR_MOVIES and KILLCOUNTS tables were joined with an inner join on Movie Title and Year.
- Two calculated items were created:
- # of Movies – an aggregated measure that calculates the distinct count of movies
# of Movies calculated item
- Average Kill Count – an aggregated measure that calculates the total kill count per each distinct movie
Average Kill Count aggregated measure
For more information about creating calculated items, see E is for Expression Editor.
A is also for APIs
- A data filter was added to the data source to only display movies that are in a specific collection.
Data filter using Collection Parameter
- Three calculated items were created:
- IMDb Rating – a category data item that displays a star icon, followed by the IMDb score out of ten (for example, ⭐7.2/10)
IMDb Rating calculated column
- Movie Runtime – a category data item that displays movie runtime in hours and minutes (for example, 1h 39m)
Movie Runtime calculated column
- Release Year (numeric) – a measure data item that converts Release Year to a number. This data item can be used to sort data in objects.
Release Year (numeric) calculated column
For more information about creating calculated items, see E is for Expression Editor.
B is for Best Practices
- The HORROR_MOVIES and KILLCOUNTS tables were joined with an inner join on Movie Title and Year.
- Two custom categories were created:
- Decade – groups release years into categories: Before 1980, 1980s, 1990s, 2000s, 2010s, and 2020s
- Subgenre – groups movie collections (franchises) into categories, like Vampires, Iconic Horror, Found Footage, Zombies, and Killer Dolls & Objects.
For more information about how subgenres were created using SAS Viya Copilot, see C is also for SAS Viya Copilot.
- Four calculated items were created:
- Movie (Release Year) – a category data item that combines Movie Title and release year (as some movies have the same name).
Calculation for Movie (Release Year)
- Kills per Minute – a measure data item that calculates the kill count per minute
Calculation for Kills per Minute
- ROI – a measure data item that calculates the return on investment for each movie
Calculation for ROI
- # of Movies – an aggregated measure that calculates the distinct count of movies
Calculation for # of Movies
For more information about creating calculated items, see E is for Expression Editor.
- A hierarchy (Collection Hierarchy) was created of Subgenre, Collection Name, and Movie (Release Year).
- Two common filters were created:
- Non-missing ROI – to show only movies that have an ROI value that is not missing
- Revenue-Makers – to show only movies that have a revenue that is not zero or missing
C is for Customizations
- A data filter was added to the data source to only display movies that are part of collections and that were originally made in English.
Data filter
- The following list of subgenres were provided to assist SAS Viya Copilot in creating the value groups for Subgenre:
- Animal Attack
- Anthology Horror
- Extreme Gore
- Slasher
- Comedy Horror
- Found Footage
- Ghosts & Hauntings
- Holiday Horror
- Iconic Horror
- Infection
- Killer Dolls & Objects
- Monsters & Creatures
- Occult & Folklore
- Supernatural & Possession
- Apocalypse
- Urban Legend
- Vampires
- Zombies
For more information about how subgenres were created using SAS Viya Copilot, see C is also for SAS Viya Copilot.
- Seven calculated items were created:
- Release Year - a category data item that displays a four digit year. This must be a category data item so we can create a custom category from a selection.
Calculated item: Release Year
- Movie (Release Year) - a category data item that combines Movie Title and release year (as some movies have the same name)
Calculated item: Movie (Release Year)
- Budget (in $) - a measure data item that replaces budgets of zero with a missing value
Calculated item - Budget (in $)
- Profit - a measure data item that calculates the profit for each movie
Calculated item: Profit
- ROI - a measure data item that calculates the return on investment for each movie
Calculated item: ROI
- Runtime - a measure data item that replaces runtimes of zero with a missing value
Calculated item: Runtime
- User Score (1 - 10) - a measure data item that replaces vote_averages (user scores) of zero with a missing value
Calculated item: User Score
For more information about creating calculated items, see E is for Expression Editor.
- Two common filters were created:
- Holiday Horror - to show only movies in the Holiday Horror subgenre
- Iconic Horror - to show only movies in the Iconic Horror subgenre
C is also for SAS Viya Copilot
- A data filter was added to the data source to only display movies that are part of collections and that were originally made in English.
Data filter
- The following list of subgenres were provided to assist SAS Viya Copilot in creating the value groups for Subgenre:
- Animal Attack
- Anthology Horror
- Extreme Gore
- Slasher
- Comedy Horror
- Found Footage
- Ghosts & Hauntings
- Holiday Horror
- Iconic Horror
- Infection
- Killer Dolls & Objects
- Monsters & Creatures
- Occult & Folklore
- Supernatural & Possession
- Apocalypse
- Urban Legend
- Vampires
- Zombies
D is for Display Rules
- A data filter was added to the data source to only display movies that are part of collections and that were originally made in English.
Data filter for English movies in a collection
- The following list of subgenres were provided to assist SAS Viya Copilot in creating the value groups for Subgenre:
- Animal Attack
- Anthology Horror
- Extreme Gore
- Slasher
- Comedy Horror
- Found Footage
- Ghosts & Hauntings
- Holiday Horror
- Iconic Horror
- Infection
- Killer Dolls & Objects
- Monsters & Creatures
- Occult & Folklore
- Supernatural & Possession
- Apocalypse
- Urban Legend
- Vampires
- Zombies
For more information about how subgenres were created using SAS Viya Copilot, see C is also for SAS Viya Copilot.
- Seven calculated items were created:
- Movie (Release Year) - a category data item that combines Movie Title and release year (as some movies have the same name).
Movie (Release Year) calculated item
- Budget (in $) - a measure data item that replaces budgets of zero with a missing value.
Budget (in $) calculated item
- Revenue (in $) - a measure data item that replaces revenues of zero with a missing value.
Revenue (in $) calculated item
- ROI - a measure data item that calculates the return on investment for each movie.
ROI calculated item
- User Score (1 - 10) - a measure data item that replaces vote_averages (user scores) of zero with a missing value.
User Score (1 - 10) calculated item
- Budget per Movie - an aggregated measure that calculates total budget for each group divided by number of movies in that group.
Budget per Movie calculated item
- Revenue per Movie - an aggregated measure that calculates total revenue for each group divided by number of movies in that group.
Revenue per Movie calculated item
For more information about creating calculated items, see E is for Expression Editor.
D is also for Data-Driven Content
- The following list of subgenres were provided to assist SAS Viya Copilot in creating the value groups for Subgenre:
- Animal Attack
- Anthology Horror
- Extreme Gore
- Slasher
- Comedy Horror
- Found Footage
- Ghosts & Hauntings
- Holiday Horror
- Iconic Horror
- Infection
- Killer Dolls & Objects
- Monsters & Creatures
- Occult & Folklore
- Supernatural & Possession
- Apocalypse
- Urban Legend
- Vampires
- Zombies
For more information about how subgenres were created using SAS Viya Copilot, see C is also for SAS Viya Copilot.
- Six calculated items were created:
- Movie (Release Year) – a category data item that combines Movie Title and release year (as some movies have the same name).
Movie (Release Year) calculated item
- Movie Runtime (min) – a measure data item that replaces movie runtimes of zero with a missing value.
Movie Runtime (min) calculated item
- Movie Runtime – a category data item that displays movie runtime in hours and minutes (for example, 1h 39m).
Movie Runtime calculated item
- Budget (in $) – a measure data item that replaces budgets of zero with a missing value.
Budget (in $) calculated item
- Revenue (in $) – a measure data item that replaces revenues of zero with a missing value.
Revenue (in $) calculated item
- User Score (1 – 10) – a measure data item that replaces vote_averages (user scores) of zero with a missing value.
User Score (1-10) calculated item
For more information about creating calculated items, see E is for Expression Editor.
- Five parameters were created to display category values using the Text object:
- Collection Name Parameter – a character parameter that contains the name of the collection for the selected movie
- Genre(s) Parameter – a character parameter that contains the genre(s) of the selected movie
- Movie Runtime Parameter – a character parameter that contains the movie runtime of the selected movie
- Original Language Parameter – a character parameter that contains the original language of the selected movie
- Release Year Parameter – a character parameter that contains the release year of the selected movie
Note: Only measures or parameters can be displayed in a Text object. Category values were assigned to parameters (using control objects) and referenced within text objects, which enables custom formatting options that are not available in other object types.
- A link to the poster image of the movie can be generated by concatenating the base URL (https://image.tmdb.org/t/p/w500) with the Poster Image path (/xOjcaWBNG2PvylJOhlkaqaAAKUr.jpg).
- A link to the backdrop image of the movie can be generated by concatenating the base URL (https://image/tmdb.org/t/p/original) with the Backdrop Image path (/58BUQzjN6TH0bLe6JEfgMbHc55u.jpg).
E is for Expression Editor
- A data filter was added to the data source to only display movies that are part of collections and that were originally made in English.
Data filter
- Six calculated items were created:
- Budget (in $) - a measure data item that replaces budgets of zero with a missing value
Budget (in $) calculated item
- Revenue (in $) - a measure data item that replaces revenues of zero with a missing value
Revenue (in $) calculated item
- User Score (1-10) - a measure data item that replaces vote_averages (user scores) of zero with a missing value
User Score (1-10) calculated item
- ROI - a measure data item that calculates the return on investment for each movie
ROI calculated item
- IMDb Rating - a category data item that displays a star icon, followed by the IMDb score out of ten (for example, ⭐7.2/10)
IMDb Rating calculated item
- Budget per Movie - an aggregated measure that calculates total budget for each group divided by the number of movies in that group
Budget per Movie calculated item
- An expression-based parameter was created:
- Total Ratings (All Data) - a measure parameter that calculates the total number of ratings in the table
Total Ratings (All Data) expression-based parameter
KILLCOUNTS
KILLCOUNTS from Github, a data set of horror films from 1922-2025, was sourced from community projects (like Dead Meat, MovieBodyCounts, List of Deaths Wiki, and work done by Randal Olson.
| Name |
Label |
Description |
Unique Count |
Range |
| title |
Movie Title |
Movie Title |
469 |
|
| year |
Release Year |
Release year |
63 |
|
| count |
Kill Count |
Total confirmed kills |
|
1 - 4,295 |
| tmdb_id |
TMDB ID |
The Movie Database (TMDB) unique ID |
482 |
|
A few data cleansing techniques needed to be applied to the KILLCOUNTS table to get the data report ready:
- In the original table, year is stored as a category. It was converted to a date in Visual Analytics using the DateFromMDY and TreatAs functions.

HAUNTED_PLACES
HAUNTED_PLACES from Kaggle, a data set of haunted places in the United States was compiled by Tim Renner using The Shadowlands Haunted Places Index.
| Name |
Label |
Description |
Unique Count |
Range |
| city |
City |
City where the haunted place is located |
4,285 |
|
| country |
Country |
Country where the haunted place is located (all United States) |
1 |
|
| description |
Description |
Description of the haunted place |
10,979 |
|
| location |
Location |
Name of the haunted place |
9,691 |
|
| state |
State |
US state where the haunted place is located |
51 |
|
| state_abbrev |
state_abbrev |
US two-letter state abbreviation where the haunted place is located |
51 |
|
| longitude |
Location Longitude |
Longitude of the haunted place |
|
-164.7224104 - -66.6667528 |
| latitude |
Location Latitutde |
Latitude of the haunted place |
|
19.632069 - 66.8925886 |
| city_longitude |
City Longitude |
Longitude of the city center |
|
-164.7238888 - -67.8402316 |
| city_latitude |
City Latitude |
Latitude of the city center |
|
19.5756191 - 66.8983333 |
A few data cleansing techniques needed to be applied to the HAUNTED_PLACES table to get the data report ready:
- Location values were modified to ensure consistency. For example, Saint Peters Catholic Church was standardized to St Peters Catholic Church.
- Unique ID was created when importing the Microsoft Excel file by selecting Create unique ID column in the Import Data window. This creates a column that has a unique value for each row, which can be used for text analytics.
- AI was used to group locations into 9 distinct Haunting Locations:
- Cemeteries & Graveyards
- Homes & Residences
- Hospitals & Asylums
- Hotels & Lodging
- Parks & Natural Areas
- Roads, Bridges & Paths
- Schools & Universities
- Theatres & Entertainment
- Other Buildings/Places
- AI was used to group descriptions of hauntings into 8 distinct Haunting Categories:
- Auditory Phenomena
- Entity-Based
- Environmental Effects
- Experiential States
- Narrative/Historical
- Physical Interactions
- Visual Manifestations
- Mixed/Unclassified
- AI was used to group descriptions of hauntings into 14 distinct Haunting Types:
- Animal Spirit
- Apparitions & Full-Body Ghosts
- Child Spirit
- Demonic or Malevolent Entity
- Disembodied Sounds & Voices
- Environmental & Emotional Sensations
- Lights, Orbs & Shadow Phenomena
- Location-Bound Entity
- Poltergeist/Object Movement
- Residual/Repeating Event
- Sleep & Bedroom Encounters
- Tragic Death Residual Haunting
- Other/Mixed Phenomena
- Unspecified
This product uses the TMDB API but is not endorsed or certified by TMDB.
