{
  "format": "dataset-manifest/1",
  "slug": "media-engagement-insights",
  "version": 1,
  "seed": "media-engagement-insights:1",
  "spec": {
    "format": "dataset/1",
    "slug": "media-engagement-insights",
    "name": "Media Engagement Insights",
    "tagline": "Articles, authors, categories, ads, and engagement metrics from a dynamic media business.",
    "description": "Media outlets deliver timely news to engage readers and satisfy advertisers. This dataset models various aspects of media engagement including articles, authors, categories, advertisements, engagement metrics, and subscriptions. Each table provides valuable insights into what content captures audience interest, how well articles perform over time, and the dynamics of reader subscriptions. Articles are classified by categories, while authors have distinct engagement profiles based on their publication history. Engagement metrics capture data on reader interactions, while ad placements provide insight into advertisement effectiveness. The synthetic nature of this data allows for flexible analysis while reflecting real-world scenarios, making it ideal for practice in analytics, teaching, and ETL pipeline development.",
    "domain": "media",
    "shape": "slowly-changing",
    "useCases": [
      "etl-pipelines",
      "teaching"
    ],
    "keywords": [
      "media",
      "engagement",
      "articles",
      "authors",
      "advertisements",
      "subscriptions",
      "analytics"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "articles": {
        "description": "This table captures details about news articles, linking each article to its author and category. Each row represents a unique article.",
        "rows": 100,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each article."
          },
          "title": {
            "kind": "sentence",
            "description": "Title of the article."
          },
          "author_id": {
            "kind": "fk",
            "ref": "authors.id",
            "description": "Identifier linking to the author of the article."
          },
          "category_id": {
            "kind": "fk",
            "ref": "categories.id",
            "description": "Identifier linking to the category of the article."
          },
          "published_at": {
            "kind": "datetime",
            "from": "2020-01-01",
            "to": "2023-12-31",
            "description": "Date and time the article was published.",
            "dayProfile": "waking"
          },
          "content": {
            "kind": "paragraph",
            "description": "The main content of the article.",
            "nullable": true
          }
        }
      },
      "authors": {
        "description": "This table holds information about authors, capturing their names and biography. Each row is an individual author.",
        "rows": 50,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each author."
          },
          "full_name": {
            "kind": "fullName",
            "description": "The full name of the author."
          },
          "bio": {
            "kind": "paragraph",
            "description": "Short biography of the author.",
            "nullable": true
          },
          "join_date": {
            "kind": "datetime",
            "from": "2020-01-01",
            "to": "2023-12-31",
            "description": "Date the author joined the platform.",
            "dayProfile": "business"
          }
        }
      },
      "categories": {
        "description": "This table categorizes articles into distinct topics, providing a framework for organizing content. Each row represents a category.",
        "rows": 20,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each category."
          },
          "name": {
            "kind": "words",
            "description": "Name of the category."
          },
          "description": {
            "kind": "sentence",
            "description": "Brief description of the category.",
            "nullable": true
          }
        }
      },
      "ads": {
        "description": "This table tracks advertisements placed alongside articles, linking ad performance to specific articles. Each row represents an ad placement.",
        "rows": 150,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each ad placement."
          },
          "article_id": {
            "kind": "fk",
            "ref": "articles.id",
            "description": "Identifier linking to the article where the ad is placed."
          },
          "ad_content": {
            "kind": "sentence",
            "description": "Content of the advertisement.",
            "nullable": true
          },
          "start_date": {
            "kind": "datetime",
            "from": "2020-01-01",
            "to": "2023-12-31",
            "description": "Date the ad placement starts.",
            "dayProfile": "business"
          },
          "end_date": {
            "kind": "datetime",
            "from": "2020-01-01",
            "to": "2023-12-31",
            "description": "Date the ad placement ends.",
            "dayProfile": "business"
          }
        }
      },
      "engagement_metrics": {
        "description": "This table details engagement metrics for articles, measuring reader interactions over time. Each row corresponds to an article's performance metrics.",
        "rows": 200,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each engagement metric entry."
          },
          "article_id": {
            "kind": "fk",
            "ref": "articles.id",
            "description": "Identifier linking to the article."
          },
          "views": {
            "kind": "int",
            "min": 0,
            "max": 10000,
            "description": "Number of views the article received.",
            "nullable": true
          },
          "likes": {
            "kind": "int",
            "min": 0,
            "max": 5000,
            "description": "Number of likes the article received.",
            "nullable": true
          },
          "shares": {
            "kind": "int",
            "min": 0,
            "max": 2000,
            "description": "Number of shares the article received.",
            "nullable": true
          },
          "date_recorded": {
            "kind": "datetime",
            "from": "2020-01-01",
            "to": "2023-12-31",
            "description": "Date when the engagement metrics were recorded.",
            "dayProfile": "waking",
            "trend": "growing"
          }
        }
      },
      "subscriptions": {
        "description": "This table captures subscriber information, linking user profiles to their subscription status. Each row represents a unique subscription entry.",
        "rows": 150,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each subscription."
          },
          "user_id": {
            "kind": "uuid",
            "description": "Unique identifier for the subscriber.",
            "nullable": true,
            "when": {
              "column": "status",
              "in": [
                "active"
              ]
            }
          },
          "subscription_date": {
            "kind": "datetime",
            "from": "2020-01-01",
            "to": "2023-12-31",
            "description": "Date the subscription was initiated.",
            "nullable": true,
            "when": {
              "column": "status",
              "in": [
                "active",
                "trial"
              ]
            },
            "dayProfile": "waking",
            "trend": "seasonal"
          },
          "status": {
            "kind": "enum",
            "values": [
              "active",
              "inactive",
              "trial"
            ],
            "description": "Current status of the subscription."
          }
        }
      }
    },
    "structure": "multi-table",
    "traits": [
      "timestamped",
      "categorical",
      "nullable",
      "high-cardinality"
    ],
    "analysisQuestions": [
      "What types of articles receive the most engagement from readers?",
      "How do different authors compare in terms of article performance?",
      "What trends can be observed in subscription patterns over time?",
      "How do ad placements influence article views and engagement?",
      "Which categories generate the most traffic and engagement?"
    ],
    "suggestedQueries": [
      {
        "title": "Join Articles and Authors",
        "sql": "SELECT a.title, au.full_name FROM articles a JOIN authors au ON a.author_id = au.id;",
        "dialect": "postgres"
      },
      {
        "title": "Count Engagement by Category",
        "sql": "SELECT c.name, SUM(em.views) AS total_views FROM engagement_metrics em JOIN articles a ON em.article_id = a.id JOIN categories c ON a.category_id = c.id GROUP BY c.name;",
        "dialect": "postgres"
      },
      {
        "title": "Average Likes per Author",
        "sql": "SELECT au.full_name, AVG(em.likes) AS avg_likes FROM engagement_metrics em JOIN articles a ON em.article_id = a.id JOIN authors au ON a.author_id = au.id GROUP BY au.full_name;",
        "dialect": "postgres"
      },
      {
        "title": "Subscription Status Overview",
        "sql": "SELECT status, COUNT(*) FROM subscriptions GROUP BY status;",
        "dialect": "postgres"
      },
      {
        "title": "Ad Performance Over Time",
        "sql": "SELECT ad.start_date, COUNT(em.views) AS views FROM ads ad JOIN articles a ON ad.article_id = a.id JOIN engagement_metrics em ON a.id = em.article_id GROUP BY ad.start_date;",
        "dialect": "postgres"
      }
    ],
    "usageScenarios": [
      {
        "title": "Data Analysis for Journalists",
        "body": "Journalists can use this dataset to analyze the performance of their articles, identifying which topics resonate with readers and drive engagement. By understanding metrics like views, likes, and shares, they can tailor their content to better meet audience interests."
      },
      {
        "title": "Marketing Strategies for Advertisers",
        "body": "Advertisers can leverage the insights from this dataset to evaluate the effectiveness of their ad placements. By analyzing engagement metrics alongside article performance, they can refine their strategies to enhance visibility and reach among target audiences."
      },
      {
        "title": "Teaching Data Analytics",
        "body": "Educators can utilize this dataset to teach students about data analytics in media. The various tables provide a rich source for hands-on practice in SQL, allowing students to explore relationships between articles, authors, and engagement metrics."
      },
      {
        "title": "Content Strategy Development",
        "body": "Content strategists can analyze subscription patterns and article engagement to shape future content decisions. By identifying trends and understanding which types of articles attract loyal readers, they can create targeted content that drives subscriptions."
      }
    ]
  },
  "counts": {
    "authors": 50,
    "categories": 20,
    "articles": 100,
    "ads": 150,
    "engagement_metrics": 200,
    "subscriptions": 150
  },
  "stats": {
    "articles": {
      "rows": 100,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 100,
          "min": 1,
          "max": 100
        },
        "title": {
          "nulls": 0,
          "distinct": 100
        },
        "author_id": {
          "nulls": 0,
          "distinct": 45,
          "min": 1,
          "max": 50
        },
        "category_id": {
          "nulls": 0,
          "distinct": 20,
          "min": 1,
          "max": 20
        },
        "published_at": {
          "nulls": 0,
          "distinct": 100,
          "min": "2020-01-03 18:36:58",
          "max": "2023-12-21 09:45:12"
        },
        "content": {
          "nulls": 16,
          "distinct": 84
        }
      }
    },
    "authors": {
      "rows": 50,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 50,
          "min": 1,
          "max": 50
        },
        "full_name": {
          "nulls": 0,
          "distinct": 50,
          "min": "Alice Kowalski",
          "max": "Tomas Smith"
        },
        "bio": {
          "nulls": 4,
          "distinct": 46
        },
        "join_date": {
          "nulls": 0,
          "distinct": 50,
          "min": "2020-02-28 16:46:12",
          "max": "2023-12-01 12:24:33"
        }
      }
    },
    "categories": {
      "rows": 20,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 20,
          "min": 1,
          "max": 20
        },
        "name": {
          "nulls": 0,
          "distinct": 20
        },
        "description": {
          "nulls": 2,
          "distinct": 18
        }
      }
    },
    "ads": {
      "rows": 150,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 150,
          "min": 1,
          "max": 150
        },
        "article_id": {
          "nulls": 0,
          "distinct": 78,
          "min": 1,
          "max": 99
        },
        "ad_content": {
          "nulls": 19,
          "distinct": 130
        },
        "start_date": {
          "nulls": 0,
          "distinct": 150,
          "min": "2020-01-04 17:52:20",
          "max": "2023-12-29 10:27:14"
        },
        "end_date": {
          "nulls": 0,
          "distinct": 150,
          "min": "2020-01-02 08:50:00",
          "max": "2023-12-30 10:25:41"
        }
      }
    },
    "engagement_metrics": {
      "rows": 200,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "article_id": {
          "nulls": 0,
          "distinct": 89,
          "min": 2,
          "max": 100
        },
        "views": {
          "nulls": 17,
          "distinct": 183,
          "min": 67,
          "max": 9963
        },
        "likes": {
          "nulls": 19,
          "distinct": 177,
          "min": 2,
          "max": 4979
        },
        "shares": {
          "nulls": 19,
          "distinct": 175,
          "min": 3,
          "max": 1999
        },
        "date_recorded": {
          "nulls": 0,
          "distinct": 200,
          "min": "2020-01-03 23:55:05",
          "max": "2023-12-29 16:54:55"
        }
      }
    },
    "subscriptions": {
      "rows": 150,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 150,
          "min": 1,
          "max": 150
        },
        "user_id": {
          "nulls": 99,
          "distinct": 51
        },
        "subscription_date": {
          "nulls": 48,
          "distinct": 102,
          "min": "2020-02-04 09:27:32",
          "max": "2023-12-30 18:50:30"
        },
        "status": {
          "nulls": 0,
          "distinct": 3,
          "min": "active",
          "max": "trial"
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/authors.csv",
      "format": "csv",
      "table": "authors",
      "key": "datasets/media-engagement-insights/v1/csv/authors.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/media-engagement-insights/v1/csv/authors.csv",
      "bytes": 10052,
      "sha256": "09d9c40d0f84c1038139651e0c528902777e0f7af0f884e71393a3a8272794ef",
      "rows": 50,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/categories.csv",
      "format": "csv",
      "table": "categories",
      "key": "datasets/media-engagement-insights/v1/csv/categories.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/media-engagement-insights/v1/csv/categories.csv",
      "bytes": 1726,
      "sha256": "022d6a0f9565003931258fba6ce87559e14201ea6e23f5bf93646b64ac4ae69c",
      "rows": 20,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/articles.csv",
      "format": "csv",
      "table": "articles",
      "key": "datasets/media-engagement-insights/v1/csv/articles.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/media-engagement-insights/v1/csv/articles.csv",
      "bytes": 22932,
      "sha256": "1fa335e9b0d9ed22eeefd1328bab2cd7070cf45147d3deb9d83508c3213c30b6",
      "rows": 100,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/ads.csv",
      "format": "csv",
      "table": "ads",
      "key": "datasets/media-engagement-insights/v1/csv/ads.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/media-engagement-insights/v1/csv/ads.csv",
      "bytes": 14509,
      "sha256": "61e43e2b1d2f06cde0a50d90edd84723ceab50630310a9a9d39b303557056726",
      "rows": 150,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/engagement_metrics.csv",
      "format": "csv",
      "table": "engagement_metrics",
      "key": "datasets/media-engagement-insights/v1/csv/engagement_metrics.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/media-engagement-insights/v1/csv/engagement_metrics.csv",
      "bytes": 8138,
      "sha256": "72b747b8171f9552fa09af398a251683c0649c9bbf118cdfacddd36f1dafabf5",
      "rows": 200,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/subscriptions.csv",
      "format": "csv",
      "table": "subscriptions",
      "key": "datasets/media-engagement-insights/v1/csv/subscriptions.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/media-engagement-insights/v1/csv/subscriptions.csv",
      "bytes": 5848,
      "sha256": "a2f81c940666ab10fab0811a51c3c681be72f14a8359101fd13634e84f75e514",
      "rows": 150,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "media-engagement-insights.json",
      "format": "json",
      "table": null,
      "key": "datasets/media-engagement-insights/v1/media-engagement-insights.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/media-engagement-insights/v1/media-engagement-insights.json",
      "bytes": 136642,
      "sha256": "faa0f05bcfa613b3cb00a4de27dbef83c6454b85675edc3d35adf9ee3884a906",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/media-engagement-insights/v1/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/media-engagement-insights/v1/sql/postgres.sql",
      "bytes": 76419,
      "sha256": "4ae3a61cd938c530f9e614e13bc81c7fa0f56ab61d0e84df1790cd7ede9802f5",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/media-engagement-insights/v1/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/media-engagement-insights/v1/sql/mysql.sql",
      "bytes": 75728,
      "sha256": "28ae977439ba9595c42bcc29208155df2238fac4b546e23983520030ae4e82af",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/media-engagement-insights/v1/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/media-engagement-insights/v1/sql/mssql.sql",
      "bytes": 77580,
      "sha256": "1a1f053d893d7b840655862de5c2be86112bf01a296157a199e491d134f745b7",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/media-engagement-insights/v1/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/media-engagement-insights/v1/sql/sqlite.sql",
      "bytes": 75533,
      "sha256": "9ccb21c72bec8e16c61d292664463be763e797200398a41fb166919eb0a0f11f",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/media-engagement-insights/v1/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/media-engagement-insights/v1/prisma/seed.ts",
      "bytes": 121302,
      "sha256": "40d9b45874de66300983881b1c6b215e95452c5e3daca96bac8babb92a8bf564",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/media-engagement-insights/v1/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/media-engagement-insights/v1/django/fixtures.json",
      "bytes": 166863,
      "sha256": "e4201b41b1b6d0ec364333efe116918a735a1d8be9a07e7917160f2e18220897",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788734284667,
  "updatedAt": 1788734284667
}
