{
  "format": "dataset-manifest/1",
  "slug": "flavors-and-finds",
  "version": 1,
  "seed": "flavors-and-finds:1",
  "spec": {
    "format": "dataset/1",
    "slug": "flavors-and-finds",
    "name": "Flavors and Finds",
    "tagline": "User interactions, restaurant visits, feedback, and promotions from a dining discovery platform.",
    "description": "Flavors and Finds is a synthetic dataset designed to help food enthusiasts explore a variety of dining experiences at local eateries. This dataset models user interactions with restaurants including visits, feedback, menu items, and special promotions over time. The data captures the dynamism of a restaurant discovery platform, with a focus on how frequently users log visits to popular spots versus new or niche restaurants. This rich data can be leveraged for various analytics purposes, such as understanding dining trends, customer preferences, and restaurant performance. Each table is interconnected, allowing for comprehensive analysis and insights into user behavior and restaurant engagement. The dataset is synthetic, providing a safe environment for developers to practice and build applications without compromising real user information.",
    "domain": "restaurants",
    "shape": "event-log",
    "useCases": [
      "analytics-demo",
      "etl-pipelines"
    ],
    "keywords": [
      "restaurants",
      "user visits",
      "customer feedback",
      "menu items",
      "promotions",
      "local dining"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "users": {
        "description": "This table holds information about users who visit restaurants, including their preferences and unique identifiers.",
        "rows": 200,
        "columns": {
          "user_id": {
            "kind": "pk",
            "description": "Unique identifier for the user."
          },
          "full_name": {
            "kind": "fullName",
            "description": "The user's full name.",
            "nullable": true
          },
          "email": {
            "kind": "email",
            "from": "full_name",
            "description": "The user's email address.",
            "nullable": true
          },
          "join_date": {
            "kind": "date",
            "from": "2020-01-01",
            "to": "2023-12-31",
            "description": "Date the user joined the platform."
          }
        }
      },
      "restaurants": {
        "description": "This table contains details about the restaurants including their types, locations, and special features.",
        "rows": 150,
        "columns": {
          "restaurant_id": {
            "kind": "pk",
            "description": "Unique identifier for the restaurant."
          },
          "name": {
            "kind": "words",
            "min": 1,
            "max": 5,
            "description": "The name of the restaurant."
          },
          "cuisine_type": {
            "kind": "enum",
            "values": [
              "Italian",
              "Chinese",
              "Mexican",
              "Indian",
              "American",
              "French"
            ],
            "description": "Type of cuisine offered."
          },
          "location": {
            "kind": "city",
            "description": "City where the restaurant is located.",
            "nullable": true
          },
          "average_rating": {
            "kind": "decimal",
            "min": 1,
            "max": 5,
            "scale": 1,
            "description": "Average rating of the restaurant.",
            "nullable": true
          }
        }
      },
      "user_visits": {
        "description": "This table tracks the visits made by users to different restaurants including the date and time of the visit.",
        "rows": {
          "per": "users",
          "via": "user_id",
          "min": 1,
          "max": 5,
          "skew": "long-tail"
        },
        "columns": {
          "visit_id": {
            "kind": "pk",
            "description": "Unique identifier for each visit."
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.user_id",
            "description": "Foreign key referencing the user who made the visit."
          },
          "restaurant_id": {
            "kind": "fk",
            "ref": "restaurants.restaurant_id",
            "description": "Foreign key referencing the restaurant visited."
          },
          "visit_date": {
            "kind": "datetime",
            "from": "2022-01-01",
            "to": "2023-12-31",
            "dayProfile": "business",
            "description": "Date and time of the visit."
          }
        }
      },
      "feedback": {
        "description": "This table holds feedback provided by users after their visits, capturing their experiences and ratings.",
        "rows": {
          "per": "user_visits",
          "via": "visit_id",
          "min": 1,
          "max": 3,
          "skew": "long-tail"
        },
        "columns": {
          "feedback_id": {
            "kind": "pk",
            "description": "Unique identifier for each feedback entry."
          },
          "visit_id": {
            "kind": "fk",
            "ref": "user_visits.visit_id",
            "description": "Foreign key referencing the visit associated with the feedback."
          },
          "rating": {
            "kind": "int",
            "min": 1,
            "max": 5,
            "description": "Rating given by the user for the visit.",
            "nullable": true
          },
          "comments": {
            "kind": "sentence",
            "max": 300,
            "description": "User comments about their experience.",
            "nullable": true
          }
        }
      },
      "promotions": {
        "description": "This table lists special promotions offered by restaurants to attract customers.",
        "rows": {
          "per": "restaurants",
          "via": "restaurant_id",
          "min": 0,
          "max": 2,
          "skew": "flat"
        },
        "columns": {
          "promotion_id": {
            "kind": "pk",
            "description": "Unique identifier for each promotion."
          },
          "restaurant_id": {
            "kind": "fk",
            "ref": "restaurants.restaurant_id",
            "description": "Foreign key linking to the restaurant offering the promotion."
          },
          "promotion_description": {
            "kind": "sentence",
            "max": 150,
            "description": "Description of the promotion.",
            "nullable": true
          },
          "start_date": {
            "kind": "date",
            "from": "2022-01-01",
            "to": "2023-12-31",
            "description": "The start date of the promotion.",
            "nullable": true
          },
          "end_date": {
            "kind": "date",
            "from": "2022-01-01",
            "to": "2023-12-31",
            "description": "The end date of the promotion.",
            "nullable": true
          }
        }
      }
    },
    "structure": "multi-table",
    "traits": [
      "timestamped",
      "categorical",
      "nullable"
    ],
    "analysisQuestions": [
      "What types of cuisine are most popular among users?",
      "How do average ratings vary by restaurant location?",
      "Which promotions lead to the highest user visit rates?",
      "What feedback trends can be identified from user comments?",
      "How often do users return to the same restaurant?"
    ],
    "suggestedQueries": [
      {
        "title": "Get all visits by a user",
        "sql": "SELECT * FROM user_visits WHERE user_id = ?;",
        "dialect": "postgres"
      },
      {
        "title": "Average rating per restaurant",
        "sql": "SELECT restaurant_id, AVG(rating) FROM feedback GROUP BY restaurant_id;",
        "dialect": "postgres"
      },
      {
        "title": "Total visits per restaurant",
        "sql": "SELECT restaurant_id, COUNT(*) FROM user_visits GROUP BY restaurant_id;",
        "dialect": "postgres"
      },
      {
        "title": "Feedback comments for a specific visit",
        "sql": "SELECT comments FROM feedback WHERE visit_id = ?;",
        "dialect": "postgres"
      },
      {
        "title": "Promotions active during user visits",
        "sql": "SELECT p.promotion_description FROM promotions p JOIN user_visits uv ON p.restaurant_id = uv.restaurant_id WHERE uv.visit_date BETWEEN p.start_date AND p.end_date;",
        "dialect": "postgres"
      }
    ],
    "usageScenarios": [
      {
        "title": "Restaurant Owners",
        "body": "Restaurant owners can utilize this dataset to analyze customer feedback and understand the performance of their promotions. By examining user visits and ratings, they can tailor their offerings to meet customer preferences and enhance their dining experience."
      },
      {
        "title": "Marketing Teams",
        "body": "Marketing teams can leverage this dataset to identify trends and develop targeted marketing campaigns. By analyzing which promotions are most effective, they can strategize on how to attract more visitors to local eateries."
      },
      {
        "title": "Data Analysts",
        "body": "Data analysts can use the dataset to generate insights on user behavior and dining trends over time. They can perform analyses to determine the impact of various factors on restaurant visit rates and customer satisfaction."
      },
      {
        "title": "Application Developers",
        "body": "Application developers can use the dataset for testing and developing features in restaurant discovery apps. It provides realistic data to simulate user interactions, making it easier to create engaging user experiences."
      }
    ]
  },
  "counts": {
    "restaurants": 150,
    "promotions": 156,
    "users": 200,
    "user_visits": 430,
    "feedback": 666
  },
  "stats": {
    "users": {
      "rows": 200,
      "columns": {
        "user_id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "full_name": {
          "nulls": 17,
          "distinct": 182,
          "min": "Alice Lopez",
          "max": "Zoe Tanaka"
        },
        "email": {
          "nulls": 33,
          "distinct": 166
        },
        "join_date": {
          "nulls": 0,
          "distinct": 182,
          "min": "2020-01-20",
          "max": "2023-12-15"
        }
      }
    },
    "restaurants": {
      "rows": 150,
      "columns": {
        "restaurant_id": {
          "nulls": 0,
          "distinct": 150,
          "min": 1,
          "max": 150
        },
        "name": {
          "nulls": 0,
          "distinct": 145
        },
        "cuisine_type": {
          "nulls": 0,
          "distinct": 6,
          "min": "American",
          "max": "Mexican"
        },
        "location": {
          "nulls": 18,
          "distinct": 57,
          "min": "Amsterdam",
          "max": "Zurich"
        },
        "average_rating": {
          "nulls": 10,
          "distinct": 38,
          "min": 1,
          "max": 5
        }
      }
    },
    "user_visits": {
      "rows": 430,
      "columns": {
        "visit_id": {
          "nulls": 0,
          "distinct": 430,
          "min": 1,
          "max": 430
        },
        "user_id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "restaurant_id": {
          "nulls": 0,
          "distinct": 143,
          "min": 2,
          "max": 150
        },
        "visit_date": {
          "nulls": 0,
          "distinct": 430,
          "min": "2022-01-01 12:57:51",
          "max": "2023-12-31 13:23:20"
        }
      }
    },
    "feedback": {
      "rows": 666,
      "columns": {
        "feedback_id": {
          "nulls": 0,
          "distinct": 666,
          "min": 1,
          "max": 666
        },
        "visit_id": {
          "nulls": 0,
          "distinct": 430,
          "min": 1,
          "max": 430
        },
        "rating": {
          "nulls": 70,
          "distinct": 5,
          "min": 1,
          "max": 5
        },
        "comments": {
          "nulls": 77,
          "distinct": 579
        }
      }
    },
    "promotions": {
      "rows": 156,
      "columns": {
        "promotion_id": {
          "nulls": 0,
          "distinct": 156,
          "min": 1,
          "max": 156
        },
        "restaurant_id": {
          "nulls": 0,
          "distinct": 105,
          "min": 1,
          "max": 148
        },
        "promotion_description": {
          "nulls": 16,
          "distinct": 140
        },
        "start_date": {
          "nulls": 14,
          "distinct": 128,
          "min": "2022-01-01",
          "max": "2023-12-21"
        },
        "end_date": {
          "nulls": 14,
          "distinct": 128,
          "min": "2022-01-04",
          "max": "2023-12-31"
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/restaurants.csv",
      "format": "csv",
      "table": "restaurants",
      "key": "datasets/flavors-and-finds/v1/csv/restaurants.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/flavors-and-finds/v1/csv/restaurants.csv",
      "bytes": 6353,
      "sha256": "c060be62930ef83b0b6e6d947a2be3da54e0c1e874609f6360e6193b6f729ef7",
      "rows": 150,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/promotions.csv",
      "format": "csv",
      "table": "promotions",
      "key": "datasets/flavors-and-finds/v1/csv/promotions.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/flavors-and-finds/v1/csv/promotions.csv",
      "bytes": 12421,
      "sha256": "067ca29e31ed6218cf77b826f5829b3a28010753799888cfe0e19836e41dddae",
      "rows": 156,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/users.csv",
      "format": "csv",
      "table": "users",
      "key": "datasets/flavors-and-finds/v1/csv/users.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/flavors-and-finds/v1/csv/users.csv",
      "bytes": 9405,
      "sha256": "3500e81c509601fadbc154aee8b8ae4a9b3e4b8bacd155e1b8d99543e5218347",
      "rows": 200,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/user_visits.csv",
      "format": "csv",
      "table": "user_visits",
      "key": "datasets/flavors-and-finds/v1/csv/user_visits.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/flavors-and-finds/v1/csv/user_visits.csv",
      "bytes": 13579,
      "sha256": "c9176e49765c6522e93d483e060dfff7769fff45da5c1465433497bae986a93f",
      "rows": 430,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/feedback.csv",
      "format": "csv",
      "table": "feedback",
      "key": "datasets/flavors-and-finds/v1/csv/feedback.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/flavors-and-finds/v1/csv/feedback.csv",
      "bytes": 40382,
      "sha256": "9a9dddf40092c69ca4dadfd4315b88393261aa92518b06b11f34c2cdbaae158f",
      "rows": 666,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "flavors-and-finds.json",
      "format": "json",
      "table": null,
      "key": "datasets/flavors-and-finds/v1/flavors-and-finds.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/flavors-and-finds/v1/flavors-and-finds.json",
      "bytes": 241001,
      "sha256": "b76b94229ced5ff7eac3bfa4242f1b5b4f4e686c9689fa2c9d5dde94cf8828c5",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/flavors-and-finds/v1/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/flavors-and-finds/v1/sql/postgres.sql",
      "bytes": 105516,
      "sha256": "19aab1382730fbd5b46ce226154a8f2da55a4b26783d42c41668c4cfec599c93",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/flavors-and-finds/v1/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/flavors-and-finds/v1/sql/mysql.sql",
      "bytes": 104872,
      "sha256": "1f26956f65090b9ac2b461cc07c46be0f85dd59b8ad05b5b38706058a2143562",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/flavors-and-finds/v1/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/flavors-and-finds/v1/sql/mssql.sql",
      "bytes": 107636,
      "sha256": "78a4d562d75dba2b0756c9f8d9806043d8180437d55bd32326b6698ac7d0fac5",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/flavors-and-finds/v1/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/flavors-and-finds/v1/sql/sqlite.sql",
      "bytes": 104677,
      "sha256": "b7e900686adcb375fbee7feeeb6d50be38c3e892a3ed16917d90bf6aaa246c42",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/flavors-and-finds/v1/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/flavors-and-finds/v1/prisma/seed.ts",
      "bytes": 199737,
      "sha256": "6fb6802f6acf48f19346fac2169dd132757bdb0b2f8f40919ef03782f975df17",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/flavors-and-finds/v1/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/flavors-and-finds/v1/django/fixtures.json",
      "bytes": 295986,
      "sha256": "5959c63f6a4631cacc0c06694caa92748b7b90bbabefac5f0ece9022bf21e5ea",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788766670196,
  "updatedAt": 1788766670196
}
