{
  "format": "dataset-manifest/1",
  "slug": "financial-activity-log",
  "version": 3,
  "seed": "financial-activity-log:1",
  "spec": {
    "format": "dataset/1",
    "slug": "financial-activity-log",
    "name": "Financial Activity Log",
    "tagline": "A synthetic dataset for tracking financial transactions and user engagement.",
    "description": "Customers manage their finances by tracking income, expenses, and savings in a banking environment. They engage with various financial tools, create budgets, and set savings goals to achieve their financial objectives. This business model illustrates how individuals interact with their accounts and conduct transactions, shedding light on their spending patterns and savings behavior. Users frequently make transactions, with a predominant focus on smaller, everyday expenses, while larger transactions are less common but significant when they occur.\n\nIn this dataset, the transactions table records individual financial interactions, capturing details such as amounts, dates, and categories. Each transaction is linked to specific accounts, identified within the accounts table, which details the type of account (checking, savings, etc.) and its current balance. Users, represented in the users table, are associated with their accounts and transactions, enabling insights into their financial habits and preferences. The budgets table tracks user-defined financial limits and spending goals, while the savings_goals table outlines specific objectives users set, such as saving for a vacation or emergency fund.\n\nThe relationships between these tables allow for comprehensive analysis of user behavior. Joining the transactions table with the accounts and users tables provides a holistic view of each user's financial activity, revealing trends and patterns in their spending and saving. The budgets and savings_goals tables offer additional layers of insights into how users plan their finances and achieve their long-term financial aspirations.\n\nDevelopers can explore this synthetic dataset to answer various questions: What are the average transaction amounts across different user segments? How effective are users at meeting their budget goals? What common patterns exist among users who successfully reach their savings targets? The data allows for practice with SQL queries, data visualization, and financial analysis, making it an invaluable resource for anyone looking to enhance their data-driven decision-making skills in a banking context.",
    "domain": "banking",
    "shape": "event-log",
    "useCases": [
      "analytics-demo",
      "etl-pipelines"
    ],
    "keywords": [
      "finance",
      "transactions",
      "banking",
      "budgeting",
      "savings",
      "users",
      "accounts",
      "recurring payments"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "transactions": {
        "description": "This table records individual financial transactions made by users, linking to specific accounts and users. Each row represents a transaction with details on the amount, date, and type of transaction.",
        "rows": 500,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each transaction."
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.id",
            "description": "Identifies the user who made the transaction."
          },
          "account_id": {
            "kind": "fk",
            "ref": "accounts.id",
            "description": "Identifies the account from which the transaction was made."
          },
          "amount": {
            "kind": "decimal",
            "min": 0,
            "max": 10000,
            "scale": 2,
            "description": "The amount of money involved in the transaction.",
            "distribution": "long-tail"
          },
          "transaction_date": {
            "kind": "datetime",
            "from": "2022-01-01",
            "to": "2023-12-31",
            "description": "The date and time when the transaction occurred.",
            "dayProfile": "waking"
          },
          "transaction_type": {
            "kind": "enum",
            "values": [
              "income",
              "expense"
            ],
            "description": "Type of transaction, either income or expense.",
            "weights": [
              7,
              3
            ]
          }
        }
      },
      "accounts": {
        "description": "This table contains information about the bank accounts belonging to users, detailing account types and balances. Each account is linked to a specific user.",
        "rows": 300,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each account."
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.id",
            "description": "Identifies the user to whom the account belongs."
          },
          "account_type": {
            "kind": "enum",
            "values": [
              "checking",
              "savings"
            ],
            "description": "Type of account.",
            "weights": [
              7,
              3
            ]
          },
          "balance": {
            "kind": "decimal",
            "min": 0,
            "max": 100000,
            "scale": 2,
            "description": "Current balance of the account.",
            "distribution": "heavy-tail"
          }
        }
      },
      "users": {
        "description": "This table tracks user information, including their names and contact details. Each user may have multiple accounts and transactions.",
        "rows": 200,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each user."
          },
          "full_name": {
            "kind": "fullName",
            "description": "Full name of the user."
          },
          "email": {
            "kind": "email",
            "from": "full_name",
            "description": "Email address of the user."
          },
          "joined_date": {
            "kind": "datetime",
            "from": "2020-01-01",
            "to": "2023-12-31",
            "description": "The date when the user joined the bank.",
            "trend": "growing"
          }
        }
      },
      "budgets": {
        "description": "This table outlines the budget limits set by users for different categories of expenses. Each budget is associated with a specific user.",
        "rows": 250,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each budget."
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.id",
            "description": "Identifies the user setting the budget."
          },
          "category": {
            "kind": "enum",
            "values": [
              "groceries",
              "entertainment",
              "transportation"
            ],
            "description": "Category for which the budget is set.",
            "weights": [
              5,
              3,
              2
            ]
          },
          "limit": {
            "kind": "decimal",
            "min": 0,
            "max": 2000,
            "scale": 2,
            "description": "The budget limit for the specified category.",
            "distribution": "long-tail"
          }
        }
      },
      "savings_goals": {
        "description": "This table captures the savings goals set by users, detailing the target amount and current progress. Each goal is linked to a specific user.",
        "rows": 200,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each savings goal."
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.id",
            "description": "Identifies the user who has the savings goal."
          },
          "goal_amount": {
            "kind": "decimal",
            "min": 0,
            "max": 10000,
            "scale": 2,
            "description": "The target amount the user aims to save.",
            "distribution": "long-tail"
          },
          "current_amount": {
            "kind": "decimal",
            "min": 0,
            "max": 10000,
            "scale": 2,
            "description": "The current amount saved towards the goal.",
            "distribution": "long-tail"
          }
        }
      }
    },
    "structure": "multi-table",
    "traits": [
      "monetary",
      "timestamped",
      "nullable",
      "high-cardinality"
    ],
    "analysisQuestions": [
      "What are the most common categories of expenses among users?",
      "How often do users exceed their budget limits?",
      "What is the average savings goal amount set by users?",
      "Which transaction types are more prevalent, income or expenses?",
      "How do account balances vary across different users?"
    ],
    "suggestedQueries": [
      {
        "title": "Join Transactions and Users",
        "sql": "SELECT t.*, u.full_name FROM transactions t JOIN users u ON t.user_id = u.id;",
        "dialect": "postgres"
      },
      {
        "title": "Aggregate Expenses by Category",
        "sql": "SELECT b.category, SUM(t.amount) as total_expense FROM transactions t JOIN budgets b ON t.user_id = b.user_id WHERE t.transaction_type = 'expense' GROUP BY b.category;",
        "dialect": "postgres"
      },
      {
        "title": "Count Transactions by User",
        "sql": "SELECT u.full_name, COUNT(t.id) as transaction_count FROM users u LEFT JOIN transactions t ON u.id = t.user_id GROUP BY u.id;",
        "dialect": "postgres"
      },
      {
        "title": "Average Savings Progress",
        "sql": "SELECT u.full_name, AVG(s.current_amount) as average_saved FROM users u JOIN savings_goals s ON u.id = s.user_id GROUP BY u.id;",
        "dialect": "postgres"
      }
    ],
    "usageScenarios": [
      {
        "title": "Banking Analytics",
        "body": "Data analysts at a bank can use this dataset to generate insights on user financial behavior, helping to design better financial products and services."
      },
      {
        "title": "Budgeting Applications",
        "body": "Developers of budgeting applications can utilize this dataset to test features that track user spending against their budgets and analyze common overspending behaviors."
      },
      {
        "title": "ETL Pipeline Development",
        "body": "Data engineers can leverage this dataset to build and optimize ETL pipelines that aggregate financial data from various sources for reporting and analysis."
      },
      {
        "title": "User Engagement Measurement",
        "body": "Marketing teams can analyze user engagement with savings goals and budgets to tailor financial advice and marketing campaigns to encourage better financial habits."
      }
    ]
  },
  "counts": {
    "users": 200,
    "accounts": 300,
    "budgets": 250,
    "savings_goals": 200,
    "transactions": 500
  },
  "stats": {
    "transactions": {
      "rows": 500,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 500,
          "min": 1,
          "max": 500
        },
        "user_id": {
          "nulls": 0,
          "distinct": 183,
          "min": 1,
          "max": 200
        },
        "account_id": {
          "nulls": 0,
          "distinct": 242,
          "min": 1,
          "max": 299
        },
        "amount": {
          "nulls": 0,
          "distinct": 500,
          "min": 0.02,
          "max": 9964.41
        },
        "transaction_date": {
          "nulls": 0,
          "distinct": 500,
          "min": "2022-01-01 18:21:13",
          "max": "2023-12-30 09:17:31"
        },
        "transaction_type": {
          "nulls": 0,
          "distinct": 2,
          "min": "expense",
          "max": "income"
        }
      }
    },
    "accounts": {
      "rows": 300,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 300,
          "min": 1,
          "max": 300
        },
        "user_id": {
          "nulls": 0,
          "distinct": 155,
          "min": 2,
          "max": 199
        },
        "account_type": {
          "nulls": 0,
          "distinct": 2,
          "min": "checking",
          "max": "savings"
        },
        "balance": {
          "nulls": 0,
          "distinct": 300,
          "min": 0,
          "max": 99549.15
        }
      }
    },
    "users": {
      "rows": 200,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "full_name": {
          "nulls": 0,
          "distinct": 199,
          "min": "Alice Andersen",
          "max": "Zoe Novak"
        },
        "email": {
          "nulls": 0,
          "distinct": 200
        },
        "joined_date": {
          "nulls": 0,
          "distinct": 200,
          "min": "2020-01-02 14:59:47",
          "max": "2023-12-26 19:32:51"
        }
      }
    },
    "budgets": {
      "rows": 250,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 250,
          "min": 1,
          "max": 250
        },
        "user_id": {
          "nulls": 0,
          "distinct": 139,
          "min": 1,
          "max": 198
        },
        "category": {
          "nulls": 0,
          "distinct": 3,
          "min": "entertainment",
          "max": "transportation"
        },
        "limit": {
          "nulls": 0,
          "distinct": 250,
          "min": 0.01,
          "max": 1999.65
        }
      }
    },
    "savings_goals": {
      "rows": 200,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "user_id": {
          "nulls": 0,
          "distinct": 124,
          "min": 5,
          "max": 200
        },
        "goal_amount": {
          "nulls": 0,
          "distinct": 200,
          "min": 0.36,
          "max": 9900.77
        },
        "current_amount": {
          "nulls": 0,
          "distinct": 200,
          "min": 0.2,
          "max": 9949.83
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/users.csv",
      "format": "csv",
      "table": "users",
      "key": "datasets/financial-activity-log/v3/csv/users.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/financial-activity-log/v3/csv/users.csv",
      "bytes": 12202,
      "sha256": "c38b8fc277ef619e4c1caca4e2e70a731dacf80c18a177ad6fc852c24a517a5d",
      "rows": 200,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/accounts.csv",
      "format": "csv",
      "table": "accounts",
      "key": "datasets/financial-activity-log/v3/csv/accounts.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/financial-activity-log/v3/csv/accounts.csv",
      "bytes": 7511,
      "sha256": "34567c05fed54c05886282e8b20f9a93e145edbabd5a6650b16a9314b61b60ac",
      "rows": 300,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/budgets.csv",
      "format": "csv",
      "table": "budgets",
      "key": "datasets/financial-activity-log/v3/csv/budgets.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/financial-activity-log/v3/csv/budgets.csv",
      "bytes": 6916,
      "sha256": "11581b1007fc93da5fc3a6c276e1e52488459d53b258d0d185b8a6a0407c482a",
      "rows": 250,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/savings_goals.csv",
      "format": "csv",
      "table": "savings_goals",
      "key": "datasets/financial-activity-log/v3/csv/savings_goals.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/financial-activity-log/v3/csv/savings_goals.csv",
      "bytes": 4652,
      "sha256": "c1a612536ea2f9daccc81e53ee5a5b4208e51fa0982b7151d2d5f16ae960aafc",
      "rows": 200,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/transactions.csv",
      "format": "csv",
      "table": "transactions",
      "key": "datasets/financial-activity-log/v3/csv/transactions.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/financial-activity-log/v3/csv/transactions.csv",
      "bytes": 23411,
      "sha256": "a4a3a6b1f911a0ee3aad6f06c0143ae9db0e1beb75d5a09ddd75c0cfc33d0693",
      "rows": 500,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "financial-activity-log.json",
      "format": "json",
      "table": null,
      "key": "datasets/financial-activity-log/v3/financial-activity-log.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/financial-activity-log/v3/financial-activity-log.json",
      "bytes": 204088,
      "sha256": "f9397bb6118e962cce37c87f03cb6fe5de50d22a93af3c57f1c610ffc33cb222",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/financial-activity-log/v3/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/financial-activity-log/v3/sql/postgres.sql",
      "bytes": 76108,
      "sha256": "7bb0fcd1f57d221d6541571f7ea5cf062b342cd08aa9e549490b4d997de04652",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/financial-activity-log/v3/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/financial-activity-log/v3/sql/mysql.sql",
      "bytes": 75545,
      "sha256": "1ff44e7fa216622af6bb4aa8820365d0d43cae3826a7dad71ff43ab9e8b91b10",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/financial-activity-log/v3/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/financial-activity-log/v3/sql/mssql.sql",
      "bytes": 78017,
      "sha256": "6a1db8f8905c133664aa815040bf525ab1222960e07e2cb328e65c79494c0a33",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/financial-activity-log/v3/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/financial-activity-log/v3/sql/sqlite.sql",
      "bytes": 75323,
      "sha256": "2d52c7f2e7adeeba835160ce803d9ae77e7107fe3ca07d6d9b69a538cee9c990",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/financial-activity-log/v3/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/financial-activity-log/v3/prisma/seed.ts",
      "bytes": 167181,
      "sha256": "9b0f9e20f578ff01733f592bb2775358efc4aa8cb8aaa5316aa08591b79e560b",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/financial-activity-log/v3/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/financial-activity-log/v3/django/fixtures.json",
      "bytes": 268250,
      "sha256": "84b6248bbfa95553a6599afd75f64f15af9fe6006a94ffe4477c64926f389cc6",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788767447282,
  "updatedAt": 1788783918404
}
