{
  "format": "dataset-manifest/1",
  "slug": "transaction-insights",
  "version": 1,
  "seed": "transaction-insights:1",
  "spec": {
    "format": "dataset/1",
    "slug": "transaction-insights",
    "name": "Transaction Insights",
    "tagline": "Customers, accounts, transaction types, and fees for banking transactions, detailing daily financial activities.",
    "description": "Transactions between accounts fuel the operations of a banking institution, illustrating the dynamic flow of money and the movement of assets between customers and their accounts. Daily activities revolve around transfers, deposits, withdrawals, and the associated fees, forming an intricate web of interactions among clients and the financial institution. The dataset captures these essential processes, with a focus on both routine transactions which occur frequently and high-value transfers that are significant yet less common, often occurring during specific time periods like month-end or paydays.\n\nThe dataset consists of several tables that interrelate to provide a comprehensive view of banking operations. The 'customers' table records essential information about each client, including their identification details and demographic data. The 'accounts' table associates each customer with their financial accounts, detailing account types and balances, while the 'transaction_types' table categorizes the different kinds of financial activities, such as deposits and withdrawals. The 'transactions' table serves as the core, linking customers and accounts to their respective actions, recording details such as transaction dates, amounts, and types. Finally, the 'fees' table outlines any charges associated with transactions, highlighting the costs incurred by customers for various services.\n\nWith this structure, developers can explore a multitude of questions regarding customer behavior, account management, and transaction patterns. They can analyze trends in transaction volumes, the frequency of specific transaction types, and the impact of fees on customer choices. This synthetic data serves as a great practice tool for those looking to better understand banking operations, refine their data analysis skills, and develop insights into customer finance management.",
    "domain": "banking",
    "shape": "transactional",
    "useCases": [
      "sql-practice",
      "orm-seeding"
    ],
    "keywords": [
      "banking",
      "transactions",
      "customers",
      "accounts",
      "fees",
      "deposits",
      "withdrawals",
      "transfers"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "customers": {
        "description": "This table contains customer information, with each row representing a unique customer and their associated accounts.",
        "rows": 200,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each customer."
          },
          "full_name": {
            "kind": "fullName",
            "description": "The customer's full name."
          },
          "email": {
            "kind": "email",
            "from": "full_name",
            "description": "Email address of the customer."
          },
          "created_at": {
            "kind": "datetime",
            "from": "2020-01-01",
            "to": "2023-12-31",
            "description": "The date the customer was created.",
            "dayProfile": "business"
          }
        }
      },
      "accounts": {
        "description": "This table holds account details for each customer, linking to the customers table, with various account types.",
        "rows": 300,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each account."
          },
          "customer_id": {
            "kind": "fk",
            "ref": "customers.id",
            "description": "Link to the customer who owns the account."
          },
          "account_type": {
            "kind": "enum",
            "values": [
              "savings",
              "checking",
              "business"
            ],
            "description": "Type of account held by the customer."
          },
          "balance": {
            "kind": "decimal",
            "min": 0,
            "max": 1000000,
            "scale": 2,
            "description": "Current balance of the account."
          }
        }
      },
      "transaction_types": {
        "description": "This table categorizes different types of transactions, providing a reference for the transactions table.",
        "rows": 4,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each transaction type."
          },
          "type": {
            "kind": "enum",
            "values": [
              "transfer",
              "deposit",
              "withdrawal",
              "fee"
            ],
            "description": "Type of the transaction."
          }
        }
      },
      "transactions": {
        "description": "This table records all transactions, linking to both accounts and transaction types, capturing the flow of money.",
        "rows": 1000,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each transaction."
          },
          "account_id": {
            "kind": "fk",
            "ref": "accounts.id",
            "description": "Link to the account involved in the transaction."
          },
          "transaction_type_id": {
            "kind": "fk",
            "ref": "transaction_types.id",
            "description": "Link to the type of transaction."
          },
          "amount": {
            "kind": "decimal",
            "min": 1,
            "max": 50000,
            "scale": 2,
            "description": "Amount of money involved in the transaction."
          },
          "transaction_date": {
            "kind": "datetime",
            "from": "2020-01-01",
            "to": "2023-12-31",
            "description": "Date and time the transaction occurred.",
            "trend": "growing"
          }
        }
      },
      "fees": {
        "description": "This table outlines various fees associated with transactions, linked to specific transaction types.",
        "rows": 10,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each fee."
          },
          "transaction_type_id": {
            "kind": "fk",
            "ref": "transaction_types.id",
            "description": "Link to the transaction type associated with the fee."
          },
          "fee_amount": {
            "kind": "decimal",
            "min": 0,
            "max": 500,
            "scale": 2,
            "description": "Amount charged as a fee for the transaction."
          }
        }
      }
    },
    "structure": "multi-table",
    "traits": [
      "monetary",
      "timestamped",
      "categorical"
    ],
    "analysisQuestions": [
      "What are the peak transaction periods during the month?",
      "How do deposit and withdrawal amounts compare across different account types?",
      "What is the average fee charged for transactions?",
      "Which customers have the highest transaction volumes?",
      "How often do customers perform high-value transfers?"
    ],
    "suggestedQueries": [
      {
        "title": "Join Transactions and Accounts",
        "sql": "SELECT t.id, a.account_type, t.amount FROM transactions t JOIN accounts a ON t.account_id = a.id;",
        "dialect": "postgres"
      },
      {
        "title": "Aggregate Transaction Amounts by Type",
        "sql": "SELECT tt.type, SUM(t.amount) AS total_amount FROM transactions t JOIN transaction_types tt ON t.transaction_type_id = tt.id GROUP BY tt.type;",
        "dialect": "postgres"
      },
      {
        "title": "Average Fee by Transaction Type",
        "sql": "SELECT tt.type, AVG(f.fee_amount) AS average_fee FROM fees f JOIN transaction_types tt ON f.transaction_type_id = tt.id GROUP BY tt.type;",
        "dialect": "postgres"
      },
      {
        "title": "Transactions in a Date Range",
        "sql": "SELECT * FROM transactions WHERE transaction_date BETWEEN '2023-01-01' AND '2023-12-31';",
        "dialect": "postgres"
      }
    ],
    "usageScenarios": [
      {
        "title": "Banking Data Analysis",
        "body": "Financial analysts can use this dataset to explore banking transactions, identifying trends and insights into customer behavior. By analyzing transaction types and amounts, they can make informed decisions regarding banking practices and offerings."
      },
      {
        "title": "ORM Seeding for Banking Applications",
        "body": "Developers can utilize this dataset to seed their banking application databases, providing realistic customer and transaction data for testing purposes. This helps ensure that the application behaves correctly with real-world data scenarios."
      },
      {
        "title": "Financial Reporting",
        "body": "Accountants and financial officers can leverage this dataset to generate reports on transaction activities, monitor account balances, and assess the overall financial health of the banking institution."
      },
      {
        "title": "Transaction Monitoring for Fraud Detection",
        "body": "Compliance officers can analyze transaction patterns in this dataset to identify unusual activities that may indicate fraudulent behavior. By focusing on transaction amounts and types, they can enhance the institution's fraud detection mechanisms."
      }
    ]
  },
  "counts": {
    "customers": 200,
    "accounts": 300,
    "transaction_types": 4,
    "fees": 10,
    "transactions": 1000
  },
  "stats": {
    "customers": {
      "rows": 200,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "full_name": {
          "nulls": 0,
          "distinct": 197,
          "min": "Amir Clark",
          "max": "Zoe Lee"
        },
        "email": {
          "nulls": 0,
          "distinct": 199
        },
        "created_at": {
          "nulls": 0,
          "distinct": 200,
          "min": "2020-01-01 18:07:05",
          "max": "2023-12-29 15:34:57"
        }
      }
    },
    "accounts": {
      "rows": 300,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 300,
          "min": 1,
          "max": 300
        },
        "customer_id": {
          "nulls": 0,
          "distinct": 151,
          "min": 3,
          "max": 200
        },
        "account_type": {
          "nulls": 0,
          "distinct": 3,
          "min": "business",
          "max": "savings"
        },
        "balance": {
          "nulls": 0,
          "distinct": 300,
          "min": 419.09,
          "max": 995971.55
        }
      }
    },
    "transaction_types": {
      "rows": 4,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 4,
          "min": 1,
          "max": 4
        },
        "type": {
          "nulls": 0,
          "distinct": 2,
          "min": "fee",
          "max": "withdrawal"
        }
      }
    },
    "transactions": {
      "rows": 1000,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 1000,
          "min": 1,
          "max": 1000
        },
        "account_id": {
          "nulls": 0,
          "distinct": 284,
          "min": 1,
          "max": 300
        },
        "transaction_type_id": {
          "nulls": 0,
          "distinct": 4,
          "min": 1,
          "max": 4
        },
        "amount": {
          "nulls": 0,
          "distinct": 1000,
          "min": 16.77,
          "max": 49993.03
        },
        "transaction_date": {
          "nulls": 0,
          "distinct": 1000,
          "min": "2020-01-01 01:11:35",
          "max": "2023-12-31 21:56:46"
        }
      }
    },
    "fees": {
      "rows": 10,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 10,
          "min": 1,
          "max": 10
        },
        "transaction_type_id": {
          "nulls": 0,
          "distinct": 4,
          "min": 1,
          "max": 4
        },
        "fee_amount": {
          "nulls": 0,
          "distinct": 10,
          "min": 102.78,
          "max": 485.13
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/customers.csv",
      "format": "csv",
      "table": "customers",
      "key": "datasets/transaction-insights/v1/csv/customers.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/transaction-insights/v1/csv/customers.csv",
      "bytes": 12203,
      "sha256": "d9d9b94850da3ef2c05b3527b7ba6193606c0766c7f3ab6f3c4ee3ff679124a9",
      "rows": 200,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/accounts.csv",
      "format": "csv",
      "table": "accounts",
      "key": "datasets/transaction-insights/v1/csv/accounts.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/transaction-insights/v1/csv/accounts.csv",
      "bytes": 8028,
      "sha256": "5192b3dd9fb0bf3af0abc2fb5052010e4132e84cff83890985c4e206e7eb6306",
      "rows": 300,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/transaction_types.csv",
      "format": "csv",
      "table": "transaction_types",
      "key": "datasets/transaction-insights/v1/csv/transaction_types.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/transaction-insights/v1/csv/transaction_types.csv",
      "bytes": 51,
      "sha256": "0207d7e37ed9e8c7d0d24985a1ad3a1944825b1a6f8c00f6637b0909f4c85afb",
      "rows": 4,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/fees.csv",
      "format": "csv",
      "table": "fees",
      "key": "datasets/transaction-insights/v1/csv/fees.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/transaction-insights/v1/csv/fees.csv",
      "bytes": 156,
      "sha256": "d0ef861d85587b3deb5265c1be5e96ac11e2d6699909262f3731eac8463c5838",
      "rows": 10,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/transactions.csv",
      "format": "csv",
      "table": "transactions",
      "key": "datasets/transaction-insights/v1/csv/transactions.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/transaction-insights/v1/csv/transactions.csv",
      "bytes": 39340,
      "sha256": "c2a9eb3de3f45abe0b56c1cad5fe4b1dd13d1fa50b4fd554a1f28c3dc4e11f54",
      "rows": 1000,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "transaction-insights.json",
      "format": "json",
      "table": null,
      "key": "datasets/transaction-insights/v1/transaction-insights.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/transaction-insights/v1/transaction-insights.json",
      "bytes": 225605,
      "sha256": "9966bf05d97f1872ecd30d559e11ca655dcf8d1968d7c2f447c266debee135be",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/transaction-insights/v1/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/transaction-insights/v1/sql/postgres.sql",
      "bytes": 81220,
      "sha256": "08829c5e9ffce07a00ab7652d524f60b36e32e8a667b0ddb45f4d86c84d0edb6",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/transaction-insights/v1/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/transaction-insights/v1/sql/mysql.sql",
      "bytes": 80651,
      "sha256": "7851a457c56c9ea22bf921e923c0301245cc9d8f08ac2b649c558a107340b800",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/transaction-insights/v1/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/transaction-insights/v1/sql/mssql.sql",
      "bytes": 82886,
      "sha256": "bccd065eb6de829532e6455e7d58ad0a6a8f8812f28dd758e68edeeaf6d4b9d2",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/transaction-insights/v1/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/transaction-insights/v1/sql/sqlite.sql",
      "bytes": 80445,
      "sha256": "47933cd2bf61ce8dd8067ef791f02d0b5f3109b43ef8be053002d0b826e23141",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/transaction-insights/v1/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/transaction-insights/v1/prisma/seed.ts",
      "bytes": 192310,
      "sha256": "a33cbe3b3e4b6674d89b65c5d70b24039437c517f68619f62caac480530d6a1e",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/transaction-insights/v1/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/transaction-insights/v1/django/fixtures.json",
      "bytes": 293322,
      "sha256": "11a710bbb186e4e0ca7f4d9415c0a1ad1c22d0e2a7d4257e50528d6826c38358",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788768012991,
  "updatedAt": 1788768012991
}
