{
  "format": "dataset-manifest/1",
  "slug": "textile-factory",
  "version": 1,
  "seed": "textile-factory:1",
  "spec": {
    "format": "dataset/1",
    "slug": "textile-factory",
    "name": "Textile Production Insights",
    "tagline": "Orders, products, inventory levels, and shifts data from a textile manufacturing facility.",
    "description": "Workers in a textile factory transform raw materials into finished fabrics, navigating the intricate processes of production and supply chain management. They handle customer orders, monitor inventory levels, coordinate supplier deliveries, and schedule employee shifts across various production lines. Each day brings a challenging flow of orders and shipments, with staple products like cotton and polyester dominating output, while specialty fabrics are produced in smaller quantities, highlighting the diverse nature of textile production. Productivity varies among shifts, as some employees demonstrate peak performance while others may struggle with underutilization of resources.\n\nThe dataset contains several interrelated tables: orders, products, inventory, and shifts. Each order reflects a unique request from a customer, linking to specific products that detail what fabrics are being produced. The inventory table provides insight into the quantity of raw materials and finished goods available, essential for balancing supply with demand. Shifts detail employee schedules and machine operation times, allowing for an analysis of production efficiency across different times of the day or week. By connecting these tables, you can gain a comprehensive understanding of how orders are fulfilled through the management of inventory and workforce resources.\n\nThis data answers key operational questions such as: What are the most popular products? How do inventory levels fluctuate with varying order volumes? What factors contribute to peak productivity during certain shifts? It serves as an excellent resource for practicing data analysis skills, simulating real-world scenarios within the textile manufacturing industry. The data is synthetic, designed to mimic the complexities faced in actual textile production environments.",
    "domain": "manufacturing",
    "shape": "star-schema",
    "useCases": [
      "bi-dashboards",
      "analytics-demo"
    ],
    "keywords": [
      "textile",
      "manufacturing",
      "production",
      "inventory",
      "orders",
      "employees",
      "suppliers",
      "analytics"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "orders": {
        "description": "This table captures customer orders, linking to products and their statuses. Each order records details like quantity, order date, and fulfillment status.",
        "rows": 500,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each order."
          },
          "product_id": {
            "kind": "fk",
            "ref": "products.id",
            "description": "References the product being ordered."
          },
          "customer_name": {
            "kind": "fullName",
            "description": "Full name of the customer placing the order."
          },
          "quantity": {
            "kind": "int",
            "min": 1,
            "max": 1000,
            "description": "Number of units ordered."
          },
          "order_date": {
            "kind": "datetime",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "Date when the order was placed.",
            "dayProfile": "waking"
          },
          "status": {
            "kind": "enum",
            "values": [
              "pending",
              "fulfilled",
              "cancelled"
            ],
            "description": "Current status of the order."
          }
        }
      },
      "products": {
        "description": "This table holds information about different types of fabrics produced in the factory. Each product has specific attributes and production details.",
        "rows": 100,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each product."
          },
          "name": {
            "kind": "productName",
            "description": "Name of the fabric product."
          },
          "type": {
            "kind": "enum",
            "values": [
              "cotton",
              "polyester",
              "specialty"
            ],
            "description": "Type of fabric."
          },
          "price_per_unit": {
            "kind": "decimal",
            "min": 5,
            "max": 50,
            "scale": 2,
            "description": "Price per unit of the fabric."
          }
        }
      },
      "inventory": {
        "description": "This table tracks the current inventory levels of raw materials and finished products, linking to the products table.",
        "rows": 120,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each inventory record."
          },
          "product_id": {
            "kind": "fk",
            "ref": "products.id",
            "description": "References the product related to the inventory."
          },
          "stock_level": {
            "kind": "int",
            "min": 0,
            "max": 5000,
            "description": "Current stock level of the product."
          },
          "last_updated": {
            "kind": "datetime",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "Timestamp of the last inventory update.",
            "dayProfile": "business"
          }
        }
      },
      "shifts": {
        "description": "This table records employee shifts, detailing the production line, employee performance, and machine utilization during each shift.",
        "rows": 300,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each shift record."
          },
          "employee_name": {
            "kind": "fullName",
            "description": "Name of the employee working the shift."
          },
          "shift_date": {
            "kind": "datetime",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "Date of the shift.",
            "trend": "growing"
          },
          "line_number": {
            "kind": "int",
            "min": 1,
            "max": 5,
            "description": "Production line number."
          },
          "performance_score": {
            "kind": "int",
            "min": 1,
            "max": 100,
            "description": "Performance score of the employee during the shift."
          },
          "machine_utilization": {
            "kind": "decimal",
            "min": 0,
            "max": 1,
            "scale": 2,
            "description": "Percentage of machine utilization during the shift."
          }
        }
      }
    },
    "structure": "multi-table",
    "traits": [
      "timestamped",
      "monetary",
      "categorical",
      "nullable"
    ],
    "analysisQuestions": [
      "What are the most popular fabric types ordered by customers?",
      "How does inventory level affect order fulfillment times?",
      "Which production lines have the highest employee performance scores?",
      "What trends can be observed in order quantities over time?",
      "How does machine utilization vary across different shifts?"
    ],
    "suggestedQueries": [
      {
        "title": "Join Orders and Products",
        "sql": "SELECT orders.id, products.name, orders.quantity FROM orders JOIN products ON orders.product_id = products.id",
        "dialect": "postgres"
      },
      {
        "title": "Total Orders by Product Type",
        "sql": "SELECT products.type, COUNT(orders.id) AS total_orders FROM orders JOIN products ON orders.product_id = products.id GROUP BY products.type",
        "dialect": "postgres"
      },
      {
        "title": "Average Performance Score by Shift Date",
        "sql": "SELECT shift_date, AVG(performance_score) AS avg_performance FROM shifts GROUP BY shift_date",
        "dialect": "postgres"
      },
      {
        "title": "Inventory Levels Over Time",
        "sql": "SELECT last_updated, SUM(stock_level) AS total_stock FROM inventory GROUP BY last_updated ORDER BY last_updated",
        "dialect": "postgres"
      }
    ],
    "usageScenarios": [
      {
        "title": "Production Manager Insights",
        "body": "A production manager can utilize this dataset to monitor and optimize the performance of production lines. By analyzing employee performance scores and machine utilization, they can identify bottlenecks and make data-driven decisions to enhance efficiency."
      },
      {
        "title": "Inventory Control Analysis",
        "body": "Inventory managers can use this data to track raw material levels and finished products. This allows them to predict shortages and plan reorder schedules effectively, ensuring that production continues smoothly without delays due to stockouts."
      },
      {
        "title": "Sales Performance Tracking",
        "body": "Sales analysts can leverage the orders table to assess which products are selling the most and at what times. This insight can inform marketing strategies and help in forecasting future demand based on historical order patterns."
      },
      {
        "title": "Shift Scheduling Optimization",
        "body": "HR professionals can analyze employee shift data to better understand productivity fluctuations across different times of the day. By correlating performance scores with specific shifts, they can adjust schedules to maximize output."
      }
    ]
  },
  "counts": {
    "products": 100,
    "inventory": 120,
    "orders": 500,
    "shifts": 300
  },
  "stats": {
    "orders": {
      "rows": 500,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 500,
          "min": 1,
          "max": 500
        },
        "product_id": {
          "nulls": 0,
          "distinct": 98,
          "min": 1,
          "max": 100
        },
        "customer_name": {
          "nulls": 0,
          "distinct": 476,
          "min": "Alice Ahmed",
          "max": "Zoe Wright"
        },
        "quantity": {
          "nulls": 0,
          "distinct": 399,
          "min": 1,
          "max": 999
        },
        "order_date": {
          "nulls": 0,
          "distinct": 500,
          "min": "2023-01-01 16:50:57",
          "max": "2023-12-31 19:56:13"
        },
        "status": {
          "nulls": 0,
          "distinct": 3,
          "min": "cancelled",
          "max": "pending"
        }
      }
    },
    "products": {
      "rows": 100,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 100,
          "min": 1,
          "max": 100
        },
        "name": {
          "nulls": 0,
          "distinct": 87,
          "min": "Classic Bottle",
          "max": "Wireless Watch"
        },
        "type": {
          "nulls": 0,
          "distinct": 3,
          "min": "cotton",
          "max": "specialty"
        },
        "price_per_unit": {
          "nulls": 0,
          "distinct": 99,
          "min": 5.22,
          "max": 49.96
        }
      }
    },
    "inventory": {
      "rows": 120,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 120,
          "min": 1,
          "max": 120
        },
        "product_id": {
          "nulls": 0,
          "distinct": 73,
          "min": 1,
          "max": 99
        },
        "stock_level": {
          "nulls": 0,
          "distinct": 119,
          "min": 45,
          "max": 4999
        },
        "last_updated": {
          "nulls": 0,
          "distinct": 120,
          "min": "2023-01-04 11:19:08",
          "max": "2023-12-31 16:58:30"
        }
      }
    },
    "shifts": {
      "rows": 300,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 300,
          "min": 1,
          "max": 300
        },
        "employee_name": {
          "nulls": 0,
          "distinct": 294,
          "min": "Alice Becker",
          "max": "Zoe Novak"
        },
        "shift_date": {
          "nulls": 0,
          "distinct": 300,
          "min": "2023-01-02 04:45:28",
          "max": "2023-12-31 16:25:28"
        },
        "line_number": {
          "nulls": 0,
          "distinct": 5,
          "min": 1,
          "max": 5
        },
        "performance_score": {
          "nulls": 0,
          "distinct": 92,
          "min": 1,
          "max": 99
        },
        "machine_utilization": {
          "nulls": 0,
          "distinct": 96,
          "min": 0,
          "max": 1
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/products.csv",
      "format": "csv",
      "table": "products",
      "key": "datasets/textile-factory/v1/csv/products.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/textile-factory/v1/csv/products.csv",
      "bytes": 3396,
      "sha256": "28de221f0481add21a2c828ad2a21fae0a71db5d7442fd524911141bf6e96b19",
      "rows": 100,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/inventory.csv",
      "format": "csv",
      "table": "inventory",
      "key": "datasets/textile-factory/v1/csv/inventory.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/textile-factory/v1/csv/inventory.csv",
      "bytes": 3855,
      "sha256": "4ff69e8bed361ce38cd1049f288d2fbcc33657ecb1ed33d5b130899deb7ba219",
      "rows": 120,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/orders.csv",
      "format": "csv",
      "table": "orders",
      "key": "datasets/textile-factory/v1/csv/orders.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/textile-factory/v1/csv/orders.csv",
      "bytes": 26569,
      "sha256": "7327da306400512fe3134970adea5d8d10f84d0b5a8de6324b1645d357ab9df4",
      "rows": 500,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/shifts.csv",
      "format": "csv",
      "table": "shifts",
      "key": "datasets/textile-factory/v1/csv/shifts.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/textile-factory/v1/csv/shifts.csv",
      "bytes": 14082,
      "sha256": "f287e7cc7328195432e110280891bcedcdd184c12e2b335a32386b3c77311965",
      "rows": 300,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "textile-factory.json",
      "format": "json",
      "table": null,
      "key": "datasets/textile-factory/v1/textile-factory.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/textile-factory/v1/textile-factory.json",
      "bytes": 178972,
      "sha256": "24bde856ca22f1af04bce5c466a4b6d2e2f430f0e74533755b924fe24dbdc66c",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/textile-factory/v1/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/textile-factory/v1/sql/postgres.sql",
      "bytes": 65900,
      "sha256": "4943dd6153e760112acad6bd6b75b31cc44697d4659ccdf1c2e85bcd1e285741",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/textile-factory/v1/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/textile-factory/v1/sql/mysql.sql",
      "bytes": 65456,
      "sha256": "320c27ebac57cd0b8a7cabc0e5c6f18ce6a32efcabcea4e901be77c02eeec307",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/textile-factory/v1/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/textile-factory/v1/sql/mssql.sql",
      "bytes": 68122,
      "sha256": "b4fecd21cc9888b27c1ca0dfd51e93322b00f8a9be18ba1a1b7fa24baf40f0d1",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/textile-factory/v1/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/textile-factory/v1/sql/sqlite.sql",
      "bytes": 65341,
      "sha256": "055d968c7c7360af820b77e9c6a41f381472431f1833b738252080ee242ecce2",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/textile-factory/v1/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/textile-factory/v1/prisma/seed.ts",
      "bytes": 149451,
      "sha256": "bc57b278be6bbe09e36e6e68070f90a7a8e9ee5e6903d1c045bb4321e913f8db",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/textile-factory/v1/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/textile-factory/v1/django/fixtures.json",
      "bytes": 222321,
      "sha256": "d188c81c1496fa4b4e091dae3984396a4061b3d22029c3a469bd1ae18e4968cc",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788767499081,
  "updatedAt": 1788767499081
}
