{
  "format": "dataset-manifest/1",
  "slug": "podcast-listening-insights",
  "version": 3,
  "seed": "podcast-listening-insights:1",
  "engine": 1,
  "engineVersion": "1.0.0",
  "spec": {
    "format": "dataset/1",
    "slug": "podcast-listening-insights",
    "name": "Podcast Listening Insights",
    "tagline": "Listeners, podcasts, episodes, scrobbles, radio stations, and interactions within the podcast ecosystem.",
    "description": "Listeners engage with a diverse array of podcasts, diving into various genres and discovering new audio content tailored to their interests. Each listener in the dataset reflects a unique profile that highlights their favorite podcasts, the episodes they consume, and their interactions with both radio stations and individual tracks. This vibrant ecosystem of audio content reveals insights into user preferences and consumption patterns, making it a rich resource for analysis.\n\nThe dataset consists of several interconnected tables: 'listeners' captures demographic and preference data for each user; 'podcasts' outlines the various shows available, detailing their genre and popularity; 'episodes' provides specifics on individual podcast entries, such as titles and release dates; 'scrobbles' tracks the listening activity of users, indicating which episodes they’ve played; 'radio_stations' lists the stations available for listening; and 'listener_radio_interactions' documents how users interact with these stations. Each row in the listeners table corresponds to a unique user, while rows in the podcasts and episodes tables represent the audio content they engage with. The scrobbles and interactions tables connect back to listeners, creating a network of listening habits.\n\nThis dataset answers critical questions about listening behavior: How often do users listen to specific podcasts? What genres attract more engagement? How do emotional tones of tracks influence user preferences? By analyzing these aspects, developers can practice building queries that uncover trends, segment audiences based on listening habits, and generate recommendations for content creators. The data is synthetic, crafted to simulate real-world podcast listening scenarios, allowing for robust testing and analysis.",
    "domain": "iot",
    "shape": "transactional",
    "useCases": [
      "sql-practice",
      "orm-seeding"
    ],
    "keywords": [
      "podcasts",
      "listening habits",
      "user preferences",
      "audio content",
      "data insights",
      "scrobbles",
      "radio interactions"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "listeners": {
        "description": "This table contains information about individual podcast listeners, including their preferences and demographics.",
        "rows": 200,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each listener."
          },
          "full_name": {
            "kind": "fullName",
            "description": "The full name of the listener."
          },
          "email": {
            "kind": "email",
            "from": "full_name",
            "description": "Email address of the listener."
          },
          "age": {
            "kind": "int",
            "min": 18,
            "max": 65,
            "description": "Age of the listener.",
            "distribution": "normal"
          },
          "country": {
            "kind": "country",
            "description": "Country where the listener resides."
          },
          "preferred_genre": {
            "kind": "enum",
            "values": [
              "comedy",
              "true crime",
              "news",
              "education",
              "sports",
              "technology",
              "health"
            ],
            "description": "Listener's favorite podcast genre.",
            "weights": [
              5,
              4,
              2,
              1,
              1,
              1,
              1
            ]
          }
        }
      },
      "podcasts": {
        "description": "This table lists various podcasts available in the dataset, along with their genres and descriptions.",
        "rows": 100,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each podcast."
          },
          "title": {
            "kind": "words",
            "min": 1,
            "max": 3,
            "description": "Title of the podcast.",
            "pool": [
              "tech",
              "future",
              "innovation",
              "iot",
              "trends",
              "insights",
              "data",
              "smart",
              "devices",
              "connectivity",
              "analytics",
              "solutions",
              "networking",
              "security",
              "automation",
              "intelligence",
              "cloud",
              "platforms",
              "applications",
              "systems"
            ]
          },
          "description": {
            "kind": "paragraph",
            "min": 10,
            "max": 200,
            "description": "Brief summary of what the podcast is about."
          },
          "genre": {
            "kind": "enum",
            "values": [
              "comedy",
              "true crime",
              "news",
              "education",
              "sports",
              "technology",
              "health"
            ],
            "description": "Genre of the podcast.",
            "weights": [
              6,
              3,
              2,
              2,
              1,
              1,
              1
            ]
          },
          "launch_date": {
            "kind": "date",
            "from": "2020-01-01",
            "to": "2023-12-31",
            "description": "The date the podcast was launched.",
            "trend": "growing"
          }
        }
      },
      "episodes": {
        "description": "This table contains details of individual episodes from various podcasts, including their lengths and release dates.",
        "rows": 500,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each episode."
          },
          "podcast_id": {
            "kind": "fk",
            "ref": "podcasts.id",
            "description": "Foreign key linking to the podcast."
          },
          "title": {
            "kind": "words",
            "min": 1,
            "max": 3,
            "description": "Title of the episode.",
            "pool": [
              "understanding",
              "deep",
              "dive",
              "exploring",
              "impact",
              "challenges",
              "opportunities",
              "latest",
              "developments",
              "case",
              "studies",
              "expert",
              "interviews",
              "trends",
              "analysis",
              "future",
              "predictions",
              "technology",
              "applications",
              "use",
              "cases"
            ]
          },
          "duration": {
            "kind": "int",
            "min": 1,
            "max": 180,
            "description": "Duration of the episode in minutes.",
            "distribution": "normal"
          },
          "release_date": {
            "kind": "date",
            "from": "2020-01-01",
            "to": "2023-12-31",
            "description": "The release date of the episode.",
            "trend": "seasonal"
          }
        }
      },
      "scrobbles": {
        "description": "This table tracks the scrobbles made by listeners for individual episodes, capturing their engagement.",
        "rows": 1000,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each scrobble entry."
          },
          "listener_id": {
            "kind": "fk",
            "ref": "listeners.id",
            "description": "Foreign key linking to the listener."
          },
          "episode_id": {
            "kind": "fk",
            "ref": "episodes.id",
            "description": "Foreign key linking to the episode."
          },
          "scrobble_time": {
            "kind": "datetime",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "Timestamp when the episode was scrobbled.",
            "dayProfile": "waking"
          },
          "emotion": {
            "kind": "enum",
            "values": [
              "happy",
              "sad",
              "excited",
              "relaxed",
              "thoughtful"
            ],
            "description": "Emotional tone experienced by the listener while listening.",
            "weights": [
              7,
              2,
              3,
              2,
              1
            ]
          },
          "emotion_intensity": {
            "kind": "int",
            "min": 1,
            "max": 10,
            "distribution": "normal",
            "description": "Intensity of the emotion experienced by the listener, on a scale from 1 to 10."
          },
          "listening_duration": {
            "kind": "int",
            "min": 1,
            "max": 180,
            "distribution": "normal",
            "description": "Duration of listening in minutes for the scrobbled episode."
          }
        }
      },
      "radio_stations": {
        "description": "This table lists various radio stations that listeners can interact with, including their genres.",
        "rows": 50,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each radio station."
          },
          "name": {
            "kind": "words",
            "min": 1,
            "max": 3,
            "description": "Name of the radio station.",
            "pool": [
              "wave",
              "stream",
              "broadcast",
              "network",
              "station",
              "radio",
              "fm",
              "digital",
              "audio",
              "channel",
              "hub",
              "signal",
              "transmission",
              "platform",
              "voice",
              "broadcasting",
              "media",
              "content",
              "show",
              "live",
              "feed"
            ]
          },
          "genre": {
            "kind": "enum",
            "values": [
              "pop",
              "rock",
              "jazz",
              "classical",
              "news"
            ],
            "description": "Genre of the radio station."
          },
          "frequency": {
            "kind": "decimal",
            "min": 87.5,
            "max": 108,
            "scale": 1,
            "description": "Frequency of the radio station in FM MHz."
          }
        }
      },
      "listener_radio_interactions": {
        "description": "This table captures interactions listeners have with radio stations, including listening duration.",
        "rows": 300,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each interaction."
          },
          "listener_id": {
            "kind": "fk",
            "ref": "listeners.id",
            "description": "Foreign key linking to the listener."
          },
          "station_id": {
            "kind": "fk",
            "ref": "radio_stations.id",
            "description": "Foreign key linking to the radio station."
          },
          "interaction_time": {
            "kind": "datetime",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "Timestamp of the listener's interaction with the radio station.",
            "dayProfile": "waking"
          },
          "duration": {
            "kind": "int",
            "min": 1,
            "max": 120,
            "description": "Duration of the interaction in minutes.",
            "distribution": "normal"
          },
          "emotion": {
            "kind": "enum",
            "values": [
              "happy",
              "sad",
              "excited",
              "relaxed",
              "thoughtful"
            ],
            "weights": [
              30,
              20,
              25,
              15,
              10
            ],
            "description": "Emotional tone experienced by the listener during the radio interaction."
          },
          "listening_duration": {
            "kind": "int",
            "min": 1,
            "max": 120,
            "distribution": "normal",
            "description": "Duration of the interaction in minutes."
          }
        }
      }
    },
    "structure": "multi-table",
    "traits": [
      "timestamped",
      "categorical",
      "nullable"
    ],
    "analysisQuestions": [
      "What podcast genres are most popular among listeners?",
      "How do listener demographics affect their podcast preferences?",
      "Which episodes generate the highest emotional engagement based on scrobbles?",
      "What are the average listening durations for different radio stations?",
      "Are there specific times when listeners prefer to engage with podcasts?"
    ],
    "suggestedQueries": [
      {
        "title": "Join Listeners and Their Favorite Podcasts",
        "sql": "SELECT l.full_name, p.title FROM listeners l JOIN podcasts p ON l.preferred_genre = p.genre;",
        "dialect": "postgres"
      },
      {
        "title": "Count Episodes per Podcast",
        "sql": "SELECT podcast_id, COUNT(*) as episode_count FROM episodes GROUP BY podcast_id;",
        "dialect": "postgres"
      },
      {
        "title": "Average Duration of Episodes by Genre",
        "sql": "SELECT p.genre, AVG(e.duration) as avg_duration FROM episodes e JOIN podcasts p ON e.podcast_id = p.id GROUP BY p.genre;",
        "dialect": "postgres"
      },
      {
        "title": "Listeners Scrobbling Behavior Over Time",
        "sql": "SELECT DATE(s.scrobble_time) as date, COUNT(*) as scrobble_count FROM scrobbles s GROUP BY date ORDER BY date;",
        "dialect": "postgres"
      },
      {
        "title": "Emotional Tones of Scrobbles by Podcast",
        "sql": "SELECT p.title, s.emotion, COUNT(*) FROM scrobbles s JOIN episodes e ON s.episode_id = e.id JOIN podcasts p ON e.podcast_id = p.id GROUP BY p.title, s.emotion;",
        "dialect": "postgres"
      }
    ],
    "usageScenarios": [
      {
        "title": "Podcast Analytics Dashboard",
        "body": "Data analysts can leverage this dataset to build an analytics dashboard that visualizes listener engagement, podcast popularity, and emotional responses. By querying the database, they can generate reports that help podcast creators tailor their content to audience preferences."
      },
      {
        "title": "User Behavior Analysis",
        "body": "Researchers can utilize the data to study user behavior in podcast consumption. By examining how different demographics engage with various genres, they can uncover trends that inform marketing strategies for podcast platforms."
      },
      {
        "title": "Radio Station Engagement Study",
        "body": "Media companies can analyze listener interactions with radio stations to improve content offerings. By understanding which genres attract the most listeners and the average listening duration, they can refine programming and advertising strategies."
      },
      {
        "title": "Recommendation System Development",
        "body": "Developers can use this dataset to create a podcast recommendation system. By analyzing listener preferences and engagement, they can build algorithms that suggest new podcasts based on user behavior and emotional tones of content."
      }
    ]
  },
  "counts": {
    "listeners": 200,
    "podcasts": 100,
    "episodes": 500,
    "radio_stations": 50,
    "listener_radio_interactions": 300,
    "scrobbles": 1000
  },
  "stats": {
    "listeners": {
      "rows": 200,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "full_name": {
          "nulls": 0,
          "distinct": 200,
          "min": "Alice Johnson",
          "max": "Zoe Kumar"
        },
        "email": {
          "nulls": 0,
          "distinct": 200
        },
        "age": {
          "nulls": 0,
          "distinct": 31,
          "min": 27,
          "max": 59
        },
        "country": {
          "nulls": 0,
          "distinct": 42,
          "min": "Argentina",
          "max": "United States"
        },
        "preferred_genre": {
          "nulls": 0,
          "distinct": 7,
          "min": "comedy",
          "max": "true crime"
        }
      }
    },
    "podcasts": {
      "rows": 100,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 100,
          "min": 1,
          "max": 100
        },
        "title": {
          "nulls": 0,
          "distinct": 86
        },
        "description": {
          "nulls": 0,
          "distinct": 100
        },
        "genre": {
          "nulls": 0,
          "distinct": 7,
          "min": "comedy",
          "max": "true crime"
        },
        "launch_date": {
          "nulls": 0,
          "distinct": 97,
          "min": "2020-01-10",
          "max": "2023-11-21"
        }
      }
    },
    "episodes": {
      "rows": 500,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 500,
          "min": 1,
          "max": 500
        },
        "podcast_id": {
          "nulls": 0,
          "distinct": 98,
          "min": 1,
          "max": 100
        },
        "title": {
          "nulls": 0,
          "distinct": 327
        },
        "duration": {
          "nulls": 0,
          "distinct": 114,
          "min": 19,
          "max": 161
        },
        "release_date": {
          "nulls": 0,
          "distinct": 411,
          "min": "2020-01-01",
          "max": "2023-12-31"
        }
      }
    },
    "scrobbles": {
      "rows": 1000,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 1000,
          "min": 1,
          "max": 1000
        },
        "listener_id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "episode_id": {
          "nulls": 0,
          "distinct": 434,
          "min": 1,
          "max": 499
        },
        "scrobble_time": {
          "nulls": 0,
          "distinct": 1000,
          "min": "2023-01-02 10:32:57",
          "max": "2023-12-31 16:46:53"
        },
        "emotion": {
          "nulls": 0,
          "distinct": 5,
          "min": "excited",
          "max": "thoughtful"
        },
        "emotion_intensity": {
          "nulls": 0,
          "distinct": 8,
          "min": 2,
          "max": 9
        },
        "listening_duration": {
          "nulls": 0,
          "distinct": 128,
          "min": 18,
          "max": 163
        }
      }
    },
    "radio_stations": {
      "rows": 50,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 50,
          "min": 1,
          "max": 50
        },
        "name": {
          "nulls": 0,
          "distinct": 42
        },
        "genre": {
          "nulls": 0,
          "distinct": 5,
          "min": "classical",
          "max": "rock"
        },
        "frequency": {
          "nulls": 0,
          "distinct": 45,
          "min": 87.6,
          "max": 107.2
        }
      }
    },
    "listener_radio_interactions": {
      "rows": 300,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 300,
          "min": 1,
          "max": 300
        },
        "listener_id": {
          "nulls": 0,
          "distinct": 154,
          "min": 1,
          "max": 200
        },
        "station_id": {
          "nulls": 0,
          "distinct": 49,
          "min": 1,
          "max": 50
        },
        "interaction_time": {
          "nulls": 0,
          "distinct": 300,
          "min": "2023-01-04 12:55:36",
          "max": "2023-12-30 01:45:11"
        },
        "duration": {
          "nulls": 0,
          "distinct": 74,
          "min": 20,
          "max": 106
        },
        "emotion": {
          "nulls": 0,
          "distinct": 5,
          "min": "excited",
          "max": "thoughtful"
        },
        "listening_duration": {
          "nulls": 0,
          "distinct": 74,
          "min": 23,
          "max": 105
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/listeners.csv",
      "format": "csv",
      "table": "listeners",
      "key": "datasets/podcast-listening-insights/v3/csv/listeners.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/podcast-listening-insights/v3/csv/listeners.csv",
      "bytes": 12267,
      "sha256": "ea5c62883be43b1eca984b21a00eda5198bbfd9c4cf688a599d0c4f8a005c293",
      "rows": 200,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/podcasts.csv",
      "format": "csv",
      "table": "podcasts",
      "key": "datasets/podcast-listening-insights/v3/csv/podcasts.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/podcast-listening-insights/v3/csv/podcasts.csv",
      "bytes": 23511,
      "sha256": "2ed1ab97dbefe6f66114f72d06c45cbeb1d7e6b02a0cdcd7b2df03248aa5469c",
      "rows": 100,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/episodes.csv",
      "format": "csv",
      "table": "episodes",
      "key": "datasets/podcast-listening-insights/v3/csv/episodes.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/podcast-listening-insights/v3/csv/episodes.csv",
      "bytes": 19863,
      "sha256": "ff99dfce9cc765e51d807c5a0f2fb9a2a5e27a4bd5344cf0598207082543977e",
      "rows": 500,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/radio_stations.csv",
      "format": "csv",
      "table": "radio_stations",
      "key": "datasets/podcast-listening-insights/v3/csv/radio_stations.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/podcast-listening-insights/v3/csv/radio_stations.csv",
      "bytes": 1452,
      "sha256": "86acc72059f4811d3d07e1d2b5448a2392ce22df806a538ac8aaea8368e90a94",
      "rows": 50,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/listener_radio_interactions.csv",
      "format": "csv",
      "table": "listener_radio_interactions",
      "key": "datasets/podcast-listening-insights/v3/csv/listener_radio_interactions.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/podcast-listening-insights/v3/csv/listener_radio_interactions.csv",
      "bytes": 13269,
      "sha256": "17d21a76e0fdfd9ec6556de19fc178e6a66b3cba66acd6042ab05211cf973d7f",
      "rows": 300,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/scrobbles.csv",
      "format": "csv",
      "table": "scrobbles",
      "key": "datasets/podcast-listening-insights/v3/csv/scrobbles.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/podcast-listening-insights/v3/csv/scrobbles.csv",
      "bytes": 44376,
      "sha256": "9155f89a7ac969efb5196bf4c50c245ed79db5bf26f195d28e15c2b8b6a489c6",
      "rows": 1000,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "podcast-listening-insights.json",
      "format": "json",
      "table": null,
      "key": "datasets/podcast-listening-insights/v3/podcast-listening-insights.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/podcast-listening-insights/v3/podcast-listening-insights.json",
      "bytes": 427044,
      "sha256": "8cb1355d923e31b84bf6f217d669af6a6be60c59659f77681772e4fc790b6b1e",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/podcast-listening-insights/v3/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/podcast-listening-insights/v3/sql/postgres.sql",
      "bytes": 153034,
      "sha256": "c1bba2d877fab49029e2ed70af3b41109606a1ba33afa4636b977b495b7c2268",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/podcast-listening-insights/v3/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/podcast-listening-insights/v3/sql/mysql.sql",
      "bytes": 152295,
      "sha256": "9d24267223e9ae19f6defc107c54c3cb815bd12a8ba199c457c519fe1589ff79",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/podcast-listening-insights/v3/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/podcast-listening-insights/v3/sql/mssql.sql",
      "bytes": 157637,
      "sha256": "183bae96be3285e778283f426c47e07fe65b308146aa1851f7aae5f8fdf4749a",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/podcast-listening-insights/v3/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/podcast-listening-insights/v3/sql/sqlite.sql",
      "bytes": 151978,
      "sha256": "fa52246941989c45de95e9da56985d57106aa6a949d09293276d43b0fd1222a2",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/podcast-listening-insights/v3/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/podcast-listening-insights/v3/prisma/seed.ts",
      "bytes": 343123,
      "sha256": "707236d51219b6d09ea84a35eff4ba9917b2b47b1863c016238261ae9874fa90",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/podcast-listening-insights/v3/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/podcast-listening-insights/v3/django/fixtures.json",
      "bytes": 520159,
      "sha256": "7324b897f832a37f39eb118352129a214d07ba8f6b32eec234d97923378dd130",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788766812241,
  "updatedAt": 1789095986991
}
