blob: 420a179e5da72e05b90a4f4425eac742c5d36060 [file] [log] [blame]
drop dataverse tpch if exists;
create dataverse tpch;
use dataverse tpch;
create type LineItemType as closed {
l_orderkey: int32,
l_partkey: int32,
l_suppkey: int32,
l_linenumber: int32,
l_quantity: int32,
l_extendedprice: double,
l_discount: double,
l_tax: double,
l_returnflag: string,
l_linestatus: string,
l_shipdate: string,
l_commitdate: string,
l_receiptdate: string,
l_shipinstruct: string,
l_shipmode: string,
l_comment: string
}
create type OrderType as closed {
o_orderkey: int32,
o_custkey: int32,
o_orderstatus: string,
o_totalprice: double,
o_orderdate: string,
o_orderpriority: string,
o_clerk: string,
o_shippriority: int32,
o_comment: string
}
create type CustomerType as closed {
c_custkey: int32,
c_name: string,
c_address: string,
c_nationkey: int32,
c_phone: string,
c_acctbal: double,
c_mktsegment: string,
c_comment: string
}
create type SupplierType as closed {
s_suppkey: int32,
s_name: string,
s_address: string,
s_nationkey: int32,
s_phone: string,
s_acctbal: double,
s_comment: string
}
create type NationType as closed {
n_nationkey: int32,
n_name: string,
n_regionkey: int32,
n_comment: string
}
create type RegionType as closed {
r_regionkey: int32,
r_name: string,
r_comment: string
}
create type PartType as closed {
p_partkey: int32,
p_name: string,
p_mfgr: string,
p_brand: string,
p_type: string,
p_size: int32,
p_container: string,
p_retailprice: double,
p_comment: string
}
create type PartSuppType as closed {
ps_partkey: int32,
ps_suppkey: int32,
ps_availqty: int32,
ps_supplycost: double,
ps_comment: string
}
create dataset LineItem(LineItemType)
partitioned by key l_orderkey, l_linenumber;
create dataset Orders(OrderType)
partitioned by key o_orderkey;
create dataset Supplier(SupplierType)
partitioned by key s_suppkey;
create dataset Region(RegionType)
partitioned by key r_regionkey;
create dataset Nation(NationType)
partitioned by key n_nationkey;
create dataset Part(PartType)
partitioned by key p_partkey;
create dataset Partsupp(PartSuppType)
partitioned by key ps_partkey, ps_suppkey;
create dataset Customer(CustomerType)
partitioned by key c_custkey;
load dataset LineItem
using "edu.uci.ics.asterix.external.dataset.adapter.NCFileSystemAdapter"
(("path"="nc1://data/tpch0.001/lineitem.tbl"),("format"="delimited-text"),("delimiter"="|")) pre-sorted;
load dataset Orders
using "edu.uci.ics.asterix.external.dataset.adapter.NCFileSystemAdapter"
(("path"="nc1://data/tpch0.001/orders.tbl"),("format"="delimited-text"),("delimiter"="|")) pre-sorted;
load dataset Supplier
using "edu.uci.ics.asterix.external.dataset.adapter.NCFileSystemAdapter"
(("path"="nc1://data/tpch0.001/supplier.tbl"),("format"="delimited-text"),("delimiter"="|")) pre-sorted;
load dataset Region
using "edu.uci.ics.asterix.external.dataset.adapter.NCFileSystemAdapter"
(("path"="nc1://data/tpch0.001/region.tbl"),("format"="delimited-text"),("delimiter"="|")) pre-sorted;
load dataset Nation
using "edu.uci.ics.asterix.external.dataset.adapter.NCFileSystemAdapter"
(("path"="nc1://data/tpch0.001/nation.tbl"),("format"="delimited-text"),("delimiter"="|")) pre-sorted;
load dataset Part
using "edu.uci.ics.asterix.external.dataset.adapter.NCFileSystemAdapter"
(("path"="nc1://data/tpch0.001/part.tbl"),("format"="delimited-text"),("delimiter"="|")) pre-sorted;
load dataset Partsupp
using "edu.uci.ics.asterix.external.dataset.adapter.NCFileSystemAdapter"
(("path"="nc1://data/tpch0.001/partsupp.tbl"),("format"="delimited-text"),("delimiter"="|")) pre-sorted;
load dataset Customer
using "edu.uci.ics.asterix.external.dataset.adapter.NCFileSystemAdapter"
(("path"="nc1://data/tpch0.001/customer.tbl"),("format"="delimited-text"),("delimiter"="|")) pre-sorted;
write output to nc1:"rttest/tpch_q8_national_market_share.adm";
for $t in (
for $slnrcop in
(for $s in dataset("Supplier")
for $lnrcop in
(
for $lnrco in
(
for $l in dataset('LineItem')
for $nrco in (
for $o in dataset('Orders')
for $nrc in (
for $c in dataset('Customer')
for $nr in (
for $n1 in dataset('Nation')
for $r1 in dataset('Region')
where $n1.n_regionkey = $r1.r_regionkey and $r1.r_name = 'AMERICA'
return {"n_nationkey": $n1.n_nationkey}
)
where $c.c_nationkey = $nr.n_nationkey
return {"c_custkey": $c.c_custkey}
)
where $nrc.c_custkey = $o.o_custkey
return {
"o_orderdate" : $o.o_orderdate,
"o_orderkey": $o.o_orderkey
}
)
where $l.l_orderkey = $nrco.o_orderkey and $nrco.o_orderdate >= '1995-01-01'
and $nrco.o_orderdate < '1996-12-31'
return {
"o_orderdate": $nrco.o_orderdate,
"l_partkey": $l.l_partkey,
"l_discount": $l.l_discount,
"l_extendedprice": $l.l_extendedprice,
"l_suppkey": $l.l_suppkey
})
for $p in dataset("Part")
where $p.p_partkey = $lnrco.l_partkey and $p.p_type = 'ECONOMY ANODIZED STEEL'
return {
"o_orderdate": $lnrco.o_orderdate,
"l_discount": $lnrco.l_discount,
"l_extendedprice": $lnrco.l_extendedprice,
"l_suppkey": $lnrco.l_suppkey
}
)
where $s.s_suppkey = $lnrcop.l_suppkey
return {
"o_orderdate": $lnrcop.o_orderdate,
"l_discount": $lnrcop.l_discount,
"l_extendedprice": $lnrcop.l_extendedprice,
"l_suppkey": $lnrcop.l_suppkey,
"s_nationkey": $s.s_nationkey
})
for $n2 in dataset('Nation')
where $slnrcop.s_nationkey = $n2.n_nationkey
let $o_year := year($slnrcop.o_orderdate)
return {
"year": $o_year,
"revenue": $slnrcop.l_extendedprice *(1-$slnrcop.l_discount),
"s_name": $n2.n_name
})
group by $year := $t.year with $t
order by $year
return {
"year": $year,
"mkt_share":sum(for $i in $t return switch-case($i.s_name='BRAZIL', true, $i.revenue, false, 0.0))/
sum(for $i in $t return $i.revenue)
}