{
  "format": "dataset-manifest/1",
  "slug": "iot-device-management",
  "version": 1,
  "seed": "iot-device-management:1",
  "spec": {
    "format": "dataset/1",
    "slug": "iot-device-management",
    "name": "IoT Device Monitoring",
    "tagline": "Telemetry data, device status, groups, geofences, support tickets, and firmware updates for IoT devices.",
    "description": "IoT devices send constant streams of telemetry data, providing insights into their performance and health. The operation relies heavily on monitoring this data to ensure devices function optimally and address any issues swiftly. By organizing devices into groups, the business can manage vast networks more efficiently, ensuring that the right resources are allocated when problems arise. Geofences are implemented to track the locations of these devices, enabling real-time monitoring and alerting users to significant changes in the operational environment. Support tickets serve as the backbone of customer service, capturing issues reported by users and guiding resolutions, which can range from simple troubleshooting to complex firmware updates.\n\nIn this synthetic dataset, the tables interconnect in ways that reflect the real-world relationships between these components. The 'devices' table holds the unique identifiers and specifications for each device in the network. The 'telemetry_data' table contains measurements related to device performance, which can be linked back to individual devices through their IDs. 'Device_groups' categorize these devices for more accessible management, allowing queries to analyze performance across clusters of similar devices. 'Geofences' provide geographical boundaries to track device movement, feeding into the telemetry data for location-based insights. The 'support_tickets' table records user-reported issues associated with specific devices, while the 'firmware_updates' table tracks the versions deployed to each device, linking back to the devices that require updates.\n\nThis dataset presents opportunities to answer various questions: How is the performance of devices affected by their geographical location? What is the average response time for support tickets related to firmware issues? How do different device groups compare in terms of telemetry data? Practicing with this data will enhance your skills in data analysis, SQL queries, and understanding the interplay of various data points in a complex IoT ecosystem.",
    "domain": "iot",
    "shape": "time-series",
    "useCases": [
      "analytics-demo",
      "bi-dashboards"
    ],
    "keywords": [
      "IoT",
      "device management",
      "telemetry",
      "geofencing",
      "support tickets",
      "network health",
      "firmware updates"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "devices": {
        "description": "This table holds information about IoT devices, including their types and status. Each device can belong to a specific group for management purposes.",
        "rows": 200,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each device."
          },
          "device_type": {
            "kind": "enum",
            "values": [
              "sensor",
              "actuator",
              "gateway"
            ],
            "description": "Type of the IoT device."
          },
          "status": {
            "kind": "enum",
            "values": [
              "active",
              "inactive",
              "maintenance"
            ],
            "description": "Current operational status of the device."
          },
          "group_id": {
            "kind": "fk",
            "ref": "device_groups.id",
            "description": "Reference to the group this device belongs to.",
            "nullable": true
          }
        }
      },
      "telemetry_data": {
        "description": "This table contains the telemetry data generated by devices over time, including metrics such as temperature, humidity, and battery level.",
        "rows": 1000,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each telemetry record."
          },
          "device_id": {
            "kind": "fk",
            "ref": "devices.id",
            "description": "Reference to the device generating this telemetry."
          },
          "timestamp": {
            "kind": "datetime",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "Date and time when the telemetry data was recorded."
          },
          "temperature": {
            "kind": "decimal",
            "min": -20,
            "max": 50,
            "scale": 2,
            "description": "Temperature reading from the device in Celsius.",
            "nullable": true
          },
          "humidity": {
            "kind": "decimal",
            "min": 0,
            "max": 100,
            "scale": 2,
            "description": "Humidity level in percentage.",
            "nullable": true
          },
          "battery_level": {
            "kind": "int",
            "min": 0,
            "max": 100,
            "description": "Battery level of the device in percentage.",
            "nullable": true
          }
        }
      },
      "device_groups": {
        "description": "This table organizes devices into groups for better management and monitoring. Each group can represent a specific location or type of device.",
        "rows": 50,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each device group."
          },
          "group_name": {
            "kind": "words",
            "min": 3,
            "max": 50,
            "description": "Name of the device group."
          },
          "description": {
            "kind": "sentence",
            "max": 200,
            "description": "Description of the device group's purpose.",
            "nullable": true
          }
        }
      },
      "geofences": {
        "description": "This table contains information about geofences that define areas of interest for device tracking and activities.",
        "rows": 30,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each geofence."
          },
          "group_id": {
            "kind": "fk",
            "ref": "device_groups.id",
            "description": "Reference to the group associated with this geofence."
          },
          "location": {
            "kind": "json",
            "template": {
              "latitude": {
                "kind": "decimal",
                "min": -90,
                "max": 90,
                "scale": 6,
                "description": "Latitude of the geofence."
              },
              "longitude": {
                "kind": "decimal",
                "min": -180,
                "max": 180,
                "scale": 6,
                "description": "Longitude of the geofence."
              }
            },
            "description": "Geographical coordinates defining the geofence.",
            "nullable": true
          },
          "radius": {
            "kind": "decimal",
            "min": 1,
            "max": 10000,
            "scale": 0,
            "description": "Radius of the geofence in meters.",
            "nullable": true
          }
        }
      },
      "support_tickets": {
        "description": "This table tracks support tickets raised for issues related to devices. It includes statuses and timestamps for tracking resolution.",
        "rows": 150,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each support ticket."
          },
          "device_id": {
            "kind": "fk",
            "ref": "devices.id",
            "description": "Reference to the device related to this support ticket."
          },
          "status": {
            "kind": "enum",
            "values": [
              "open",
              "in_progress",
              "closed"
            ],
            "description": "Current status of the support ticket."
          },
          "created_at": {
            "kind": "datetime",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "Date and time the ticket was created.",
            "dayProfile": "waking",
            "trend": "growing"
          },
          "resolved_at": {
            "kind": "datetime",
            "after": "created_at",
            "withinDays": 30,
            "description": "Date and time the ticket was resolved, if applicable.",
            "nullable": true,
            "when": {
              "column": "status",
              "in": [
                "closed"
              ]
            }
          }
        }
      },
      "firmware_updates": {
        "description": "This table logs firmware updates applied to devices, including timestamps and version information.",
        "rows": 100,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each firmware update."
          },
          "device_id": {
            "kind": "fk",
            "ref": "devices.id",
            "description": "Reference to the device receiving the firmware update."
          },
          "version": {
            "kind": "words",
            "min": 3,
            "max": 20,
            "description": "Version number of the firmware.",
            "nullable": true
          },
          "update_date": {
            "kind": "datetime",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "Date and time when the firmware update was applied.",
            "dayProfile": "business"
          }
        }
      }
    },
    "structure": "multi-table",
    "traits": [
      "timestamped",
      "categorical",
      "nullable",
      "high-cardinality"
    ],
    "analysisQuestions": [
      "What are the average battery levels of devices in each group over time?",
      "How frequently are support tickets opened for different device types?",
      "Which geofences have the most active devices recorded?",
      "What trends can be observed in the telemetry data across different seasons?",
      "How long does it typically take to resolve support tickets for different device statuses?"
    ],
    "suggestedQueries": [
      {
        "title": "Join Device and Telemetry Data",
        "sql": "SELECT d.id, d.device_type, t.timestamp, t.temperature FROM devices d JOIN telemetry_data t ON d.id = t.device_id;",
        "dialect": "postgres"
      },
      {
        "title": "Average Battery Level by Device Group",
        "sql": "SELECT dg.group_name, AVG(t.battery_level) FROM telemetry_data t JOIN devices d ON t.device_id = d.id JOIN device_groups dg ON d.group_id = dg.id GROUP BY dg.group_name;",
        "dialect": "postgres"
      },
      {
        "title": "Support Ticket Resolution Time",
        "sql": "SELECT d.device_type, AVG(EXTRACT(EPOCH FROM (st.resolved_at - st.created_at))) AS avg_resolution_time FROM support_tickets st JOIN devices d ON st.device_id = d.id WHERE st.status = 'closed' GROUP BY d.device_type;",
        "dialect": "postgres"
      },
      {
        "title": "Firmware Update Frequency",
        "sql": "SELECT d.device_type, COUNT(f.id) AS update_count FROM firmware_updates f JOIN devices d ON f.device_id = d.id GROUP BY d.device_type;",
        "dialect": "postgres"
      },
      {
        "title": "Telemetry Data Trends Over Time",
        "sql": "SELECT DATE(t.timestamp) AS date, AVG(t.temperature) AS avg_temp FROM telemetry_data t GROUP BY DATE(t.timestamp) ORDER BY date;",
        "dialect": "postgres"
      }
    ],
    "usageScenarios": [
      {
        "title": "Device Performance Monitoring",
        "body": "IoT device managers can use this dataset to monitor the performance of devices in real-time. By analyzing telemetry data, they can identify trends and anomalies that may indicate issues with device functionality or connectivity. This helps in making informed decisions about maintenance and proactive device management."
      },
      {
        "title": "Support Ticket Analysis",
        "body": "Support teams can leverage the support ticket data to analyze the frequency and types of issues raised for different devices. Understanding this data can aid in improving device reliability and enhancing customer support processes, leading to faster resolutions and better user experiences."
      },
      {
        "title": "Geofencing Strategy Development",
        "body": "Urban planners and IoT strategists can utilize the geofencing data to optimize device deployments in specific locations. By analyzing the activity levels within geofences, they can make informed decisions about where to focus resources and improve device management strategies."
      },
      {
        "title": "Firmware Update Management",
        "body": "Device manufacturers can analyze firmware update data to understand update trends across different device types. This can help in planning future updates, ensuring that devices remain secure and functional over time, and addressing any potential issues promptly."
      }
    ]
  },
  "counts": {
    "device_groups": 50,
    "devices": 200,
    "firmware_updates": 100,
    "geofences": 30,
    "support_tickets": 150,
    "telemetry_data": 1000
  },
  "stats": {
    "devices": {
      "rows": 200,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "device_type": {
          "nulls": 0,
          "distinct": 3,
          "min": "actuator",
          "max": "sensor"
        },
        "status": {
          "nulls": 0,
          "distinct": 3,
          "min": "active",
          "max": "maintenance"
        },
        "group_id": {
          "nulls": 23,
          "distinct": 49,
          "min": 1,
          "max": 50
        }
      }
    },
    "telemetry_data": {
      "rows": 1000,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 1000,
          "min": 1,
          "max": 1000
        },
        "device_id": {
          "nulls": 0,
          "distinct": 199,
          "min": 1,
          "max": 200
        },
        "timestamp": {
          "nulls": 0,
          "distinct": 1000,
          "min": "2023-01-01 00:46:01",
          "max": "2023-12-30 22:04:48"
        },
        "temperature": {
          "nulls": 99,
          "distinct": 851,
          "min": -19.91,
          "max": 49.95
        },
        "humidity": {
          "nulls": 97,
          "distinct": 854,
          "min": 0.06,
          "max": 99.98
        },
        "battery_level": {
          "nulls": 90,
          "distinct": 101,
          "min": 0,
          "max": 100
        }
      }
    },
    "device_groups": {
      "rows": 50,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 50,
          "min": 1,
          "max": 50
        },
        "group_name": {
          "nulls": 0,
          "distinct": 50
        },
        "description": {
          "nulls": 3,
          "distinct": 47
        }
      }
    },
    "geofences": {
      "rows": 30,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 30,
          "min": 1,
          "max": 30
        },
        "group_id": {
          "nulls": 0,
          "distinct": 24,
          "min": 1,
          "max": 49
        },
        "location": {
          "nulls": 4,
          "distinct": 26
        },
        "radius": {
          "nulls": 4,
          "distinct": 26,
          "min": 102,
          "max": 9894
        }
      }
    },
    "support_tickets": {
      "rows": 150,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 150,
          "min": 1,
          "max": 150
        },
        "device_id": {
          "nulls": 0,
          "distinct": 97,
          "min": 2,
          "max": 199
        },
        "status": {
          "nulls": 0,
          "distinct": 3,
          "min": "closed",
          "max": "open"
        },
        "created_at": {
          "nulls": 0,
          "distinct": 150,
          "min": "2023-01-12 20:26:57",
          "max": "2023-12-31 17:28:30"
        },
        "resolved_at": {
          "nulls": 94,
          "distinct": 56,
          "min": "2023-02-01 18:47:07",
          "max": "2024-01-15 19:01:34"
        }
      }
    },
    "firmware_updates": {
      "rows": 100,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 100,
          "min": 1,
          "max": 100
        },
        "device_id": {
          "nulls": 0,
          "distinct": 78,
          "min": 3,
          "max": 200
        },
        "version": {
          "nulls": 8,
          "distinct": 92
        },
        "update_date": {
          "nulls": 0,
          "distinct": 100,
          "min": "2023-01-02 16:43:20",
          "max": "2023-12-30 11:35:55"
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/device_groups.csv",
      "format": "csv",
      "table": "device_groups",
      "key": "datasets/iot-device-management/v1/csv/device_groups.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/iot-device-management/v1/csv/device_groups.csv",
      "bytes": 11621,
      "sha256": "7d18a16d0328f17878db7ed90e3dd1a0e9eaadb77c47bdffdc5daf138fa0882f",
      "rows": 50,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/devices.csv",
      "format": "csv",
      "table": "devices",
      "key": "datasets/iot-device-management/v1/csv/devices.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/iot-device-management/v1/csv/devices.csv",
      "bytes": 4910,
      "sha256": "6a5ad4d0fb28af11e856c31928bd1cd46030272dfd9c775b66d138c6475fd10f",
      "rows": 200,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/firmware_updates.csv",
      "format": "csv",
      "table": "firmware_updates",
      "key": "datasets/iot-device-management/v1/csv/firmware_updates.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/iot-device-management/v1/csv/firmware_updates.csv",
      "bytes": 10029,
      "sha256": "0353ea1e7be8deff1d84cc7783c1f591aaacfdbc9a1375c03555df9a62c3e45d",
      "rows": 100,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/geofences.csv",
      "format": "csv",
      "table": "geofences",
      "key": "datasets/iot-device-management/v1/csv/geofences.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/iot-device-management/v1/csv/geofences.csv",
      "bytes": 1708,
      "sha256": "a651aa490674e42b849fc20662b4fe6b5420ab1a7079a2caa2fa67f38b1e839d",
      "rows": 30,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/support_tickets.csv",
      "format": "csv",
      "table": "support_tickets",
      "key": "datasets/iot-device-management/v1/csv/support_tickets.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/iot-device-management/v1/csv/support_tickets.csv",
      "bytes": 6635,
      "sha256": "14cc98aa38edef40b144d24ec04c2cc4789123854a3a793a76ebf27b947bea44",
      "rows": 150,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/telemetry_data.csv",
      "format": "csv",
      "table": "telemetry_data",
      "key": "datasets/iot-device-management/v1/csv/telemetry_data.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/iot-device-management/v1/csv/telemetry_data.csv",
      "bytes": 42104,
      "sha256": "3519d3215579ace7cd9dc3ae310215a5fce4e06904b839bb9658c65063a57fc2",
      "rows": 1000,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "iot-device-management.json",
      "format": "json",
      "table": null,
      "key": "datasets/iot-device-management/v1/iot-device-management.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/iot-device-management/v1/iot-device-management.json",
      "bytes": 258139,
      "sha256": "af892f44aaf3a048802fcb0e415f5edb1fb948fb04f354672f1f5d9cf6b7a886",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/iot-device-management/v1/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/iot-device-management/v1/sql/postgres.sql",
      "bytes": 102049,
      "sha256": "0638321b1d120aa246a5167a4189e53dff475a2d41820ff87d2021f1b2148c68",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/iot-device-management/v1/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/iot-device-management/v1/sql/mysql.sql",
      "bytes": 101329,
      "sha256": "f3e76013baa3abe37f21a6199f22d78f876c80605ca4e885e973d41be7019a71",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/iot-device-management/v1/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/iot-device-management/v1/sql/mssql.sql",
      "bytes": 103845,
      "sha256": "27d0f4736553df4c5c321d6ef5aeed44de6d4936cc4c7a4594e0e11506e518df",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/iot-device-management/v1/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/iot-device-management/v1/sql/sqlite.sql",
      "bytes": 101073,
      "sha256": "d50b6df5434d174991a4c742feac896fa952624458854e4adbc59918741f31ee",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/iot-device-management/v1/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/iot-device-management/v1/prisma/seed.ts",
      "bytes": 217117,
      "sha256": "7b5ee762a2e1a7a2bd115373731e2425db72c27b5b6ac03066f8bdae4f012233",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/iot-device-management/v1/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/iot-device-management/v1/django/fixtures.json",
      "bytes": 333697,
      "sha256": "94c3dde4a7c953ece2ee8a5799c8ec0fef55faf8534d4fff6f9f104d8da1ca90",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788767698698,
  "updatedAt": 1788767698698
}
