{
  "format": "dataset-manifest/1",
  "slug": "podcast-episodes-database",
  "version": 3,
  "seed": "podcast-episodes-database:1",
  "engine": 1,
  "engineVersion": "1.0.0",
  "spec": {
    "format": "dataset/1",
    "slug": "podcast-episodes-database",
    "name": "Podcast Insights",
    "tagline": "Episodes, podcasts, hosts, users, reviews, and sponsorship details from a diverse range of podcasts.",
    "description": "Listeners engage with a diverse range of podcasts, each providing unique content that captivates audiences. The podcast ecosystem thrives on episodes that offer compelling narratives, delivered by charismatic hosts, and supported by user engagement through reviews and ratings. Each episode is tied to a specific podcast, creating a structured relationship where users can easily navigate through their favorite shows. Sponsors play a vital role in monetizing these episodes, with multiple sponsorships sometimes appearing in a single episode, enhancing the overall experience for both creators and listeners. The data reveals how genre preferences impact user engagement and sponsorship strategies, with many podcasts clustering around popular themes such as true crime and storytelling.\n\nThe dataset features several interconnected tables: the episodes table captures details about each audio segment; the podcasts table outlines the series to which these episodes belong; hosts link to the individuals or teams presenting the content; users represent the audience engaging with the episodes; reviews reflect listener feedback and ratings; and sponsors detail the companies backing the content. Each episode row connects to its respective podcast, while user interactions with episodes provide insights into listener satisfaction. Reviews link back to users, allowing analysis of audience sentiment towards specific episodes and hosts, and sponsors can be associated with episodes to track the impact of advertising on performance.\n\nThis dataset answers critical questions such as which podcast genres attract the most listeners, how user reviews correlate with episode success, and the effectiveness of different sponsors. It is an excellent resource for practicing data analysis techniques, exploring trends in podcasting, and understanding audience behavior. The data is synthetic, designed to reflect the dynamics of the podcast industry while enabling developers to hone their skills without the complexities of real-world data.",
    "domain": "media",
    "shape": "transactional",
    "useCases": [
      "sql-practice",
      "orm-seeding"
    ],
    "keywords": [
      "podcasts",
      "episodes",
      "reviews",
      "sponsors",
      "platforms",
      "users",
      "hosts",
      "genres",
      "ratings",
      "comments"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "episodes": {
        "description": "Each row represents a podcast episode, linking to its respective podcast, host, and sponsorship details. It captures essential information about the episodes.",
        "rows": 200,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for the episode."
          },
          "title": {
            "kind": "words",
            "max": 3,
            "description": "Title of the podcast episode.",
            "pool": [
              "adventure",
              "mystery",
              "science",
              "history",
              "comedy",
              "interview",
              "insight",
              "exploration",
              "journey",
              "discovery",
              "narrative",
              "analysis",
              "review",
              "discussion",
              "debate",
              "perspective",
              "storytelling",
              "persuasion",
              "dialogue",
              "expose"
            ],
            "min": 1
          },
          "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": "Release date of the episode.",
            "trend": "seasonal"
          },
          "podcast_id": {
            "kind": "fk",
            "ref": "podcasts.id",
            "description": "Foreign key linking to the podcast the episode belongs to."
          },
          "host_id": {
            "kind": "fk",
            "ref": "hosts.id",
            "description": "Foreign key linking to the host of the episode."
          },
          "sponsor_id": {
            "kind": "fk",
            "ref": "sponsors.id",
            "nullable": true,
            "description": "Foreign key linking to the sponsor of the episode."
          },
          "genre": {
            "kind": "enum",
            "values": [
              "true crime",
              "storytelling",
              "news",
              "comedy",
              "education",
              "technology"
            ],
            "description": "Genre of the podcast episode."
          }
        }
      },
      "podcasts": {
        "description": "Each row represents a podcast series, linking to its episodes and hosts. It encapsulates overarching details about the series.",
        "rows": 50,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for the podcast."
          },
          "name": {
            "kind": "words",
            "max": 3,
            "description": "Name of the podcast.",
            "pool": [
              "theory",
              "chronicles",
              "files",
              "circuit",
              "waves",
              "voices",
              "journey",
              "hub",
              "network",
              "insights",
              "cast",
              "talk",
              "show",
              "series",
              "sessions",
              "roundtable",
              "dialogue",
              "report",
              "update",
              "exploration",
              "adventures"
            ],
            "min": 1
          },
          "description": {
            "kind": "paragraph",
            "max": 200,
            "description": "Brief description of the podcast series."
          },
          "total_episodes": {
            "kind": "int",
            "min": 1,
            "max": 20,
            "distribution": "normal",
            "description": "Total number of episodes in the podcast series."
          },
          "average_rating": {
            "kind": "decimal",
            "min": 1,
            "max": 5,
            "scale": 1,
            "distribution": "high",
            "description": "Average rating of the podcast based on user reviews."
          }
        }
      },
      "hosts": {
        "description": "Each row represents a podcast host, linking to their episodes. It contains biographical details about the hosts.",
        "rows": 30,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for the host."
          },
          "full_name": {
            "kind": "fullName",
            "description": "Full name of the podcast host."
          },
          "bio": {
            "kind": "paragraph",
            "max": 200,
            "description": "Brief biography of the host."
          },
          "total_episodes_hosted": {
            "kind": "int",
            "min": 1,
            "max": 50,
            "distribution": "normal",
            "description": "Total number of episodes hosted by the podcast host."
          },
          "average_rating_received": {
            "kind": "decimal",
            "min": 1,
            "max": 5,
            "scale": 1,
            "distribution": "high",
            "description": "Average rating received by the host based on user reviews."
          }
        }
      },
      "users": {
        "description": "Each row represents a listener who leaves reviews. It connects to their reviews and ratings for episodes.",
        "rows": 150,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for the user."
          },
          "username": {
            "kind": "words",
            "max": 3,
            "description": "Username of the listener.",
            "pool": [
              "listener1",
              "podfan",
              "audiophile",
              "curiousmind",
              "soundwave",
              "talkjunkie",
              "podcastlover",
              "mediaenthusiast",
              "contentconsumer",
              "insightseeker",
              "theorist",
              "explorer",
              "narrator",
              "storyteller",
              "discussant",
              "debater",
              "analyzer",
              "reviewer",
              "commentator",
              "critic"
            ],
            "min": 1
          },
          "email": {
            "kind": "email",
            "from": "username",
            "description": "Email address of the listener."
          },
          "total_reviews": {
            "kind": "int",
            "min": 1,
            "max": 30,
            "distribution": "normal",
            "description": "Total number of reviews left by the user."
          },
          "average_rating_given": {
            "kind": "decimal",
            "min": 1,
            "max": 5,
            "scale": 1,
            "distribution": "high",
            "description": "Average rating given by the user across all reviews."
          }
        }
      },
      "reviews": {
        "description": "Each row contains user reviews for episodes, linking to users and episodes. It captures user feedback and ratings.",
        "rows": 500,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for the review."
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.id",
            "description": "Foreign key linking to the user who left the review."
          },
          "episode_id": {
            "kind": "fk",
            "ref": "episodes.id",
            "description": "Foreign key linking to the episode being reviewed."
          },
          "rating": {
            "kind": "int",
            "min": 1,
            "max": 5,
            "description": "Rating given by the user, from 1 to 5 stars.",
            "distribution": "high"
          },
          "comment": {
            "kind": "sentence",
            "max": 100,
            "description": "User's comment on the episode."
          },
          "helpful_votes": {
            "kind": "int",
            "min": 0,
            "max": 100,
            "distribution": "normal",
            "description": "Number of users who found the review helpful."
          }
        }
      },
      "sponsors": {
        "description": "Each row represents a sponsor linked to episodes. It contains details about the sponsors involved with the podcasts.",
        "rows": 20,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for the sponsor."
          },
          "name": {
            "kind": "company",
            "description": "Name of the sponsoring company."
          },
          "website": {
            "kind": "url",
            "description": "Website of the sponsoring company."
          },
          "total_campaigns": {
            "kind": "int",
            "min": 1,
            "max": 10,
            "distribution": "normal",
            "description": "Total number of campaigns run by the sponsor."
          },
          "average_sponsorship_amount": {
            "kind": "decimal",
            "min": 1000,
            "max": 50000,
            "scale": 2,
            "distribution": "heavy-tail",
            "description": "Average amount spent on sponsorship by the company."
          }
        }
      }
    },
    "structure": "multi-table",
    "traits": [
      "categorical",
      "nullable",
      "timestamped",
      "high-cardinality"
    ],
    "analysisQuestions": [
      "Which podcast genres receive the highest ratings?",
      "How do user reviews vary between different hosts?",
      "What is the average episode length across various podcasts?",
      "Which sponsors are most frequently associated with high-rated episodes?",
      "How do listener demographics affect their ratings and comments?"
    ],
    "suggestedQueries": [
      {
        "title": "List all episodes with their corresponding podcasts and hosts",
        "sql": "SELECT episodes.title, podcasts.name AS podcast_name, hosts.full_name AS host_name FROM episodes JOIN podcasts ON episodes.podcast_id = podcasts.id JOIN hosts ON episodes.host_id = hosts.id;",
        "dialect": "postgres"
      },
      {
        "title": "Calculate average ratings for each podcast",
        "sql": "SELECT podcasts.name, AVG(reviews.rating) AS average_rating FROM reviews JOIN episodes ON reviews.episode_id = episodes.id JOIN podcasts ON episodes.podcast_id = podcasts.id GROUP BY podcasts.name;",
        "dialect": "postgres"
      },
      {
        "title": "Find the total number of reviews per episode",
        "sql": "SELECT episodes.title, COUNT(reviews.id) AS review_count FROM episodes LEFT JOIN reviews ON episodes.id = reviews.episode_id GROUP BY episodes.title;",
        "dialect": "postgres"
      },
      {
        "title": "Identify top sponsors by the number of associated episodes",
        "sql": "SELECT sponsors.name, COUNT(episodes.id) AS episode_count FROM sponsors JOIN episodes ON sponsors.id = episodes.sponsor_id GROUP BY sponsors.name ORDER BY episode_count DESC;",
        "dialect": "postgres"
      },
      {
        "title": "Retrieve episodes with ratings above 4, along with user comments",
        "sql": "SELECT episodes.title, reviews.comment FROM episodes JOIN reviews ON episodes.id = reviews.episode_id WHERE reviews.rating > 4;",
        "dialect": "postgres"
      }
    ],
    "usageScenarios": [
      {
        "title": "Podcast Analytics",
        "body": "Data analysts at a media agency can use this dataset to evaluate the performance of various podcasts. By examining episode ratings and user feedback, they can identify which genres resonate most with audiences, providing insights for future content development."
      },
      {
        "title": "Host Evaluation",
        "body": "Podcast networks can utilize this dataset to assess their hosts' effectiveness. By analyzing user reviews and ratings correlated with specific hosts, they can make data-driven decisions regarding host selection and training."
      },
      {
        "title": "Sponsorship Impact Analysis",
        "body": "Marketing teams can leverage this dataset to analyze the impact of sponsorship on podcast episodes. By correlating sponsor presence with episode ratings and comments, they can refine advertising strategies and partnerships."
      },
      {
        "title": "User Engagement Tracking",
        "body": "Developers building podcast platforms can use this dataset for ORM seeding and to simulate user engagement scenarios. By examining how users interact with episodes and leave reviews, they can enhance user experience and features."
      }
    ]
  },
  "counts": {
    "hosts": 30,
    "podcasts": 50,
    "sponsors": 20,
    "episodes": 200,
    "users": 150,
    "reviews": 500
  },
  "stats": {
    "episodes": {
      "rows": 200,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "title": {
          "nulls": 0,
          "distinct": 147
        },
        "duration": {
          "nulls": 0,
          "distinct": 89,
          "min": 30,
          "max": 151
        },
        "release_date": {
          "nulls": 0,
          "distinct": 184,
          "min": "2020-01-01",
          "max": "2023-12-29"
        },
        "podcast_id": {
          "nulls": 0,
          "distinct": 50,
          "min": 1,
          "max": 50
        },
        "host_id": {
          "nulls": 0,
          "distinct": 30,
          "min": 1,
          "max": 30
        },
        "sponsor_id": {
          "nulls": 19,
          "distinct": 20,
          "min": 1,
          "max": 20
        },
        "genre": {
          "nulls": 0,
          "distinct": 6,
          "min": "comedy",
          "max": "true crime"
        }
      }
    },
    "podcasts": {
      "rows": 50,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 50,
          "min": 1,
          "max": 50
        },
        "name": {
          "nulls": 0,
          "distinct": 47
        },
        "description": {
          "nulls": 0,
          "distinct": 50
        },
        "total_episodes": {
          "nulls": 0,
          "distinct": 12,
          "min": 3,
          "max": 17
        },
        "average_rating": {
          "nulls": 0,
          "distinct": 28,
          "min": 1.2,
          "max": 5
        }
      }
    },
    "hosts": {
      "rows": 30,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 30,
          "min": 1,
          "max": 30
        },
        "full_name": {
          "nulls": 0,
          "distinct": 30,
          "min": "Alice Gupta",
          "max": "Yara Costa"
        },
        "bio": {
          "nulls": 0,
          "distinct": 30
        },
        "total_episodes_hosted": {
          "nulls": 0,
          "distinct": 18,
          "min": 11,
          "max": 39
        },
        "average_rating_received": {
          "nulls": 0,
          "distinct": 17,
          "min": 1.6,
          "max": 5
        }
      }
    },
    "users": {
      "rows": 150,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 150,
          "min": 1,
          "max": 150
        },
        "username": {
          "nulls": 0,
          "distinct": 113
        },
        "email": {
          "nulls": 0,
          "distinct": 132
        },
        "total_reviews": {
          "nulls": 0,
          "distinct": 20,
          "min": 6,
          "max": 25
        },
        "average_rating_given": {
          "nulls": 0,
          "distinct": 34,
          "min": 1,
          "max": 5
        }
      }
    },
    "reviews": {
      "rows": 500,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 500,
          "min": 1,
          "max": 500
        },
        "user_id": {
          "nulls": 0,
          "distinct": 145,
          "min": 1,
          "max": 150
        },
        "episode_id": {
          "nulls": 0,
          "distinct": 179,
          "min": 1,
          "max": 200
        },
        "rating": {
          "nulls": 0,
          "distinct": 5,
          "min": 1,
          "max": 5
        },
        "comment": {
          "nulls": 0,
          "distinct": 496
        },
        "helpful_votes": {
          "nulls": 0,
          "distinct": 73,
          "min": 9,
          "max": 95
        }
      }
    },
    "sponsors": {
      "rows": 20,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 20,
          "min": 1,
          "max": 20
        },
        "name": {
          "nulls": 0,
          "distinct": 20,
          "min": "Apex Health",
          "max": "Ridge Industries"
        },
        "website": {
          "nulls": 0,
          "distinct": 20
        },
        "total_campaigns": {
          "nulls": 0,
          "distinct": 5,
          "min": 3,
          "max": 7
        },
        "average_sponsorship_amount": {
          "nulls": 0,
          "distinct": 20,
          "min": 1021.6,
          "max": 39301.7
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/hosts.csv",
      "format": "csv",
      "table": "hosts",
      "key": "datasets/podcast-episodes-database/v3/csv/hosts.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/podcast-episodes-database/v3/csv/hosts.csv",
      "bytes": 5815,
      "sha256": "00db2463894b1c83d2d0b5cc5bce7955ad785a1ca20785db8fb3096750e90deb",
      "rows": 30,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/podcasts.csv",
      "format": "csv",
      "table": "podcasts",
      "key": "datasets/podcast-episodes-database/v3/csv/podcasts.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/podcast-episodes-database/v3/csv/podcasts.csv",
      "bytes": 9992,
      "sha256": "41c10b55678be8bf39e2f14d77d21fa0b3f2d1d69fb01ef908221a5c81947b14",
      "rows": 50,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/sponsors.csv",
      "format": "csv",
      "table": "sponsors",
      "key": "datasets/podcast-episodes-database/v3/csv/sponsors.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/podcast-episodes-database/v3/csv/sponsors.csv",
      "bytes": 1290,
      "sha256": "bc8cc14ca0e71890efce04f5a11953bc7110ae9dd9d36593a23668d0472a3070",
      "rows": 20,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/episodes.csv",
      "format": "csv",
      "table": "episodes",
      "key": "datasets/podcast-episodes-database/v3/csv/episodes.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/podcast-episodes-database/v3/csv/episodes.csv",
      "bytes": 11063,
      "sha256": "7aac0996c5ef3e33ba32747f83fd455bd2b94ace2a9f1efaf6e811995da53806",
      "rows": 200,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/users.csv",
      "format": "csv",
      "table": "users",
      "key": "datasets/podcast-episodes-database/v3/csv/users.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/podcast-episodes-database/v3/csv/users.csv",
      "bytes": 10460,
      "sha256": "e69b20c1b1e31d29c5bf641d163728510b5e430342135517be1aba6649b2c7ca",
      "rows": 150,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/reviews.csv",
      "format": "csv",
      "table": "reviews",
      "key": "datasets/podcast-episodes-database/v3/csv/reviews.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/podcast-episodes-database/v3/csv/reviews.csv",
      "bytes": 36497,
      "sha256": "701480065e1ac34ef0f62c0a2ae51f56c7b6ca2c9b52016607fad7e1e306b9c0",
      "rows": 500,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "podcast-episodes-database.json",
      "format": "json",
      "table": null,
      "key": "datasets/podcast-episodes-database/v3/podcast-episodes-database.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/podcast-episodes-database/v3/podcast-episodes-database.json",
      "bytes": 199158,
      "sha256": "8aa7c9dd0adfad3ee601e00dbe875ee62954150c105e5aa3d38146f36be9909d",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/podcast-episodes-database/v3/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/podcast-episodes-database/v3/sql/postgres.sql",
      "bytes": 92202,
      "sha256": "d64c305dc20796f198fe35d606c56793d7562e334fbbd81f3eded463898a8f44",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/podcast-episodes-database/v3/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/podcast-episodes-database/v3/sql/mysql.sql",
      "bytes": 91529,
      "sha256": "ce600976d7c48809ce4245f72d98213d10d60e13cd423cfa75e7b417e1d76ced",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/podcast-episodes-database/v3/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/podcast-episodes-database/v3/sql/mssql.sql",
      "bytes": 93516,
      "sha256": "540dc063a6f0271bb4207a0df4cfcf844e261233f54fe51f2bf6d311070bf09a",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/podcast-episodes-database/v3/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/podcast-episodes-database/v3/sql/sqlite.sql",
      "bytes": 91335,
      "sha256": "d56bc820b1970a305deb3884b09df36d21ca05be5cd89eb9cb67c14b828d37c8",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/podcast-episodes-database/v3/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/podcast-episodes-database/v3/prisma/seed.ts",
      "bytes": 157733,
      "sha256": "d1869be94e1b9cd40de5eeb4682bb6d5f587cdb733daa9ad5e06857c3b403d81",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/podcast-episodes-database/v3/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/podcast-episodes-database/v3/django/fixtures.json",
      "bytes": 235603,
      "sha256": "374065be80f55322ad6c39c01a7ead1e85ee77fc7645161e1161f4315eacc8aa",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788767493322,
  "updatedAt": 1789095982597
}
