mirror of
https://github.com/open-metadata/OpenMetadata
synced 2026-05-24 09:39:11 +00:00
153 lines
13 KiB
JSON
153 lines
13 KiB
JSON
{
|
|
"dataModels": [
|
|
{
|
|
"tableFqn": "postgres_sample.jaffle_shop.public.raw_customers",
|
|
"modelType": "DBT",
|
|
"resourceType": "seed",
|
|
"description": "Raw customer data loaded from CSV seed file",
|
|
"path": "seeds/raw_customers.csv",
|
|
"rawSql": "",
|
|
"sql": "",
|
|
"dbtSourceProject": "jaffle_shop",
|
|
"upstream": [],
|
|
"columns": [
|
|
{"name": "id", "dataType": "INT", "description": "Primary key for customers"},
|
|
{"name": "first_name", "dataType": "VARCHAR", "dataLength": 256, "description": "Customer first name"},
|
|
{"name": "last_name", "dataType": "VARCHAR", "dataLength": 256, "description": "Customer last name"}
|
|
]
|
|
},
|
|
{
|
|
"tableFqn": "postgres_sample.jaffle_shop.public.raw_orders",
|
|
"modelType": "DBT",
|
|
"resourceType": "seed",
|
|
"description": "Raw order data loaded from CSV seed file",
|
|
"path": "seeds/raw_orders.csv",
|
|
"rawSql": "",
|
|
"sql": "",
|
|
"dbtSourceProject": "jaffle_shop",
|
|
"upstream": [],
|
|
"columns": [
|
|
{"name": "id", "dataType": "INT", "description": "Primary key for orders"},
|
|
{"name": "user_id", "dataType": "INT", "description": "Foreign key to customers"},
|
|
{"name": "order_date", "dataType": "DATE", "description": "Date the order was placed"},
|
|
{"name": "status", "dataType": "VARCHAR", "dataLength": 64, "description": "Order status"}
|
|
]
|
|
},
|
|
{
|
|
"tableFqn": "postgres_sample.jaffle_shop.public.raw_payments",
|
|
"modelType": "DBT",
|
|
"resourceType": "seed",
|
|
"description": "Raw payment data loaded from CSV seed file",
|
|
"path": "seeds/raw_payments.csv",
|
|
"rawSql": "",
|
|
"sql": "",
|
|
"dbtSourceProject": "jaffle_shop",
|
|
"upstream": [],
|
|
"columns": [
|
|
{"name": "id", "dataType": "INT", "description": "Primary key for payments"},
|
|
{"name": "order_id", "dataType": "INT", "description": "Foreign key to orders"},
|
|
{"name": "payment_method", "dataType": "VARCHAR", "dataLength": 64, "description": "Payment method used"},
|
|
{"name": "amount", "dataType": "INT", "description": "Payment amount in cents"}
|
|
]
|
|
},
|
|
{
|
|
"tableFqn": "postgres_sample.jaffle_shop.public.stg_customers",
|
|
"modelType": "DBT",
|
|
"resourceType": "model",
|
|
"description": "Staged customer data with renamed columns",
|
|
"path": "models/staging/stg_customers.sql",
|
|
"rawSql": "WITH source AS (\n SELECT * FROM {{ ref('raw_customers') }}\n)\n\nSELECT\n id AS customer_id,\n first_name,\n last_name\nFROM source",
|
|
"sql": "WITH source AS (\n SELECT * FROM jaffle_shop.public.raw_customers\n)\n\nSELECT\n id AS customer_id,\n first_name,\n last_name\nFROM source",
|
|
"dbtSourceProject": "jaffle_shop",
|
|
"upstream": ["postgres_sample.jaffle_shop.public.raw_customers"],
|
|
"columns": [
|
|
{"name": "customer_id", "dataType": "INT", "description": "Unique identifier for a customer"},
|
|
{"name": "first_name", "dataType": "VARCHAR", "dataLength": 256, "description": "Customer first name"},
|
|
{"name": "last_name", "dataType": "VARCHAR", "dataLength": 256, "description": "Customer last name"}
|
|
]
|
|
},
|
|
{
|
|
"tableFqn": "postgres_sample.jaffle_shop.public.stg_orders",
|
|
"modelType": "DBT",
|
|
"resourceType": "model",
|
|
"description": "Staged order data with renamed columns",
|
|
"path": "models/staging/stg_orders.sql",
|
|
"rawSql": "WITH source AS (\n SELECT * FROM {{ ref('raw_orders') }}\n)\n\nSELECT\n id AS order_id,\n user_id AS customer_id,\n order_date,\n status\nFROM source",
|
|
"sql": "WITH source AS (\n SELECT * FROM jaffle_shop.public.raw_orders\n)\n\nSELECT\n id AS order_id,\n user_id AS customer_id,\n order_date,\n status\nFROM source",
|
|
"dbtSourceProject": "jaffle_shop",
|
|
"upstream": ["postgres_sample.jaffle_shop.public.raw_orders"],
|
|
"columns": [
|
|
{"name": "order_id", "dataType": "INT", "description": "Unique identifier for an order"},
|
|
{"name": "customer_id", "dataType": "INT", "description": "Foreign key to customers"},
|
|
{"name": "order_date", "dataType": "DATE", "description": "Date the order was placed"},
|
|
{"name": "status", "dataType": "VARCHAR", "dataLength": 64, "description": "Order status"}
|
|
]
|
|
},
|
|
{
|
|
"tableFqn": "postgres_sample.jaffle_shop.public.stg_payments",
|
|
"modelType": "DBT",
|
|
"resourceType": "model",
|
|
"description": "Staged payment data with renamed columns and converted amount from cents to dollars",
|
|
"path": "models/staging/stg_payments.sql",
|
|
"rawSql": "WITH source AS (\n SELECT * FROM {{ ref('raw_payments') }}\n)\n\nSELECT\n id AS payment_id,\n order_id,\n payment_method,\n amount / 100.0 AS amount\nFROM source",
|
|
"sql": "WITH source AS (\n SELECT * FROM jaffle_shop.public.raw_payments\n)\n\nSELECT\n id AS payment_id,\n order_id,\n payment_method,\n amount / 100.0 AS amount\nFROM source",
|
|
"dbtSourceProject": "jaffle_shop",
|
|
"upstream": ["postgres_sample.jaffle_shop.public.raw_payments"],
|
|
"columns": [
|
|
{"name": "payment_id", "dataType": "INT", "description": "Unique identifier for a payment"},
|
|
{"name": "order_id", "dataType": "INT", "description": "Foreign key to orders"},
|
|
{"name": "payment_method", "dataType": "VARCHAR", "dataLength": 64, "description": "Payment method used"},
|
|
{"name": "amount", "dataType": "NUMERIC", "description": "Payment amount in dollars"}
|
|
]
|
|
},
|
|
{
|
|
"tableFqn": "postgres_sample.jaffle_shop.public.customers",
|
|
"modelType": "DBT",
|
|
"resourceType": "model",
|
|
"description": "This table has basic information about a customer, as well as some derived facts based on a customer's orders",
|
|
"path": "models/customers.sql",
|
|
"rawSql": "WITH customers AS (\n SELECT * FROM {{ ref('stg_customers') }}\n),\n\norders AS (\n SELECT * FROM {{ ref('stg_orders') }}\n),\n\npayments AS (\n SELECT * FROM {{ ref('stg_payments') }}\n),\n\ncustomer_orders AS (\n SELECT\n customer_id,\n MIN(order_date) AS first_order,\n MAX(order_date) AS most_recent_order,\n COUNT(order_id) AS number_of_orders\n FROM orders\n GROUP BY customer_id\n),\n\ncustomer_payments AS (\n SELECT\n orders.customer_id,\n SUM(amount) AS total_amount\n FROM payments\n LEFT JOIN orders ON payments.order_id = orders.order_id\n GROUP BY orders.customer_id\n),\n\nfinal AS (\n SELECT\n customers.customer_id,\n customers.first_name,\n customers.last_name,\n customer_orders.first_order,\n customer_orders.most_recent_order,\n customer_orders.number_of_orders,\n customer_payments.total_amount AS customer_lifetime_value\n FROM customers\n LEFT JOIN customer_orders ON customers.customer_id = customer_orders.customer_id\n LEFT JOIN customer_payments ON customers.customer_id = customer_payments.customer_id\n)\n\nSELECT * FROM final",
|
|
"sql": "WITH customers AS (\n SELECT * FROM jaffle_shop.public.stg_customers\n),\n\norders AS (\n SELECT * FROM jaffle_shop.public.stg_orders\n),\n\npayments AS (\n SELECT * FROM jaffle_shop.public.stg_payments\n),\n\ncustomer_orders AS (\n SELECT\n customer_id,\n MIN(order_date) AS first_order,\n MAX(order_date) AS most_recent_order,\n COUNT(order_id) AS number_of_orders\n FROM orders\n GROUP BY customer_id\n),\n\ncustomer_payments AS (\n SELECT\n orders.customer_id,\n SUM(amount) AS total_amount\n FROM payments\n LEFT JOIN orders ON payments.order_id = orders.order_id\n GROUP BY orders.customer_id\n),\n\nfinal AS (\n SELECT\n customers.customer_id,\n customers.first_name,\n customers.last_name,\n customer_orders.first_order,\n customer_orders.most_recent_order,\n customer_orders.number_of_orders,\n customer_payments.total_amount AS customer_lifetime_value\n FROM customers\n LEFT JOIN customer_orders ON customers.customer_id = customer_orders.customer_id\n LEFT JOIN customer_payments ON customers.customer_id = customer_payments.customer_id\n)\n\nSELECT * FROM final",
|
|
"dbtSourceProject": "jaffle_shop",
|
|
"upstream": [
|
|
"postgres_sample.jaffle_shop.public.stg_customers",
|
|
"postgres_sample.jaffle_shop.public.stg_orders",
|
|
"postgres_sample.jaffle_shop.public.stg_payments"
|
|
],
|
|
"columns": [
|
|
{"name": "customer_id", "dataType": "INT", "description": "Unique identifier for a customer"},
|
|
{"name": "first_name", "dataType": "VARCHAR", "dataLength": 256, "description": "Customer first name. PII."},
|
|
{"name": "last_name", "dataType": "VARCHAR", "dataLength": 256, "description": "Customer last name. PII."},
|
|
{"name": "first_order", "dataType": "DATE", "description": "Date of the customer's first order"},
|
|
{"name": "most_recent_order", "dataType": "DATE", "description": "Date of the customer's most recent order"},
|
|
{"name": "number_of_orders", "dataType": "INT", "description": "Total number of orders placed by the customer"},
|
|
{"name": "customer_lifetime_value", "dataType": "NUMERIC", "description": "Total amount spent by the customer across all orders"}
|
|
]
|
|
},
|
|
{
|
|
"tableFqn": "postgres_sample.jaffle_shop.public.orders",
|
|
"modelType": "DBT",
|
|
"resourceType": "model",
|
|
"description": "This table has one row per order with order details and payment amounts broken down by payment method",
|
|
"path": "models/orders.sql",
|
|
"rawSql": "WITH orders AS (\n SELECT * FROM {{ ref('stg_orders') }}\n),\n\npayments AS (\n SELECT * FROM {{ ref('stg_payments') }}\n),\n\norder_payments AS (\n SELECT\n order_id,\n SUM(CASE WHEN payment_method = 'credit_card' THEN amount ELSE 0 END) AS credit_card_amount,\n SUM(CASE WHEN payment_method = 'coupon' THEN amount ELSE 0 END) AS coupon_amount,\n SUM(CASE WHEN payment_method = 'bank_transfer' THEN amount ELSE 0 END) AS bank_transfer_amount,\n SUM(CASE WHEN payment_method = 'gift_card' THEN amount ELSE 0 END) AS gift_card_amount,\n SUM(amount) AS total_amount\n FROM payments\n GROUP BY order_id\n),\n\nfinal AS (\n SELECT\n orders.order_id,\n orders.customer_id,\n orders.order_date,\n orders.status,\n order_payments.credit_card_amount,\n order_payments.coupon_amount,\n order_payments.bank_transfer_amount,\n order_payments.gift_card_amount,\n order_payments.total_amount AS amount\n FROM orders\n LEFT JOIN order_payments ON orders.order_id = order_payments.order_id\n)\n\nSELECT * FROM final",
|
|
"sql": "WITH orders AS (\n SELECT * FROM jaffle_shop.public.stg_orders\n),\n\npayments AS (\n SELECT * FROM jaffle_shop.public.stg_payments\n),\n\norder_payments AS (\n SELECT\n order_id,\n SUM(CASE WHEN payment_method = 'credit_card' THEN amount ELSE 0 END) AS credit_card_amount,\n SUM(CASE WHEN payment_method = 'coupon' THEN amount ELSE 0 END) AS coupon_amount,\n SUM(CASE WHEN payment_method = 'bank_transfer' THEN amount ELSE 0 END) AS bank_transfer_amount,\n SUM(CASE WHEN payment_method = 'gift_card' THEN amount ELSE 0 END) AS gift_card_amount,\n SUM(amount) AS total_amount\n FROM payments\n GROUP BY order_id\n),\n\nfinal AS (\n SELECT\n orders.order_id,\n orders.customer_id,\n orders.order_date,\n orders.status,\n order_payments.credit_card_amount,\n order_payments.coupon_amount,\n order_payments.bank_transfer_amount,\n order_payments.gift_card_amount,\n order_payments.total_amount AS amount\n FROM orders\n LEFT JOIN order_payments ON orders.order_id = order_payments.order_id\n)\n\nSELECT * FROM final",
|
|
"dbtSourceProject": "jaffle_shop",
|
|
"upstream": [
|
|
"postgres_sample.jaffle_shop.public.stg_orders",
|
|
"postgres_sample.jaffle_shop.public.stg_payments"
|
|
],
|
|
"columns": [
|
|
{"name": "order_id", "dataType": "INT", "description": "Unique identifier for an order"},
|
|
{"name": "customer_id", "dataType": "INT", "description": "Foreign key to the customers table"},
|
|
{"name": "order_date", "dataType": "DATE", "description": "Date the order was placed"},
|
|
{"name": "status", "dataType": "VARCHAR", "dataLength": 64, "description": "Order status: placed, shipped, completed, return_pending, or returned"},
|
|
{"name": "credit_card_amount", "dataType": "NUMERIC", "description": "Amount paid by credit card"},
|
|
{"name": "coupon_amount", "dataType": "NUMERIC", "description": "Amount paid by coupon"},
|
|
{"name": "bank_transfer_amount", "dataType": "NUMERIC", "description": "Amount paid by bank transfer"},
|
|
{"name": "gift_card_amount", "dataType": "NUMERIC", "description": "Amount paid by gift card"},
|
|
{"name": "amount", "dataType": "NUMERIC", "description": "Total order amount across all payment methods"}
|
|
]
|
|
}
|
|
]
|
|
}
|