{
  "format": "dataset-manifest/1",
  "slug": "ott-over-the-top-streaming-app",
  "version": 3,
  "seed": "ott-over-the-top-streaming-app:1",
  "engine": 1,
  "engineVersion": "1.0.0",
  "spec": {
    "format": "dataset/1",
    "slug": "ott-over-the-top-streaming-app",
    "name": "Streaming Content Dynamics",
    "tagline": "User profiles, subscriptions, content ratings, and watch histories from a digital entertainment platform.",
    "description": "Users browse a dynamic library of movies and shows, curating their personal viewing experiences. Each user establishes a profile that highlights their preferences, which feeds into a tailored subscription plan. Various subscription options cater to different engagement levels, allowing users to choose the plan that fits their viewing habits best. As users interact with the content, their watch histories are meticulously recorded, reflecting their choices and behaviors over time. This detailed data collection enables the business to understand not just what content is popular, but also the diverse tastes and preferences of its user base.\n\nThe data model includes several interrelated tables. The 'users' table contains individual user profiles, each identified by a unique user ID. The 'subscriptions' table links to users, showcasing the subscription level and payment methods, allowing analysis of revenue streams and user retention. 'Content' holds information about movies and shows, including genres and production studios, and connects to 'watch_history', which records user interactions with specific titles, detailing what was watched and when. Lastly, the 'ratings' table captures user feedback on different shows, providing insight into audience satisfaction and content performance.\n\nThis dataset facilitates exploration of critical questions in the media domain. For developers and analysts, it offers opportunities to investigate user engagement trends, understand the impact of content ratings on viewing habits, and analyze subscription retention based on user demographics. Additionally, examining the interplay between content preferences and subscription choices can reveal underlying patterns that drive user engagement. It's important to note that all data is synthetic, designed to mimic real-world dynamics in streaming content without compromising any actual user information.",
    "domain": "media",
    "shape": "slowly-changing",
    "useCases": [
      "etl-pipelines",
      "teaching"
    ],
    "keywords": [
      "streaming",
      "media",
      "user engagement",
      "watch history",
      "content ratings",
      "subscriptions"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "users": {
        "description": "Each row represents a user profile, linking to their subscription type and watch history. This table captures user demographics and preferences.",
        "rows": 250,
        "columns": {
          "user_id": {
            "kind": "pk",
            "description": "Unique identifier for each user."
          },
          "full_name": {
            "kind": "fullName",
            "description": "The full name of the user."
          },
          "email": {
            "kind": "email",
            "from": "full_name",
            "description": "User's email address."
          },
          "subscription_type": {
            "kind": "fk",
            "ref": "subscriptions.id",
            "description": "Link to the user's subscription type."
          },
          "created_at": {
            "kind": "datetime",
            "from": "2022-01-01",
            "to": "2023-12-31",
            "description": "Date when the user created their account."
          }
        }
      },
      "subscriptions": {
        "description": "This table contains subscription types available to users, detailing the features and pricing associated with each type.",
        "rows": 5,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each subscription type."
          },
          "name": {
            "kind": "words",
            "max": 3,
            "description": "Name of the subscription plan.",
            "pool": [
              "basic",
              "premium",
              "family",
              "student",
              "unlimited",
              "standard",
              "exclusive",
              "annual",
              "monthly",
              "trial",
              "bundle",
              "plus",
              "ultimate",
              "classic",
              "enhanced",
              "lite",
              "pro",
              "advanced",
              "special",
              "flexible",
              "on-demand"
            ],
            "min": 1
          },
          "price": {
            "kind": "decimal",
            "min": 5,
            "max": 20,
            "scale": 2,
            "description": "Monthly price of the subscription plan.",
            "distribution": "long-tail"
          },
          "features": {
            "kind": "json",
            "template": {
              "feature": {
                "kind": "words",
                "max": 15,
                "description": "Description of a feature included in the subscription."
              }
            },
            "description": "Features available in the subscription plan."
          }
        }
      },
      "content": {
        "description": "Contains information about movies and shows available on the platform, including their ratings and associated studios.",
        "rows": 100,
        "columns": {
          "content_id": {
            "kind": "pk",
            "description": "Unique identifier for each piece of content."
          },
          "title": {
            "kind": "words",
            "max": 5,
            "description": "Title of the movie or show.",
            "pool": [
              "adventure",
              "mystery",
              "romance",
              "thriller",
              "sci-fi",
              "fantasy",
              "comedy",
              "drama",
              "action",
              "documentary",
              "horror",
              "animation",
              "biography",
              "musical",
              "historical",
              "superhero",
              "family",
              "crime",
              "sports",
              "reality",
              "game"
            ],
            "min": 2
          },
          "studio": {
            "kind": "words",
            "max": 3,
            "description": "Studio that produced the content.",
            "pool": [
              "universal",
              "warner",
              "paramount",
              "disney",
              "sony",
              "dreamworks",
              "fox",
              "lionsgate",
              "columbia",
              "a24",
              "hbo",
              "netflix",
              "amazon",
              "apple",
              "mgm",
              "focus",
              "searchlight",
              "illumination",
              "pixar",
              "studio",
              "independent"
            ],
            "min": 1
          },
          "rating": {
            "kind": "decimal",
            "min": 0,
            "max": 10,
            "scale": 1,
            "description": "Average rating of the content.",
            "distribution": "normal"
          },
          "release_date": {
            "kind": "date",
            "from": "2000-01-01",
            "to": "2023-12-31",
            "description": "Release date of the content."
          }
        }
      },
      "watch_history": {
        "description": "Tracks the viewing history of users, linking to the content they watched and when they watched it.",
        "rows": 500,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each watch history record."
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.user_id",
            "description": "Link to the user who watched the content."
          },
          "content_id": {
            "kind": "fk",
            "ref": "content.content_id",
            "description": "Link to the content that was watched."
          },
          "watched_at": {
            "kind": "datetime",
            "from": "2022-01-01",
            "to": "2023-12-31",
            "dayProfile": "waking",
            "description": "Timestamp of when the content was watched."
          },
          "duration_minutes": {
            "kind": "int",
            "min": 1,
            "max": 300,
            "distribution": "normal",
            "description": "Duration of the content watched in minutes."
          },
          "platform": {
            "kind": "enum",
            "values": [
              "web",
              "mobile",
              "smart TV"
            ],
            "weights": [
              50,
              30,
              20
            ],
            "description": "Platform used to watch the content."
          }
        }
      },
      "ratings": {
        "description": "Users can rate content they've watched, providing insights into user satisfaction and preferences.",
        "rows": 300,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each rating record."
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.user_id",
            "description": "Link to the user who provided the rating."
          },
          "content_id": {
            "kind": "fk",
            "ref": "content.content_id",
            "description": "Link to the content being rated."
          },
          "rating": {
            "kind": "int",
            "min": 1,
            "max": 5,
            "description": "Rating given by the user.",
            "distribution": "high"
          },
          "comment": {
            "kind": "sentence",
            "max": 250,
            "nullable": true,
            "description": "Optional comment from the user about the content."
          },
          "timestamp": {
            "kind": "datetime",
            "from": "2022-01-01",
            "to": "2023-12-31",
            "description": "Timestamp of when the rating was given."
          },
          "helpfulness_score": {
            "kind": "int",
            "min": 1,
            "max": 5,
            "distribution": "high",
            "nullable": true,
            "description": "User's score on how helpful they found the rating."
          }
        }
      }
    },
    "structure": "multi-table",
    "traits": [
      "categorical",
      "timestamped",
      "nullable",
      "high-cardinality"
    ],
    "analysisQuestions": [
      "What subscription types are most popular among users?",
      "How do content ratings affect user engagement?",
      "Which genres are preferred by different user demographics?",
      "What is the average watch time per user per month?",
      "How often do users switch subscription plans?"
    ],
    "suggestedQueries": [
      {
        "title": "Join Users with Watch History",
        "sql": "SELECT users.full_name, watch_history.watched_at FROM users JOIN watch_history ON users.user_id = watch_history.user_id;",
        "dialect": "postgres"
      },
      {
        "title": "Average Rating per Content",
        "sql": "SELECT content.title, AVG(ratings.rating) AS average_rating FROM content JOIN ratings ON content.content_id = ratings.content_id GROUP BY content.title;",
        "dialect": "postgres"
      },
      {
        "title": "Count of Users by Subscription Type",
        "sql": "SELECT subscriptions.name, COUNT(users.user_id) FROM users JOIN subscriptions ON users.subscription_type = subscriptions.id GROUP BY subscriptions.name;",
        "dialect": "postgres"
      },
      {
        "title": "Content Viewed by User",
        "sql": "SELECT users.full_name, COUNT(watch_history.content_id) AS content_count FROM users JOIN watch_history ON users.user_id = watch_history.user_id GROUP BY users.full_name;",
        "dialect": "postgres"
      },
      {
        "title": "Top Rated Content in Each Genre",
        "sql": "SELECT content.title, content.rating FROM content WHERE content.rating >= 4 ORDER BY content.rating DESC;",
        "dialect": "postgres"
      }
    ],
    "usageScenarios": [
      {
        "title": "Data Engineering Course",
        "body": "In a data engineering course, students can use this dataset to practice building ETL pipelines. By extracting, transforming, and loading data from the various tables, they will gain hands-on experience with real-world data workflows, learning how to manipulate and analyze streaming content data effectively."
      },
      {
        "title": "Business Intelligence Analysis",
        "body": "Business analysts can utilize this dataset to create dashboards that visualize user engagement and content performance. Analyzing watch history and ratings will allow them to identify trends and make data-driven decisions regarding content acquisition and marketing strategies."
      },
      {
        "title": "User Behavior Research",
        "body": "Researchers studying user behavior in streaming services can leverage this dataset to explore how different subscription types impact user engagement and preferences. By analyzing the relationship between ratings and watch history, they can draw insights into consumer satisfaction and content effectiveness."
      },
      {
        "title": "Content Recommendation System",
        "body": "Developers building recommendation algorithms can use this dataset to train their models. By analyzing user ratings, watch history, and content attributes, they can create personalized recommendations that enhance user experience and increase engagement on the platform."
      }
    ]
  },
  "counts": {
    "content": 100,
    "subscriptions": 5,
    "users": 250,
    "ratings": 300,
    "watch_history": 500
  },
  "stats": {
    "users": {
      "rows": 250,
      "columns": {
        "user_id": {
          "nulls": 0,
          "distinct": 250,
          "min": 1,
          "max": 250
        },
        "full_name": {
          "nulls": 0,
          "distinct": 245,
          "min": "Alice Castro",
          "max": "Zoe Kowalski"
        },
        "email": {
          "nulls": 0,
          "distinct": 249
        },
        "subscription_type": {
          "nulls": 0,
          "distinct": 5,
          "min": 1,
          "max": 5
        },
        "created_at": {
          "nulls": 0,
          "distinct": 250,
          "min": "2022-01-01 23:14:27",
          "max": "2023-12-26 17:47:10"
        }
      }
    },
    "subscriptions": {
      "rows": 5,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 5,
          "min": 1,
          "max": 5
        },
        "name": {
          "nulls": 0,
          "distinct": 5
        },
        "price": {
          "nulls": 0,
          "distinct": 5,
          "min": 5.33,
          "max": 17.91
        },
        "features": {
          "nulls": 0,
          "distinct": 5
        }
      }
    },
    "content": {
      "rows": 100,
      "columns": {
        "content_id": {
          "nulls": 0,
          "distinct": 100,
          "min": 1,
          "max": 100
        },
        "title": {
          "nulls": 0,
          "distinct": 100
        },
        "studio": {
          "nulls": 0,
          "distinct": 79
        },
        "rating": {
          "nulls": 0,
          "distinct": 48,
          "min": 1.3,
          "max": 8.7
        },
        "release_date": {
          "nulls": 0,
          "distinct": 98,
          "min": "2000-04-08",
          "max": "2023-11-16"
        }
      }
    },
    "watch_history": {
      "rows": 500,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 500,
          "min": 1,
          "max": 500
        },
        "user_id": {
          "nulls": 0,
          "distinct": 221,
          "min": 1,
          "max": 250
        },
        "content_id": {
          "nulls": 0,
          "distinct": 99,
          "min": 1,
          "max": 100
        },
        "watched_at": {
          "nulls": 0,
          "distinct": 500,
          "min": "2022-01-02 18:10:33",
          "max": "2023-12-30 21:24:03"
        },
        "duration_minutes": {
          "nulls": 0,
          "distinct": 171,
          "min": 25,
          "max": 259
        },
        "platform": {
          "nulls": 0,
          "distinct": 3,
          "min": "mobile",
          "max": "web"
        }
      }
    },
    "ratings": {
      "rows": 300,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 300,
          "min": 1,
          "max": 300
        },
        "user_id": {
          "nulls": 0,
          "distinct": 174,
          "min": 3,
          "max": 250
        },
        "content_id": {
          "nulls": 0,
          "distinct": 93,
          "min": 1,
          "max": 99
        },
        "rating": {
          "nulls": 0,
          "distinct": 5,
          "min": 1,
          "max": 5
        },
        "comment": {
          "nulls": 32,
          "distinct": 267
        },
        "timestamp": {
          "nulls": 0,
          "distinct": 300,
          "min": "2022-01-02 06:05:58",
          "max": "2023-12-28 12:09:18"
        },
        "helpfulness_score": {
          "nulls": 25,
          "distinct": 5,
          "min": 1,
          "max": 5
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/content.csv",
      "format": "csv",
      "table": "content",
      "key": "datasets/ott-over-the-top-streaming-app/v3/csv/content.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/ott-over-the-top-streaming-app/v3/csv/content.csv",
      "bytes": 6409,
      "sha256": "9af807ccc656cf189e9df032b8d4f33a2cbfa30c473424d076716576dc063541",
      "rows": 100,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/subscriptions.csv",
      "format": "csv",
      "table": "subscriptions",
      "key": "datasets/ott-over-the-top-streaming-app/v3/csv/subscriptions.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/ott-over-the-top-streaming-app/v3/csv/subscriptions.csv",
      "bytes": 614,
      "sha256": "62b47bca44aba763f5a116f6d64ea25e01048828e43474461f1bfaf5b77a6849",
      "rows": 5,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/users.csv",
      "format": "csv",
      "table": "users",
      "key": "datasets/ott-over-the-top-streaming-app/v3/csv/users.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/ott-over-the-top-streaming-app/v3/csv/users.csv",
      "bytes": 15754,
      "sha256": "01c930a1cbc744c21f4d5dfd29b3dd33187b21c0f53964a3c362443a147a8ab7",
      "rows": 250,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/ratings.csv",
      "format": "csv",
      "table": "ratings",
      "key": "datasets/ott-over-the-top-streaming-app/v3/csv/ratings.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/ott-over-the-top-streaming-app/v3/csv/ratings.csv",
      "bytes": 25711,
      "sha256": "29fc93293628c15214ed5f5792df67d45b06df8da0b9489f47115963bc1415fd",
      "rows": 300,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/watch_history.csv",
      "format": "csv",
      "table": "watch_history",
      "key": "datasets/ott-over-the-top-streaming-app/v3/csv/watch_history.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/ott-over-the-top-streaming-app/v3/csv/watch_history.csv",
      "bytes": 20545,
      "sha256": "26b021dc41af7b667c8a483072092758c9bfbefbcc74cf58b9193cb81754702c",
      "rows": 500,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "ott-over-the-top-streaming-app.json",
      "format": "json",
      "table": null,
      "key": "datasets/ott-over-the-top-streaming-app/v3/ott-over-the-top-streaming-app.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/ott-over-the-top-streaming-app/v3/ott-over-the-top-streaming-app.json",
      "bytes": 222472,
      "sha256": "00a1624688fba97b1440efc97adbe00c70138f4880728f6b88e04c9db166bdcc",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/ott-over-the-top-streaming-app/v3/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/ott-over-the-top-streaming-app/v3/sql/postgres.sql",
      "bytes": 90412,
      "sha256": "dc60115231e5cca43c6e46f7d1ada3578d111cb6fc4d9848926d6cc9ea4810f4",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/ott-over-the-top-streaming-app/v3/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/ott-over-the-top-streaming-app/v3/sql/mysql.sql",
      "bytes": 89809,
      "sha256": "76739dca4d95b2d449376f5f953238e5ecea2a38e38ead58a74b926661e7ffde",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/ott-over-the-top-streaming-app/v3/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/ott-over-the-top-streaming-app/v3/sql/mssql.sql",
      "bytes": 92779,
      "sha256": "9fe402e14693e23a418c8d5d22fb8695623898702d776247104b1c35b5d804a3",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/ott-over-the-top-streaming-app/v3/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/ott-over-the-top-streaming-app/v3/sql/sqlite.sql",
      "bytes": 89588,
      "sha256": "957f9fde47f86789e164155207c2d64b595ee434d451ae50b31f7bdb75d2c033",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/ott-over-the-top-streaming-app/v3/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/ott-over-the-top-streaming-app/v3/prisma/seed.ts",
      "bytes": 184772,
      "sha256": "100811ef258f668c909166f970881b1674fcaf266cc807a10da3a77726bcfc1c",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/ott-over-the-top-streaming-app/v3/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/ott-over-the-top-streaming-app/v3/django/fixtures.json",
      "bytes": 269097,
      "sha256": "3c0a298e874bea287b28d36ee86b9cfd55379de6440debc64bb21ec55ccef937",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788767806088,
  "updatedAt": 1789095962909
}
