wren-engine
wren-engine copied to clipboard
Column name suppkey is ambiguous
ERROR: com.google.cloud.bigquery.BigQueryException: Column name suppkey is ambiguous at [54:6] sql
SELECT * FROM SupplierRevenue
json
{
"catalog": "canner-cml",
"schema": "tpch_tiny",
"models": [
{
"name": "Orders",
"refSql": "select * from \"canner-cml\".tpch_tiny.orders",
"columns": [
{
"name": "orderkey",
"expression": "o_orderkey",
"type": "integer"
},
{
"name": "custkey",
"expression": "o_custkey",
"type": "integer"
},
{
"name": "orderstatus",
"expression": "o_orderstatus",
"type": "OrderStatus"
},
{
"name": "totalprice",
"expression": "o_totalprice",
"type": "float"
},
{
"name": "customer",
"type": "Customer",
"relationship": "OrdersCustomer"
},
{
"name": "orderdate",
"expression": "o_orderdate",
"type": "date"
},
{
"name": "lineitem",
"type": "Lineitem",
"relationship": "OrdersLineitem"
}
],
"primaryKey": "orderkey"
},
{
"name": "Customer",
"refSql": "select * from \"canner-cml\".tpch_tiny.customer",
"columns": [
{
"name": "custkey",
"expression": "c_custkey",
"type": "integer"
},
{
"name": "name",
"expression": "c_name",
"type": "string"
},
{
"name": "orders",
"type": "Orders",
"relationship": "OrdersCustomer"
}
],
"primaryKey": "custkey"
},
{
"name": "Lineitem",
"refSql": "select * from \"canner-cml\".tpch_tiny.lineitem",
"columns": [
{
"name": "orderkey",
"expression": "l_orderkey",
"type": "integer"
},
{
"name": "partkey",
"expression": "l_partkey",
"type": "integer"
},
{
"name": "suppkey",
"expression": "l_suppkey",
"type": "integer"
},
{
"name": "linenumber",
"expression": "l_linenumber",
"type": "integer"
},
{
"name": "extendedprice",
"expression": "l_extendedprice",
"type": "double"
},
{
"name": "discount",
"expression": "l_discount",
"type": "double"
},
{
"name": "shipdate",
"expression": "l_shipdate",
"type": "date"
},
{
"name": "orders",
"type": "Orders",
"relationship": "OrdersLineitem"
},
{
"name": "part",
"type": "Part",
"relationship": "LineitemPart"
},
{
"name": "orderkey_linenumber",
"type": "string",
"expression": "concat(l_orderkey, l_linenumber)"
},
{
"name": "supplier",
"type": "Supplier",
"relationship": "LineitemSupplier"
}
],
"primaryKey": "orderkey_linenumber"
},
{
"name": "Part",
"refSql": "select * from \"canner-cml\".tpch_tiny.part",
"columns": [
{
"name": "partkey",
"expression": "p_partkey",
"type": "integer"
},
{
"name": "name",
"expression": "p_name",
"type": "string"
}
],
"primaryKey": "partkey"
},
{
"name": "Supplier",
"refSql": "select * from \"canner-cml\".tpch_tiny.supplier",
"columns": [
{
"name": "suppkey",
"expression": "s_suppkey",
"type": "integer"
},
{
"name": "name",
"expression": "s_name",
"type": "string"
},
{
"name": "address",
"expression": "s_name",
"type": "string"
},
{
"name": "nationkey",
"expression": "s_nationkey",
"type": "integer"
},
{
"name": "phone",
"expression": "s_phone",
"type": "string"
},
{
"name": "acctbal",
"expression": "s_acctbal",
"type": "float"
},
{
"name": "comment",
"expression": "s_comment",
"type": "string"
}
],
"primaryKey": "suppkey"
}
],
"relationships": [
{
"name": "OrdersCustomer",
"models": [
"Orders",
"Customer"
],
"joinType": "MANY_TO_ONE",
"condition": "Orders.custkey = Customer.custkey"
},
{
"name": "OrdersLineitem",
"models": [
"Orders",
"Lineitem"
],
"joinType": "ONE_TO_MANY",
"condition": "Orders.orderkey = Lineitem.orderkey"
},
{
"name": "LineitemPart",
"models": [
"Lineitem",
"Part"
],
"joinType": "MANY_TO_ONE",
"condition": "Lineitem.partkey = Part.partkey"
},
{
"name": "LineitemSupplier",
"models": [
"Lineitem",
"Supplier"
],
"joinType": "MANY_TO_ONE",
"condition": "Lineitem.suppkey = Supplier.suppkey"
}
],
"metrics": [
{
"name": "Revenue",
"baseModel": "Orders",
"dimension": [
{
"name": "custkey",
"type": "integer"
}
],
"measure": [
{
"name": "totalprice",
"type": "integer",
"expression": "sum(totalprice)"
}
],
"timeGrain": [
{
"name": "orderdate",
"refColumn": "orderdate",
"dateParts": [
"YEAR",
"MONTH"
]
}
]
},
{
"name": "SupplierRevenue",
"baseModel": "Lineitem",
"dimension": [
{
"name": "supplierkey",
"expression": "suppkey",
"type": "integer"
},
{
"name": "name",
"expression": "supplier.name",
"type": "string"
},
{
"name": "address",
"expression": "supplier.address",
"type": "string"
},
{
"name": "phone",
"expression": "supplier.phone",
"type": "string"
}
],
"measure": [
{
"name": "total_revenue",
"type": "double",
"expression": "sum(extendedprice * (1 - discount))"
}
],
"timeGrain": [
{
"name": "shipdate",
"refColumn": "shipdate",
"dateParts": ["DAY"]
}
]
}
],
"enumDefinitions": [
{
"name": "Status",
"values": [
{
"name": "F"
},
{
"name": "O"
},
{
"name": "P"
}
]
}
],
"views": [
{
"name": "useModel",
"statement": "select * from Orders"
},
{
"name": "useRelationship",
"statement": "select orderkey, customer.name from Orders"
},
{
"name": "useRelationshipCustomer",
"statement": "select name, array_length(orders) as length from Customer"
},
{
"name": "useMetric",
"statement": "select * from Revenue"
},
{
"name": "useMetricRollUp",
"statement": "select * from roll_up(Revenue, orderdate, YEAR)"
},
{
"name": "useUseMetric",
"statement": "select * from useMetric"
},
{
"name": "useAny",
"statement": "SELECT any(filter(orders, orderItem -> orderItem.orderstatus = 'F')).totalprice FROM Customer LIMIT 100"
}
]
}
bigquery sql generated by accio
WITH
Lineitem AS (
SELECT
l_orderkey orderkey
, l_partkey partkey
, l_suppkey suppkey
, l_linenumber linenumber
, l_extendedprice extendedprice
, l_discount discount
, l_shipdate shipdate
, 'relationship<OrdersLineitem>' orders
, 'relationship<LineitemPart>' part
, concat(l_orderkey, l_linenumber) orderkey_linenumber
, 'relationship<LineitemSupplier>' supplier
FROM
(
SELECT *
FROM
`canner-cml`.tpch_tiny.lineitem
) t
)
, Supplier AS (
SELECT
s_suppkey suppkey
, s_name name
, s_name address
, s_nationkey nationkey
, s_phone phone
, s_acctbal acctbal
, s_comment comment
FROM
(
SELECT *
FROM
`canner-cml`.tpch_tiny.supplier
) t
)
, rs_y7eibaa64x AS (
SELECT DISTINCT
t.suppkey suppkey
, t.name name
, t.address address
, t.nationkey nationkey
, t.phone phone
, t.acctbal acctbal
, t.comment comment
, s.orderkey_linenumber bk
FROM
(Lineitem s
LEFT JOIN Supplier t ON (s.suppkey = t.suppkey))
)
, SupplierRevenue AS (
SELECT
suppkey
, rs_y7eibaa64x.name name
, rs_y7eibaa64x.address address
, rs_y7eibaa64x.phone phone
, sum((extendedprice * (1 - discount))) total_revenue
FROM
(Lineitem
LEFT JOIN rs_y7eibaa64x ON (Lineitem.orderkey_linenumber = rs_y7eibaa64x.bk))
GROUP BY 1, 2, 3, 4
)
SELECT *
FROM
SupplierRevenue