{
  "format": "dataset-manifest/1",
  "slug": "shopping-mall",
  "version": 3,
  "seed": "shopping-mall:1",
  "engine": 1,
  "engineVersion": "1.0.0",
  "spec": {
    "format": "dataset/1",
    "slug": "shopping-mall",
    "name": "Shopping Experience Insights",
    "tagline": "Customer interactions, transactions, feedback, and promotions from a mall shopping experience.",
    "description": "Shoppers navigate through a vibrant mall, exploring diverse stores and engaging with various departments as they make purchases and share their experiences. At the heart of this dynamic setting, customers interact not only with products but also with promotions, advertisements, and their own loyalty programs, making their shopping journey multifaceted and rich with data. This synthetic dataset captures these interactions, providing invaluable insights into the behaviors and preferences of shoppers as they traverse the mall's offerings. \n\nThe relationships between the tables form a comprehensive picture of the shopping ecosystem. Each customer row represents an individual shopper, linked to multiple transactions that display their purchasing patterns across different stores. The transactions table records each purchase, detailing the store involved, the promotion applied, and the feedback collected afterward. Feedback entries reflect customer satisfaction levels and suggestions for improvement, directly tied to the respective transactions they pertain to. Additionally, the ad_responses table tracks how customers engage with advertisements, providing insights into the effectiveness of different marketing campaigns. Promotions introduce seasonal dynamics, showing how special offers influence shopping frequency and transaction volumes. \n\nThis dataset allows users to explore a variety of questions: What are the peak shopping times, and how do they correlate with promotions? How does customer feedback vary across different stores and departments? Which advertisements are most effective at driving sales? Practicing with this data provides a rich opportunity to analyze consumer behavior, marketing effectiveness, and operational efficiencies within an e-commerce context. Each table offers a unique lens into the shopping experience, making it ideal for analysis, visualization, and reporting.",
    "domain": "ecommerce",
    "shape": "event-log",
    "useCases": [
      "analytics-demo",
      "etl-pipelines"
    ],
    "keywords": [
      "shopping",
      "mall",
      "transactions",
      "feedback",
      "loyalty",
      "promotions",
      "customer behavior",
      "event log"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "customers": {
        "description": "This table contains customer information, including their loyalty program status. Each row represents a unique customer.",
        "rows": 500,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each customer."
          },
          "full_name": {
            "kind": "fullName",
            "description": "The full name of the customer.",
            "nullable": true
          },
          "email": {
            "kind": "email",
            "from": "full_name",
            "description": "Email address of the customer.",
            "nullable": true
          },
          "loyalty_status": {
            "kind": "enum",
            "values": [
              "none",
              "silver",
              "gold",
              "platinum"
            ],
            "description": "Loyalty program status of the customer.",
            "weights": [
              8,
              3,
              2,
              1
            ]
          }
        }
      },
      "stores": {
        "description": "This table represents the different stores within the mall. Each row details a unique store.",
        "rows": 20,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each store."
          },
          "store_name": {
            "kind": "words",
            "min": 1,
            "max": 3,
            "description": "Name of the store.",
            "nullable": true,
            "when": {
              "column": "category",
              "in": [
                "clothing",
                "electronics"
              ]
            },
            "pool": [
              "market",
              "emporium",
              "outlet",
              "shop",
              "bazaar",
              "warehouse",
              "superstore",
              "retail",
              "corner",
              "boutique",
              "depot",
              "plaza",
              "center",
              "collection",
              "showroom",
              "gallery",
              "trading",
              "exchange",
              "discount",
              "supply",
              "goods",
              "finds",
              "selection",
              "choice",
              "local",
              "global",
              "online",
              "express",
              "stock",
              "inventory",
              "source",
              "venue",
              "place",
              "location",
              "hub",
              "destination",
              "area",
              "zone",
              "district",
              "section",
              "category",
              "segment",
              "brand",
              "label",
              "line",
              "style",
              "range"
            ]
          },
          "category": {
            "kind": "enum",
            "values": [
              "clothing",
              "electronics",
              "food",
              "home",
              "toys"
            ],
            "description": "Category of products offered by the store.",
            "weights": [
              5,
              4,
              3,
              2,
              1
            ]
          }
        }
      },
      "transactions": {
        "description": "This table records customer transactions at various stores. Each row reflects a unique purchase event.",
        "rows": 800,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each transaction."
          },
          "customer_id": {
            "kind": "fk",
            "ref": "customers.id",
            "description": "The customer who made the transaction."
          },
          "store_id": {
            "kind": "fk",
            "ref": "stores.id",
            "description": "The store where the transaction took place."
          },
          "transaction_date": {
            "kind": "datetime",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "Date and time of the transaction.",
            "dayProfile": "waking"
          },
          "amount": {
            "kind": "decimal",
            "min": 5,
            "max": 500,
            "scale": 2,
            "description": "Total amount of the transaction.",
            "distribution": "long-tail"
          },
          "payment_method": {
            "kind": "enum",
            "values": [
              "credit card",
              "debit card",
              "cash"
            ],
            "weights": [
              50,
              30,
              20
            ],
            "description": "Method of payment used for the transaction."
          },
          "discount_amount": {
            "kind": "decimal",
            "min": 0,
            "max": 100,
            "distribution": "long-tail",
            "nullable": true,
            "description": "Discount applied to the transaction, if any."
          }
        }
      },
      "feedback": {
        "description": "This table captures feedback from customers regarding their shopping experiences. Each row represents a unique feedback entry.",
        "rows": 600,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each feedback entry."
          },
          "customer_id": {
            "kind": "fk",
            "ref": "customers.id",
            "description": "The customer providing the feedback."
          },
          "store_id": {
            "kind": "fk",
            "ref": "stores.id",
            "description": "The store related to the feedback."
          },
          "feedback_date": {
            "kind": "datetime",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "Date the feedback was submitted.",
            "dayProfile": "waking"
          },
          "rating": {
            "kind": "int",
            "min": 1,
            "max": 5,
            "description": "Rating given by the customer (1-5 scale).",
            "distribution": "high"
          },
          "comments": {
            "kind": "sentence",
            "min": 5,
            "max": 200,
            "description": "Additional comments provided by the customer."
          }
        }
      },
      "promotions": {
        "description": "This table details promotions that were active during certain periods. Each row reflects a unique promotion.",
        "rows": 50,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each promotion."
          },
          "store_id": {
            "kind": "fk",
            "ref": "stores.id",
            "description": "The store running the promotion."
          },
          "promotion_description": {
            "kind": "sentence",
            "min": 5,
            "max": 100,
            "description": "Description of the promotion.",
            "nullable": true
          },
          "start_date": {
            "kind": "date",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "Start date of the promotion.",
            "trend": "seasonal"
          },
          "end_date": {
            "kind": "date",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "End date of the promotion.",
            "trend": "seasonal"
          }
        }
      },
      "ad_responses": {
        "description": "This table records customer responses to advertisements. Each row reflects a unique ad engagement.",
        "rows": 400,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each ad response."
          },
          "customer_id": {
            "kind": "fk",
            "ref": "customers.id",
            "description": "The customer responding to the ad."
          },
          "ad_description": {
            "kind": "sentence",
            "min": 5,
            "max": 100,
            "description": "Description of the ad that was responded to.",
            "nullable": true
          },
          "response_date": {
            "kind": "datetime",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "Date of the customer response.",
            "nullable": true,
            "when": {
              "column": "response_type",
              "in": [
                "clicked"
              ]
            },
            "dayProfile": "waking"
          },
          "response_type": {
            "kind": "enum",
            "values": [
              "clicked",
              "viewed",
              "ignored"
            ],
            "description": "Type of response to the advertisement.",
            "weights": [
              6,
              3,
              1
            ]
          }
        }
      }
    },
    "structure": "multi-table",
    "traits": [
      "categorical",
      "timestamped",
      "monetary"
    ],
    "analysisQuestions": [
      "What are the peak shopping days for the mall?",
      "How does loyalty program membership affect transaction amounts?",
      "What feedback themes are most commonly reported by customers?",
      "Which promotions lead to the highest increase in transactions?",
      "How do ad responses correlate with customer purchases?"
    ],
    "suggestedQueries": [
      {
        "title": "Join Customers and Transactions",
        "sql": "SELECT c.full_name, t.amount FROM customers c JOIN transactions t ON c.id = t.customer_id",
        "dialect": "postgres"
      },
      {
        "title": "Average Transaction Amount by Store",
        "sql": "SELECT s.store_name, AVG(t.amount) FROM stores s JOIN transactions t ON s.id = t.store_id GROUP BY s.store_name",
        "dialect": "postgres"
      },
      {
        "title": "Feedback Ratings by Store",
        "sql": "SELECT s.store_name, AVG(f.rating) FROM stores s JOIN feedback f ON s.id = f.store_id GROUP BY s.store_name",
        "dialect": "postgres"
      },
      {
        "title": "Promotions Impact on Transactions",
        "sql": "SELECT p.promotion_description, COUNT(t.id) FROM promotions p LEFT JOIN transactions t ON p.store_id = t.store_id WHERE t.transaction_date BETWEEN p.start_date AND p.end_date GROUP BY p.promotion_description",
        "dialect": "postgres"
      },
      {
        "title": "Ad Response Trends Over Time",
        "sql": "SELECT DATE(a.response_date) AS response_day, COUNT(a.id) AS response_count FROM ad_responses a GROUP BY response_day ORDER BY response_day",
        "dialect": "postgres"
      }
    ],
    "usageScenarios": [
      {
        "title": "Data Analysts Exploring Customer Behavior",
        "body": "Data analysts can use this dataset to explore customer behaviors, looking for patterns in shopping habits, peak transaction times, and feedback trends. By analyzing this data, they can gain insights that inform marketing strategies and store improvements."
      },
      {
        "title": "ETL Pipeline for Reporting",
        "body": "Developers can utilize this dataset to build ETL pipelines that aggregate and transform transactional data for reporting purposes. They can extract key performance indicators, create dashboards, and visualize trends in customer engagement over time."
      },
      {
        "title": "Marketing Teams Assessing Promotions",
        "body": "Marketing teams can leverage this dataset to assess the effectiveness of various promotions by analyzing transaction volumes and customer feedback. They can determine which promotional strategies yield the best results and refine their marketing efforts accordingly."
      },
      {
        "title": "Loyalty Program Effectiveness Analysis",
        "body": "Businesses can analyze the loyalty program's effectiveness by comparing transaction amounts and feedback from loyalty members versus non-members. This analysis helps identify areas to enhance customer engagement and increase loyalty."
      }
    ]
  },
  "counts": {
    "customers": 500,
    "ad_responses": 400,
    "stores": 20,
    "feedback": 600,
    "promotions": 50,
    "transactions": 800
  },
  "stats": {
    "customers": {
      "rows": 500,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 500,
          "min": 1,
          "max": 500
        },
        "full_name": {
          "nulls": 54,
          "distinct": 434,
          "min": "Alice Castro",
          "max": "Zoe Tanaka"
        },
        "email": {
          "nulls": 88,
          "distinct": 407
        },
        "loyalty_status": {
          "nulls": 0,
          "distinct": 4,
          "min": "gold",
          "max": "silver"
        }
      }
    },
    "stores": {
      "rows": 20,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 20,
          "min": 1,
          "max": 20
        },
        "store_name": {
          "nulls": 9,
          "distinct": 11
        },
        "category": {
          "nulls": 0,
          "distinct": 5,
          "min": "clothing",
          "max": "toys"
        }
      }
    },
    "transactions": {
      "rows": 800,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 800,
          "min": 1,
          "max": 800
        },
        "customer_id": {
          "nulls": 0,
          "distinct": 401,
          "min": 1,
          "max": 500
        },
        "store_id": {
          "nulls": 0,
          "distinct": 20,
          "min": 1,
          "max": 20
        },
        "transaction_date": {
          "nulls": 0,
          "distinct": 800,
          "min": "2023-01-01 09:15:16",
          "max": "2023-12-31 20:59:41"
        },
        "amount": {
          "nulls": 0,
          "distinct": 778,
          "min": 5.01,
          "max": 499.4
        },
        "payment_method": {
          "nulls": 0,
          "distinct": 3,
          "min": "cash",
          "max": "debit card"
        },
        "discount_amount": {
          "nulls": 74,
          "distinct": 676,
          "min": 0,
          "max": 99.87
        }
      }
    },
    "feedback": {
      "rows": 600,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 600,
          "min": 1,
          "max": 600
        },
        "customer_id": {
          "nulls": 0,
          "distinct": 360,
          "min": 1,
          "max": 500
        },
        "store_id": {
          "nulls": 0,
          "distinct": 20,
          "min": 1,
          "max": 20
        },
        "feedback_date": {
          "nulls": 0,
          "distinct": 599,
          "min": "2023-01-01 17:23:47",
          "max": "2023-12-31 23:11:27"
        },
        "rating": {
          "nulls": 0,
          "distinct": 5,
          "min": 1,
          "max": 5
        },
        "comments": {
          "nulls": 0,
          "distinct": 593
        }
      }
    },
    "promotions": {
      "rows": 50,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 50,
          "min": 1,
          "max": 50
        },
        "store_id": {
          "nulls": 0,
          "distinct": 19,
          "min": 1,
          "max": 20
        },
        "promotion_description": {
          "nulls": 6,
          "distinct": 44
        },
        "start_date": {
          "nulls": 0,
          "distinct": 47,
          "min": "2023-02-11",
          "max": "2023-12-27"
        },
        "end_date": {
          "nulls": 0,
          "distinct": 45,
          "min": "2023-01-05",
          "max": "2023-12-25"
        }
      }
    },
    "ad_responses": {
      "rows": 400,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 400,
          "min": 1,
          "max": 400
        },
        "customer_id": {
          "nulls": 0,
          "distinct": 280,
          "min": 1,
          "max": 497
        },
        "ad_description": {
          "nulls": 43,
          "distinct": 354
        },
        "response_date": {
          "nulls": 152,
          "distinct": 248,
          "min": "2023-01-01 19:12:21",
          "max": "2023-12-31 19:41:02"
        },
        "response_type": {
          "nulls": 0,
          "distinct": 3,
          "min": "clicked",
          "max": "viewed"
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/customers.csv",
      "format": "csv",
      "table": "customers",
      "key": "datasets/shopping-mall/v3/csv/customers.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/shopping-mall/v3/csv/customers.csv",
      "bytes": 20779,
      "sha256": "08ec3853d6a512ae8bc7a9988f14dd426c6c42db2052364bd6452a332f8dcc18",
      "rows": 500,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/ad_responses.csv",
      "format": "csv",
      "table": "ad_responses",
      "key": "datasets/shopping-mall/v3/csv/ad_responses.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/shopping-mall/v3/csv/ad_responses.csv",
      "bytes": 32000,
      "sha256": "4d5aef717a3adf2f88c4397a130fb8208860e28adfd2ab623ca1816fe4773971",
      "rows": 400,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/stores.csv",
      "format": "csv",
      "table": "stores",
      "key": "datasets/shopping-mall/v3/csv/stores.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/shopping-mall/v3/csv/stores.csv",
      "bytes": 432,
      "sha256": "5277ae0e0c42c3484db68b2ca6488f075e10e63ad8d3ac829c87842db1332b6c",
      "rows": 20,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/feedback.csv",
      "format": "csv",
      "table": "feedback",
      "key": "datasets/shopping-mall/v3/csv/feedback.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/shopping-mall/v3/csv/feedback.csv",
      "bytes": 53989,
      "sha256": "99ed37b1bd0ef5394c5256042062887d30e5f7ebfb344a5f3b3776cb7108afae",
      "rows": 600,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/promotions.csv",
      "format": "csv",
      "table": "promotions",
      "key": "datasets/shopping-mall/v3/csv/promotions.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/shopping-mall/v3/csv/promotions.csv",
      "bytes": 3937,
      "sha256": "995e9d1867d790367805a95b2d442a5e25457bacdcdc6e7f27d9408addd5f7f7",
      "rows": 50,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/transactions.csv",
      "format": "csv",
      "table": "transactions",
      "key": "datasets/shopping-mall/v3/csv/transactions.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/shopping-mall/v3/csv/transactions.csv",
      "bytes": 42562,
      "sha256": "e098be721161a0e690f06a8f8a19b88505aa73cfc400fe7d7fd4bc12755bb09c",
      "rows": 800,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "shopping-mall.json",
      "format": "json",
      "table": null,
      "key": "datasets/shopping-mall/v3/shopping-mall.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/shopping-mall/v3/shopping-mall.json",
      "bytes": 465441,
      "sha256": "35cb24b6de891d1a2c372e3b929cc4887d1b94dcc1bf39702c17f3db07ef0dab",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/shopping-mall/v3/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/shopping-mall/v3/sql/postgres.sql",
      "bytes": 195191,
      "sha256": "4f4dcf71a78e474c072dee602d93312db46e8897c6ba2ea0f04b3f38e76d614f",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/shopping-mall/v3/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/shopping-mall/v3/sql/mysql.sql",
      "bytes": 194503,
      "sha256": "0846eb1d5e5f9ddbb42a35476541125d49b5f78ac3e00a38814806338e7689f3",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/shopping-mall/v3/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/shopping-mall/v3/sql/mssql.sql",
      "bytes": 200262,
      "sha256": "3aab4c261654f2803fe360678c4ce168ab10c4be55491df5ceb58e402d8c5afc",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/shopping-mall/v3/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/shopping-mall/v3/sql/sqlite.sql",
      "bytes": 194223,
      "sha256": "ce3ff3ff0cc333542d0366ed27a943f2509b88e7b7110301589601fe2a685e7d",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/shopping-mall/v3/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/shopping-mall/v3/prisma/seed.ts",
      "bytes": 389344,
      "sha256": "52e4c3bed0be15712ca9f453fa8d9288a6c9b9189d4d7b10f6c43f6038f743a9",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/shopping-mall/v3/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/shopping-mall/v3/django/fixtures.json",
      "bytes": 569892,
      "sha256": "7092bbfb35f26b25ec7fe2a39b53b553f1800f7319fb2a3969f8a00d2046db12",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788766606286,
  "updatedAt": 1789096030992
}
