{
  "format": "dataset-manifest/1",
  "slug": "currency-converter",
  "version": 1,
  "seed": "currency-converter:1",
  "spec": {
    "format": "dataset/1",
    "slug": "currency-converter",
    "name": "Global Currency Exchange Insights",
    "tagline": "User accounts, subscriptions, exchange rates, alerts, and transactions in global currency conversion.",
    "description": "Users interact with a platform designed to facilitate currency conversion, leveraging subscription plans to access competitive exchange rates. They create accounts that allow them to manage transactions across various currencies, optimizing their financial strategies in the ever-changing forex market. Each user may subscribe to one or multiple plans that provide specific advantages, such as lower fees or access to premium exchange rates. As market fluctuations occur, users depend on timely updates and alerts to make informed decisions about their currency wallets, ensuring they capitalize on the most favorable conditions for conversion.\n\nThe core tables in this dataset offer a detailed view of the relationships between users and their activities. The 'users' table captures essential information about each individual, including their account details and preferences. The 'subscriptions' table outlines the various plans users can sign up for, detailing the benefits associated with each option. By linking the 'users' table to the 'subscriptions' table, one can easily determine which subscribers are utilizing specific plans and how they impact their transactions.\n\nExchange rates are dynamically represented in the 'exchange_rates' table, which provides real-time data crucial for users engaged in currency conversion. The 'transactions' table records each currency exchange activity, enabling analysis of user behavior and trends over time. Meanwhile, 'user_alerts' notifies users of significant changes in exchange rates, ensuring they remain proactive in their currency dealings. This setup allows for a multitude of analytical queries: users can explore how subscription types influence transaction volumes, or assess the effectiveness of alerts in driving user engagement and timely exchanges.\n\nThis dataset is synthetic, designed to help developers build skills in data manipulation, analysis, and querying. It serves as an excellent resource for practicing how to extract meaningful insights from real-world scenarios in the fintech domain.",
    "domain": "fintech",
    "shape": "slowly-changing",
    "useCases": [
      "etl-pipelines",
      "teaching"
    ],
    "keywords": [
      "currency exchange",
      "forex",
      "user subscriptions",
      "exchange rates",
      "alerts",
      "fintech"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "users": {
        "description": "This table holds user account information, linking to their subscriptions and alert settings. Each row represents a unique user.",
        "rows": 200,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each user."
          },
          "full_name": {
            "kind": "fullName",
            "description": "The full name of the user."
          },
          "email": {
            "kind": "email",
            "from": "full_name",
            "description": "User's email address."
          },
          "created_at": {
            "kind": "datetime",
            "from": "2020-01-01",
            "to": "2023-10-01",
            "description": "The date when the account was created.",
            "dayProfile": "business"
          },
          "subscription_id": {
            "kind": "fk",
            "ref": "subscriptions.id",
            "nullable": true,
            "description": "Link to the subscription plan the user is on."
          }
        }
      },
      "subscriptions": {
        "description": "This table contains various subscription plans available to users, detailing their features and pricing. Each row is a plan.",
        "rows": 50,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each subscription plan."
          },
          "name": {
            "kind": "words",
            "min": 2,
            "max": 5,
            "description": "Name of the subscription plan."
          },
          "monthly_fee": {
            "kind": "decimal",
            "min": 5,
            "max": 50,
            "scale": 2,
            "description": "Monthly fee for the subscription plan."
          },
          "currency": {
            "kind": "enum",
            "values": [
              "USD",
              "EUR",
              "GBP",
              "JPY",
              "AUD"
            ],
            "description": "The currency in which the subscription fee is charged."
          },
          "features": {
            "kind": "json",
            "template": {
              "exchange_alerts": {
                "kind": "bool",
                "trueRate": 0.8,
                "description": "Indicates if alerts for exchange rates are included."
              },
              "premium_support": {
                "kind": "bool",
                "trueRate": 0.5,
                "description": "Indicates if premium customer support is included."
              }
            },
            "description": "Features included in the subscription plan."
          }
        }
      },
      "exchange_rates": {
        "description": "This table records real-time exchange rates for various currency pairs, changing regularly to reflect market conditions. Each row represents a currency pair's rate at a specific time.",
        "rows": 500,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each exchange rate entry."
          },
          "base_currency": {
            "kind": "enum",
            "values": [
              "USD",
              "EUR",
              "GBP",
              "JPY",
              "AUD"
            ],
            "description": "The base currency for the exchange rate."
          },
          "target_currency": {
            "kind": "enum",
            "values": [
              "USD",
              "EUR",
              "GBP",
              "JPY",
              "AUD"
            ],
            "description": "The target currency for the exchange rate."
          },
          "rate": {
            "kind": "decimal",
            "min": 0.5,
            "max": 1.5,
            "scale": 4,
            "distribution": "normal",
            "description": "The exchange rate from base to target currency."
          },
          "timestamp": {
            "kind": "datetime",
            "from": "2023-01-01",
            "to": "2023-10-01",
            "description": "The time when the exchange rate was recorded."
          }
        }
      },
      "user_alerts": {
        "description": "This table tracks alerts set by users for specific exchange rates. It links users with their alert preferences, allowing them to stay informed about significant changes.",
        "rows": 300,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each alert entry."
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.id",
            "description": "Link to the user who set the alert."
          },
          "base_currency": {
            "kind": "enum",
            "values": [
              "USD",
              "EUR",
              "GBP",
              "JPY",
              "AUD"
            ],
            "description": "The base currency for the alert."
          },
          "target_currency": {
            "kind": "enum",
            "values": [
              "USD",
              "EUR",
              "GBP",
              "JPY",
              "AUD"
            ],
            "description": "The target currency for the alert."
          },
          "alert_rate": {
            "kind": "decimal",
            "min": 0.5,
            "max": 1.5,
            "scale": 4,
            "description": "The exchange rate that triggers the alert."
          },
          "created_at": {
            "kind": "datetime",
            "from": "2023-01-01",
            "to": "2023-10-01",
            "description": "The date when the alert was created.",
            "dayProfile": "waking"
          }
        }
      },
      "transactions": {
        "description": "This table records currency conversion transactions made by users, detailing the amounts and currencies involved.",
        "rows": 400,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each transaction."
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.id",
            "description": "Link to the user who made the transaction."
          },
          "base_currency": {
            "kind": "enum",
            "values": [
              "USD",
              "EUR",
              "GBP",
              "JPY",
              "AUD"
            ],
            "description": "The currency being converted."
          },
          "target_currency": {
            "kind": "enum",
            "values": [
              "USD",
              "EUR",
              "GBP",
              "JPY",
              "AUD"
            ],
            "description": "The currency to which the conversion is made."
          },
          "amount": {
            "kind": "decimal",
            "min": 1,
            "max": 10000,
            "scale": 2,
            "description": "Amount of currency being converted."
          },
          "conversion_rate": {
            "kind": "decimal",
            "min": 0.5,
            "max": 1.5,
            "scale": 4,
            "description": "The exchange rate at the time of the transaction."
          },
          "transaction_date": {
            "kind": "datetime",
            "from": "2023-01-01",
            "to": "2023-10-01",
            "description": "The date and time when the transaction occurred.",
            "trend": "growing"
          }
        }
      }
    },
    "structure": "multi-table",
    "traits": [
      "nullable",
      "timestamped",
      "monetary"
    ],
    "analysisQuestions": [
      "What are the most popular subscription plans among users?",
      "How do fluctuations in exchange rates affect user transactions?",
      "Which currencies are most frequently converted by users?",
      "How effective are alerts in prompting user transactions?",
      "What trends can be observed in user subscription changes over time?"
    ],
    "suggestedQueries": [
      {
        "title": "Join Users with Their Subscriptions",
        "sql": "SELECT users.full_name, subscriptions.name FROM users LEFT JOIN subscriptions ON users.subscription_id = subscriptions.id;",
        "dialect": "postgres"
      },
      {
        "title": "Count Transactions by Base Currency",
        "sql": "SELECT base_currency, COUNT(*) FROM transactions GROUP BY base_currency;",
        "dialect": "postgres"
      },
      {
        "title": "Average Conversion Rate for Each Currency Pair",
        "sql": "SELECT base_currency, target_currency, AVG(conversion_rate) FROM transactions GROUP BY base_currency, target_currency;",
        "dialect": "postgres"
      },
      {
        "title": "User Alerts Triggered by Exchange Rate Changes",
        "sql": "SELECT user_alerts.user_id, COUNT(*) FROM user_alerts JOIN exchange_rates ON user_alerts.alert_rate <= exchange_rates.rate GROUP BY user_alerts.user_id;",
        "dialect": "postgres"
      },
      {
        "title": "Monthly Transaction Trends",
        "sql": "SELECT DATE_TRUNC('month', transaction_date) AS month, COUNT(*) FROM transactions GROUP BY month ORDER BY month;",
        "dialect": "postgres"
      }
    ],
    "usageScenarios": [
      {
        "title": "Financial Analysts",
        "body": "Financial analysts can utilize this dataset to evaluate user behaviors regarding currency conversions and identify trends based on subscription plans. By analyzing transaction data alongside subscription features, they can forecast revenue and recommend adjustments to subscription pricing."
      },
      {
        "title": "Educators in Fintech",
        "body": "Educators teaching courses in fintech can use this dataset to provide students with hands-on experience in analyzing real-world currency conversion scenarios. The dataset allows students to explore concepts such as subscription-based services, user engagement, and market dynamics."
      },
      {
        "title": "Product Managers",
        "body": "Product managers in fintech companies can leverage this dataset to assess the success of different subscription plans and identify opportunities for enhancing user engagement. By analyzing user alerts and transaction trends, they can design features that better meet user needs."
      },
      {
        "title": "Data Scientists",
        "body": "Data scientists can apply this dataset to build predictive models that analyze how users respond to exchange rate changes. By examining transaction data and alert triggers, they can develop algorithms that estimate user behavior and optimize the currency conversion experience."
      }
    ]
  },
  "counts": {
    "exchange_rates": 500,
    "subscriptions": 50,
    "users": 200,
    "transactions": 400,
    "user_alerts": 300
  },
  "stats": {
    "users": {
      "rows": 200,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "full_name": {
          "nulls": 0,
          "distinct": 192,
          "min": "Alice Becker",
          "max": "Zoe Walker"
        },
        "email": {
          "nulls": 0,
          "distinct": 196
        },
        "created_at": {
          "nulls": 0,
          "distinct": 200,
          "min": "2020-01-07 10:47:54",
          "max": "2023-09-23 05:27:41"
        },
        "subscription_id": {
          "nulls": 14,
          "distinct": 47,
          "min": 1,
          "max": 49
        }
      }
    },
    "subscriptions": {
      "rows": 50,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 50,
          "min": 1,
          "max": 50
        },
        "name": {
          "nulls": 0,
          "distinct": 50
        },
        "monthly_fee": {
          "nulls": 0,
          "distinct": 50,
          "min": 6.55,
          "max": 49.93
        },
        "currency": {
          "nulls": 0,
          "distinct": 5,
          "min": "AUD",
          "max": "USD"
        },
        "features": {
          "nulls": 0,
          "distinct": 4
        }
      }
    },
    "exchange_rates": {
      "rows": 500,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 500,
          "min": 1,
          "max": 500
        },
        "base_currency": {
          "nulls": 0,
          "distinct": 5,
          "min": "AUD",
          "max": "USD"
        },
        "target_currency": {
          "nulls": 0,
          "distinct": 5,
          "min": "AUD",
          "max": "USD"
        },
        "rate": {
          "nulls": 0,
          "distinct": 478,
          "min": 0.6359,
          "max": 1.3808
        },
        "timestamp": {
          "nulls": 0,
          "distinct": 500,
          "min": "2023-01-01 11:07:38",
          "max": "2023-10-01 15:16:45"
        }
      }
    },
    "user_alerts": {
      "rows": 300,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 300,
          "min": 1,
          "max": 300
        },
        "user_id": {
          "nulls": 0,
          "distinct": 155,
          "min": 1,
          "max": 200
        },
        "base_currency": {
          "nulls": 0,
          "distinct": 5,
          "min": "AUD",
          "max": "USD"
        },
        "target_currency": {
          "nulls": 0,
          "distinct": 5,
          "min": "AUD",
          "max": "USD"
        },
        "alert_rate": {
          "nulls": 0,
          "distinct": 296,
          "min": 0.5001,
          "max": 1.4991
        },
        "created_at": {
          "nulls": 0,
          "distinct": 300,
          "min": "2023-01-02 07:39:39",
          "max": "2023-10-01 19:17:52"
        }
      }
    },
    "transactions": {
      "rows": 400,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 400,
          "min": 1,
          "max": 400
        },
        "user_id": {
          "nulls": 0,
          "distinct": 171,
          "min": 1,
          "max": 200
        },
        "base_currency": {
          "nulls": 0,
          "distinct": 5,
          "min": "AUD",
          "max": "USD"
        },
        "target_currency": {
          "nulls": 0,
          "distinct": 5,
          "min": "AUD",
          "max": "USD"
        },
        "amount": {
          "nulls": 0,
          "distinct": 400,
          "min": 11.43,
          "max": 9988.91
        },
        "conversion_rate": {
          "nulls": 0,
          "distinct": 387,
          "min": 0.5051,
          "max": 1.4958
        },
        "transaction_date": {
          "nulls": 0,
          "distinct": 400,
          "min": "2023-01-02 16:13:51",
          "max": "2023-10-01 21:31:34"
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/exchange_rates.csv",
      "format": "csv",
      "table": "exchange_rates",
      "key": "datasets/currency-converter/v1/csv/exchange_rates.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/currency-converter/v1/csv/exchange_rates.csv",
      "bytes": 19941,
      "sha256": "5bfd07c1ea2712a90a06a17f193708ebf382d8678316bf64dd91d74645ad1b51",
      "rows": 500,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/subscriptions.csv",
      "format": "csv",
      "table": "subscriptions",
      "key": "datasets/currency-converter/v1/csv/subscriptions.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/currency-converter/v1/csv/subscriptions.csv",
      "bytes": 4690,
      "sha256": "dc475d36bbfd918f4eb1e89390ad0bbef2f711e4dba31dbc1bc33f1c5905ec3b",
      "rows": 50,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/users.csv",
      "format": "csv",
      "table": "users",
      "key": "datasets/currency-converter/v1/csv/users.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/currency-converter/v1/csv/users.csv",
      "bytes": 12733,
      "sha256": "590efc682706e621003c73f72202c7edf1a3a32f047b384185fa92bc6c7420dd",
      "rows": 200,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/transactions.csv",
      "format": "csv",
      "table": "transactions",
      "key": "datasets/currency-converter/v1/csv/transactions.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/currency-converter/v1/csv/transactions.csv",
      "bytes": 20510,
      "sha256": "9ee54c93b523f0131f853a6c14bdc8b219d2b1ff2797eaadedce537d75ca55e3",
      "rows": 400,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/user_alerts.csv",
      "format": "csv",
      "table": "user_alerts",
      "key": "datasets/currency-converter/v1/csv/user_alerts.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/currency-converter/v1/csv/user_alerts.csv",
      "bytes": 12994,
      "sha256": "3969b94337acae98ddfe0a9bae70018317e2f2c28b3c864a3a1dea4502087c9e",
      "rows": 300,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "currency-converter.json",
      "format": "json",
      "table": null,
      "key": "datasets/currency-converter/v1/currency-converter.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/currency-converter/v1/currency-converter.json",
      "bytes": 266063,
      "sha256": "d181f43493178c585a7652bf440e80b6c78c9910a2fd3bf1a0f4569a37086644",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/currency-converter/v1/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/currency-converter/v1/sql/postgres.sql",
      "bytes": 98143,
      "sha256": "18e505f4977160e688b07a3abf4b4634d8c935f07dd375db633aa46b5c44d5a5",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/currency-converter/v1/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/currency-converter/v1/sql/mysql.sql",
      "bytes": 97565,
      "sha256": "438fd473911525df474eae586fd691688e6b56d9731f18ef373c9af83e0fdc7a",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/currency-converter/v1/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/currency-converter/v1/sql/mssql.sql",
      "bytes": 102273,
      "sha256": "2af46a805aebafc693f1300a3228e6f67eec485b2ceca8ad5088822126bf6bec",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/currency-converter/v1/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/currency-converter/v1/sql/sqlite.sql",
      "bytes": 97360,
      "sha256": "2f849401256d18c3cfd1f6afcb6db8664930aec56e4d323b986a75d8d5213aee",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/currency-converter/v1/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/currency-converter/v1/prisma/seed.ts",
      "bytes": 223553,
      "sha256": "e25e274b0d0221fd83956f94ebda3779eb68883711339b41bfb80c2beb84ef57",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/currency-converter/v1/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/currency-converter/v1/django/fixtures.json",
      "bytes": 336296,
      "sha256": "4e89241a14d1b6b8b68fa9fd0f7db9721835730ccfdbbb20341b1591fbacfd7e",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788765800757,
  "updatedAt": 1788765800757
}
