{
  "format": "dataset-manifest/1",
  "slug": "news-website",
  "version": 1,
  "seed": "news-website:1",
  "spec": {
    "format": "dataset/1",
    "slug": "news-website",
    "name": "News Activity Metrics",
    "tagline": "Metrics on articles, user engagement, subscriptions, and trending topics from a dynamic news website.",
    "description": "A dynamic news website offers the latest articles, updates, and features to engage a diverse audience. This dataset models user interactions such as article views, comment activity, and social media shares, alongside metrics of trending topics and subscription growth. The tables are designed to capture and analyze how users engage with content, providing valuable insights for improving user experience and informing content strategy. The data highlights that most articles experience moderate traffic, while only a few achieve viral status, creating a distribution where a small percentage captures the majority of engagement. This is a synthetic dataset, ideal for practicing SQL queries and understanding data relationships in a media context.",
    "domain": "media",
    "shape": "slowly-changing",
    "useCases": [
      "etl-pipelines",
      "teaching"
    ],
    "keywords": [
      "news",
      "user engagement",
      "articles",
      "views",
      "comments",
      "shares",
      "subscriptions",
      "trending topics"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "articles": {
        "description": "This table contains information about news articles published on the website, including their titles, publication dates, and categories. Each article is linked to user engagement metrics.",
        "rows": 200,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each article."
          },
          "title": {
            "kind": "sentence",
            "min": 5,
            "max": 150,
            "description": "The title of the article.",
            "nullable": true,
            "when": {
              "column": "category",
              "in": [
                "Politics",
                "Technology",
                "Health",
                "Sports",
                "Entertainment"
              ]
            }
          },
          "published_at": {
            "kind": "datetime",
            "from": "2022-01-01",
            "to": "2023-10-31",
            "description": "The date and time when the article was published.",
            "nullable": true,
            "when": {
              "column": "category",
              "in": [
                "Politics",
                "Technology",
                "Health",
                "Sports",
                "Entertainment"
              ]
            },
            "dayProfile": "waking"
          },
          "category": {
            "kind": "enum",
            "values": [
              "Politics",
              "Technology",
              "Health",
              "Sports",
              "Entertainment"
            ],
            "description": "The category under which the article falls."
          }
        }
      },
      "user_engagement": {
        "description": "This table records user interactions with articles, including views, comments, and shares. Each entry is linked to a specific article, providing a detailed view of user engagement.",
        "rows": {
          "per": "articles",
          "via": "article_id",
          "min": 1,
          "max": 10,
          "skew": "heavy-tail"
        },
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each engagement record."
          },
          "article_id": {
            "kind": "fk",
            "ref": "articles.id",
            "description": "Foreign key linking to the articles table."
          },
          "views": {
            "kind": "int",
            "min": 1,
            "max": 10000,
            "description": "Number of views the article received."
          },
          "comments": {
            "kind": "int",
            "min": 0,
            "max": 500,
            "description": "Number of comments left by users on the article."
          },
          "shares": {
            "kind": "int",
            "min": 0,
            "max": 1000,
            "description": "Number of times the article was shared on social media."
          }
        }
      },
      "subscriptions": {
        "description": "This table tracks subscription metrics over time, recording the number of new subscriptions and cancellations. It helps monitor the growth of the website's subscriber base.",
        "rows": 100,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each subscription record."
          },
          "date": {
            "kind": "date",
            "from": "2022-01-01",
            "to": "2023-10-31",
            "description": "The date of the subscription record.",
            "trend": "growing"
          },
          "new_subscriptions": {
            "kind": "int",
            "min": 0,
            "max": 500,
            "description": "The number of new subscriptions on that date."
          },
          "cancellations": {
            "kind": "int",
            "min": 0,
            "max": 200,
            "description": "The number of cancellations on that date."
          }
        }
      },
      "trending_topics": {
        "description": "This table captures trending topics based on user engagement and article performance. It helps identify which subjects are most popular at any given time.",
        "rows": 50,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each trending topic record."
          },
          "topic": {
            "kind": "words",
            "min": 3,
            "max": 50,
            "description": "The trending topic being tracked."
          },
          "engagement_score": {
            "kind": "decimal",
            "min": 0,
            "max": 100,
            "scale": 2,
            "description": "Score representing the level of engagement for the topic."
          },
          "recorded_at": {
            "kind": "datetime",
            "from": "2022-01-01",
            "to": "2023-10-31",
            "description": "The date and time when the topic was recorded as trending.",
            "dayProfile": "waking"
          }
        }
      },
      "user_profiles": {
        "description": "This table contains anonymized user profile information to understand demographic engagement patterns on the website. Each user profile is linked to their engagement activities.",
        "rows": 300,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each user profile."
          },
          "age": {
            "kind": "int",
            "min": 18,
            "max": 90,
            "description": "The age of the user."
          },
          "location": {
            "kind": "city",
            "description": "City where the user is located."
          },
          "interests": {
            "kind": "words",
            "min": 5,
            "max": 100,
            "description": "User interests related to news topics."
          }
        }
      }
    },
    "structure": "multi-table",
    "traits": [
      "categorical",
      "timestamped",
      "nullable"
    ],
    "analysisQuestions": [
      "What categories of articles have the highest engagement rates?",
      "How do subscriptions change over time, and what factors influence these changes?",
      "Which topics are trending the most, and how does that relate to user engagement?",
      "What is the relationship between article views and the number of comments or shares?",
      "How does user age affect their engagement with different types of articles?"
    ],
    "suggestedQueries": [
      {
        "title": "Join user engagement with articles",
        "sql": "SELECT a.title, e.views, e.comments FROM articles a JOIN user_engagement e ON a.id = e.article_id;",
        "dialect": "postgres"
      },
      {
        "title": "Average views per category",
        "sql": "SELECT a.category, AVG(e.views) as average_views FROM articles a JOIN user_engagement e ON a.id = e.article_id GROUP BY a.category;",
        "dialect": "postgres"
      },
      {
        "title": "Total new subscriptions by month",
        "sql": "SELECT DATE_TRUNC('month', date) AS month, SUM(new_subscriptions) AS total_subscriptions FROM subscriptions GROUP BY month ORDER BY month;",
        "dialect": "postgres"
      },
      {
        "title": "Trending topics based on engagement score",
        "sql": "SELECT topic FROM trending_topics WHERE engagement_score > 75 ORDER BY recorded_at DESC;",
        "dialect": "postgres"
      },
      {
        "title": "Engagement comparison by user age",
        "sql": "SELECT age, AVG(e.views) as average_views, AVG(e.comments) as average_comments FROM user_profiles u JOIN user_engagement e ON u.id = e.id GROUP BY age;",
        "dialect": "postgres"
      }
    ],
    "usageScenarios": [
      {
        "title": "ETL Pipeline Development",
        "body": "Data engineers can utilize this dataset to develop ETL pipelines that extract, transform, and load user engagement metrics into a data warehouse. By simulating real-world scenarios, they can refine their skills in handling various data formats and performing data quality checks."
      },
      {
        "title": "Teaching Database Concepts",
        "body": "Educators can leverage this dataset in classroom settings to teach students about relational database design, SQL querying, and data analysis. The dataset provides a practical context, helping students understand how to query and manipulate data in a media environment."
      },
      {
        "title": "Content Strategy Analysis",
        "body": "Content strategists can analyze user engagement metrics to identify which articles resonate most with readers. By reviewing the data, they can adjust content plans and focus on topics that drive the most traffic and engagement."
      },
      {
        "title": "Market Research",
        "body": "Marketing professionals can use this dataset to conduct market research on audience preferences and behavior. By analyzing trends and engagement scores, they can develop targeted campaigns that align with user interests, ultimately improving outreach efforts."
      }
    ]
  },
  "counts": {
    "articles": 200,
    "subscriptions": 100,
    "trending_topics": 50,
    "user_engagement": 665,
    "user_profiles": 300
  },
  "stats": {
    "articles": {
      "rows": 200,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "title": {
          "nulls": 0,
          "distinct": 200
        },
        "published_at": {
          "nulls": 0,
          "distinct": 200,
          "min": "2022-01-02 22:36:25",
          "max": "2023-10-31 08:33:25"
        },
        "category": {
          "nulls": 0,
          "distinct": 5,
          "min": "Entertainment",
          "max": "Technology"
        }
      }
    },
    "user_engagement": {
      "rows": 665,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 665,
          "min": 1,
          "max": 665
        },
        "article_id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "views": {
          "nulls": 0,
          "distinct": 644,
          "min": 8,
          "max": 9984
        },
        "comments": {
          "nulls": 0,
          "distinct": 367,
          "min": 1,
          "max": 500
        },
        "shares": {
          "nulls": 0,
          "distinct": 505,
          "min": 4,
          "max": 999
        }
      }
    },
    "subscriptions": {
      "rows": 100,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 100,
          "min": 1,
          "max": 100
        },
        "date": {
          "nulls": 0,
          "distinct": 92,
          "min": "2022-01-10",
          "max": "2023-10-24"
        },
        "new_subscriptions": {
          "nulls": 0,
          "distinct": 85,
          "min": 6,
          "max": 496
        },
        "cancellations": {
          "nulls": 0,
          "distinct": 76,
          "min": 2,
          "max": 200
        }
      }
    },
    "trending_topics": {
      "rows": 50,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 50,
          "min": 1,
          "max": 50
        },
        "topic": {
          "nulls": 0,
          "distinct": 50
        },
        "engagement_score": {
          "nulls": 0,
          "distinct": 50,
          "min": 0.17,
          "max": 98.3
        },
        "recorded_at": {
          "nulls": 0,
          "distinct": 50,
          "min": "2022-01-27 09:23:32",
          "max": "2023-10-21 11:31:21"
        }
      }
    },
    "user_profiles": {
      "rows": 300,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 300,
          "min": 1,
          "max": 300
        },
        "age": {
          "nulls": 0,
          "distinct": 71,
          "min": 18,
          "max": 90
        },
        "location": {
          "nulls": 0,
          "distinct": 63,
          "min": "Amsterdam",
          "max": "Zurich"
        },
        "interests": {
          "nulls": 0,
          "distinct": 300
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/articles.csv",
      "format": "csv",
      "table": "articles",
      "key": "datasets/news-website/v1/csv/articles.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/news-website/v1/csv/articles.csv",
      "bytes": 18269,
      "sha256": "3a3c1bfbe06cb5fc3ffcaa138937aa178c69a0709b51c1e314ef0194312bc43e",
      "rows": 200,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/subscriptions.csv",
      "format": "csv",
      "table": "subscriptions",
      "key": "datasets/news-website/v1/csv/subscriptions.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/news-website/v1/csv/subscriptions.csv",
      "bytes": 2247,
      "sha256": "d5f9f8794a14debf788dfa6f910960dfd8bba556a95976c2263d08b79e869ea1",
      "rows": 100,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/trending_topics.csv",
      "format": "csv",
      "table": "trending_topics",
      "key": "datasets/news-website/v1/csv/trending_topics.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/news-website/v1/csv/trending_topics.csv",
      "bytes": 10282,
      "sha256": "4ec063e5eeb1f27165f15b942c331f9103e11c518a0ed56f9860a27ae68fde00",
      "rows": 50,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/user_engagement.csv",
      "format": "csv",
      "table": "user_engagement",
      "key": "datasets/news-website/v1/csv/user_engagement.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/news-website/v1/csv/user_engagement.csv",
      "bytes": 13899,
      "sha256": "7e3516b045806004a8caae4fefe40157cd00e305d8b0b9a362ccacef2ca3b788",
      "rows": 665,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/user_profiles.csv",
      "format": "csv",
      "table": "user_profiles",
      "key": "datasets/news-website/v1/csv/user_profiles.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/news-website/v1/csv/user_profiles.csv",
      "bytes": 108731,
      "sha256": "dff097b211cd961c75089db97e4cd355beb355962054402c90f43a721bd3239e",
      "rows": 300,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "news-website.json",
      "format": "json",
      "table": null,
      "key": "datasets/news-website/v1/news-website.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/news-website/v1/news-website.json",
      "bytes": 273640,
      "sha256": "60a8c0ac90c5e08b8ec4a7a7f9a5e4dee5acfb73d5a98e50c21b0593fd062afe",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/news-website/v1/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/news-website/v1/sql/postgres.sql",
      "bytes": 171180,
      "sha256": "5c90d174b2ee0b0b884e64109fc2dc5429f7ad30dfe7a8a813c75183fd71e316",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/news-website/v1/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/news-website/v1/sql/mysql.sql",
      "bytes": 170571,
      "sha256": "e9452ce27227e6a204d7659203c2fda0fc07577598db5a4f249db23dedc8a668",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/news-website/v1/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/news-website/v1/sql/mssql.sql",
      "bytes": 172339,
      "sha256": "163444ee83d43875524bc7e4760cc69ef58f86512b44ed6b0bc1d975710abc08",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/news-website/v1/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/news-website/v1/sql/sqlite.sql",
      "bytes": 170475,
      "sha256": "0995f50a0c893723aea39efe183065416f592d1ae1df3abab4a4b3c93462436c",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/news-website/v1/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/news-website/v1/prisma/seed.ts",
      "bytes": 235357,
      "sha256": "a20fff43ce57e47267c007a818772b8dc0af6268822b6670bd02bd213a391dba",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/news-website/v1/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/news-website/v1/django/fixtures.json",
      "bytes": 336394,
      "sha256": "673c681647655bae239527284bf1661427e03718320031c9fe5b01648a0035eb",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788768598715,
  "updatedAt": 1788768598715
}
