import ibis
import gcsfs
import ibis.selectors as s
import plotly.express as px
= True
ibis.options.interactive repr.interactive.max_rows = 40
ibis.options.repr.interactive.max_length = 22
ibis.options.repr.interactive.max_columns = None
ibis.options.
= "plotly_dark"
px.defaults.template
= gcsfs.GCSFileSystem()
fs ibis.get_backend().register_filesystem(fs)
August 2024 – ad hoc analysis
Work in progress. DataFusion and Polars have both had new releases. DataFusion via Ibis now completes on all queries.
Versions used
Versions used in this analysis:
ibis-framework @ git+https://github.com/ibis-project/ibis
duckdb==1.0.0
datafusion==40.1.0
polars==1.5.0
Show me the analysis code
def get_t(floats=False):
= (
t "gs://ibis-bench/adhoc/2024-08-23/cache/file_id=*.parquet")
ibis.read_parquet(
.mutate(=ibis._["timestamp"].cast("timestamp"),
timestamp=ibis.literal("MacBook Pro (2021 Apple M1 Max 32GB)"),
instance_type
)filter(ibis._["floats"] == floats)
.
.distinct()
.cache()
)return t
def get_sfs(t):
= sorted(t.distinct(on="sf")["sf"].to_pyarrow().to_pylist())
sfs return sfs
def get_systems(t):
= sorted(t.distinct(on="system")["system"].to_pyarrow().to_pylist())
systems return systems
def get_instance_types(t):
= sorted(
instance_types ="instance_type")["instance_type"].to_pyarrow().to_pylist(),
t.distinct(on=lambda x: (x.split("-")[0], int(x.split("-")[-1])) if "-" in x else (x, 0),
key
)return instance_types
def get_query_numbers(t):
= sorted(
query_numbers ="query_number")["query_number"].to_pyarrow().to_pylist()
t.distinct(on
)return query_numbers
def get_failing_queries(t):
= t.group_by("system", "sf", "floats").agg(
fail =ibis._["query_number"].collect().unique().sort()
present_queries
)= (
fail
fail.mutate(=t.distinct(on="query_number")["query_number"]
failing_queries
.collect()filter(lambda x: ~fail["present_queries"].contains(x))
.
.sort()
)=ibis._["failing_queries"].length())
.mutate(num_failing_queries"present_queries")
.drop("sf"), "system")
.order_by(ibis.desc(
)return fail
def get_agg(t):
= (
agg filter(t["sf"] >= 1)
t.# .filter((t["system"].contains("duckdb")) | (t["system"].contains("datafusion")))
"instance_type", "system", "sf", "n_partitions", "query_number")
.group_by(
.agg(=t["execution_seconds"].mean(),
mean_execution_seconds
)
.order_by("instance_type"),
ibis.asc("sf"),
ibis.desc("n_partitions"),
ibis.asc("query_number"),
ibis.asc("system"),
ibis.desc("mean_execution_seconds"),
ibis.asc(
)
)return agg
def get_totals(t):
= (
totals filter(agg["sf"] >= 1)
agg."system", "sf")
.group_by(=agg["mean_execution_seconds"].sum())
.agg(total_execution_seconds
.order_by("sf"), ibis.desc("system"), ibis.desc("total_execution_seconds")
ibis.desc(
)
)return totals
def get_category_orders(t):
= {
category_orders "query_number": sorted(
"query_number").distinct().to_pandas()["query_number"].tolist()
agg.select(
),"system": sorted(
"system").distinct().to_pandas()["system"].tolist()
agg.select(
),"instance_type": sorted(
"instance_type")
agg.select(
.distinct()"instance_type"]
.to_pandas()[
.tolist(),=lambda x: (x.split("-")[0], int(x.split("-")[-1]))
keyif "-" in x
else (x, 0),
),
}return category_orders
def totals_line(totals, log_y=False):
px.line(=ibis._["sf"].log2()),
totals.mutate(sf="sf",
x="total_execution_seconds",
y="system",
color="system",
hover_name=True,
markers=log_y,
log_y="total execution time by scale factor",
title={"sf": "log2(sf)"},
labels=category_orders,
category_orders ).show()
def queries_bar(agg, sfs, category_orders):
for sf in sorted(sfs):
= px.bar(
c filter(agg["sf"] == sf).filter(
agg."instance_type"].lower().contains("macbook")
agg[
),="query_number",
x="mean_execution_seconds",
y="system",
color="group",
barmode=True,
log_y# pattern_shape="instance_type",
=category_orders,
category_orders=f"TPC-H scale factor {sf} (~{sf} GB in memory; ~{sf*2//5}GB on disk in Parquet) on MacBook Pro (2021 Apple M1 Max 32GB)",
title
)
c.update_layout(=dict(orientation="h", yanchor="top", y=1.02, xanchor="right", x=1)
legend
)
c.show()print()
Decimals (original TPC-H data)
Warning
Polars fails on 9/22 queries because you can’t round on decimals yet.
We also run with decimals converted to floats to account for this and get a comparison.
= get_t()
t t.head()
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ session_id ┃ instance_type ┃ system ┃ timestamp ┃ sf ┃ n_partitions ┃ query_number ┃ execution_seconds ┃ file_type ┃ floats ┃ file_id ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ uuid │ string │ string │ timestamp(6) │ int64 │ int64 │ int64 │ float64 │ string │ boolean │ string │ ├──────────────────────────────────────┼──────────────────────────────────────┼─────────────────┼────────────────────────────┼───────┼──────────────┼──────────────┼───────────────────┼───────────┼─────────┼──────────────────────────────────────────────┤ │ ca05e319-6b56-459a-81e2-196d14173351 │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 2024-08-23 12:25:44.293145 │ 4 │ 1 │ 7 │ 0.469318 │ parquet │ False │ 7c420182-f1a7-4631-b810-b75163ed6100.parquet │ │ ca05e319-6b56-459a-81e2-196d14173351 │ MacBook Pro (2021 Apple M1 Max 32GB) │ polars-lazy │ 2024-08-23 12:25:34.236746 │ 2 │ 1 │ 6 │ 0.049360 │ parquet │ False │ 7c420182-f1a7-4631-b810-b75163ed6100.parquet │ │ ca05e319-6b56-459a-81e2-196d14173351 │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 2024-08-23 12:26:21.835065 │ 8 │ 1 │ 22 │ 0.130533 │ parquet │ False │ 7c420182-f1a7-4631-b810-b75163ed6100.parquet │ │ ca05e319-6b56-459a-81e2-196d14173351 │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 2024-08-23 12:25:21.507721 │ 1 │ 1 │ 21 │ 0.174379 │ parquet │ False │ 7c420182-f1a7-4631-b810-b75163ed6100.parquet │ │ ca05e319-6b56-459a-81e2-196d14173351 │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 2024-08-23 12:28:46.247665 │ 32 │ 1 │ 2 │ 0.382871 │ parquet │ False │ 7c420182-f1a7-4631-b810-b75163ed6100.parquet │ └──────────────────────────────────────┴──────────────────────────────────────┴─────────────────┴────────────────────────────┴───────┴──────────────┴──────────────┴───────────────────┴───────────┴─────────┴──────────────────────────────────────────────┘
= get_sfs(t)
sfs sfs
[1, 2, 4, 8, 16, 32, 64, 128]
= get_systems(t)
systems systems
['ibis-datafusion', 'ibis-duckdb', 'polars-lazy']
= get_instance_types(t)
instance_types instance_types
['MacBook Pro (2021 Apple M1 Max 32GB)']
= get_query_numbers(t)
query_numbers query_numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
= get_failing_queries(t)
fail fail
┏━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓ ┃ system ┃ sf ┃ floats ┃ failing_queries ┃ num_failing_queries ┃ ┡━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━┩ │ string │ int64 │ boolean │ array<int64> │ int64 │ ├─────────────────┼───────┼─────────┼────────────────────────────────────┼─────────────────────┤ │ ibis-datafusion │ 128 │ False │ [] │ 0 │ │ ibis-duckdb │ 128 │ False │ [] │ 0 │ │ polars-lazy │ 128 │ False │ [8, 9, 10, 11, 14, 15, 17, 19, 22] │ 9 │ │ ibis-datafusion │ 64 │ False │ [] │ 0 │ │ ibis-duckdb │ 64 │ False │ [] │ 0 │ │ polars-lazy │ 64 │ False │ [8, 9, 10, 11, 14, 15, 17, 19, 22] │ 9 │ │ ibis-datafusion │ 32 │ False │ [] │ 0 │ │ ibis-duckdb │ 32 │ False │ [] │ 0 │ │ polars-lazy │ 32 │ False │ [8, 9, 10, 11, 14, 15, 17, 19, 22] │ 9 │ │ ibis-datafusion │ 16 │ False │ [] │ 0 │ │ ibis-duckdb │ 16 │ False │ [] │ 0 │ │ polars-lazy │ 16 │ False │ [8, 9, 10, 11, 14, 15, 17, 19, 22] │ 9 │ │ ibis-datafusion │ 8 │ False │ [] │ 0 │ │ ibis-duckdb │ 8 │ False │ [] │ 0 │ │ polars-lazy │ 8 │ False │ [8, 9, 10, 11, 14, 15, 17, 19, 22] │ 9 │ │ ibis-datafusion │ 4 │ False │ [] │ 0 │ │ ibis-duckdb │ 4 │ False │ [] │ 0 │ │ polars-lazy │ 4 │ False │ [8, 9, 10, 11, 14, 15, 17, 19, 22] │ 9 │ │ ibis-datafusion │ 2 │ False │ [] │ 0 │ │ ibis-duckdb │ 2 │ False │ [] │ 0 │ │ polars-lazy │ 2 │ False │ [8, 9, 10, 11, 14, 15, 17, 19, 22] │ 9 │ │ ibis-datafusion │ 1 │ False │ [] │ 0 │ │ ibis-duckdb │ 1 │ False │ [] │ 0 │ │ polars-lazy │ 1 │ False │ [8, 9, 10, 11, 14, 15, 17, 19, 22] │ 9 │ └─────────────────┴───────┴─────────┴────────────────────────────────────┴─────────────────────┘
= get_agg(t)
agg agg
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ instance_type ┃ system ┃ sf ┃ n_partitions ┃ query_number ┃ mean_execution_seconds ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩ │ string │ string │ int64 │ int64 │ int64 │ float64 │ ├──────────────────────────────────────┼─────────────────┼───────┼──────────────┼──────────────┼────────────────────────┤ │ MacBook Pro (2021 Apple M1 Max 32GB) │ polars-lazy │ 128 │ 1 │ 1 │ 272.486370 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 1 │ 11.606048 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 128 │ 1 │ 1 │ 15.757316 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ polars-lazy │ 128 │ 1 │ 2 │ 2.347797 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 2 │ 1.279553 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 128 │ 1 │ 2 │ 1.477171 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ polars-lazy │ 128 │ 1 │ 3 │ 27.181227 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 3 │ 8.333445 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 128 │ 1 │ 3 │ 7.530144 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ polars-lazy │ 128 │ 1 │ 4 │ 11.403273 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 4 │ 6.026812 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 128 │ 1 │ 4 │ 6.528712 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ polars-lazy │ 128 │ 1 │ 5 │ 40.171489 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 5 │ 8.683080 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 128 │ 1 │ 5 │ 9.051882 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ polars-lazy │ 128 │ 1 │ 6 │ 8.230003 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 6 │ 7.061977 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 128 │ 1 │ 6 │ 4.492152 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ polars-lazy │ 128 │ 1 │ 7 │ 23.795136 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 7 │ 17.664108 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 128 │ 1 │ 7 │ 14.404383 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 8 │ 10.597529 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 128 │ 1 │ 8 │ 12.206576 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 9 │ 16.954887 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 128 │ 1 │ 9 │ 145.980012 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 10 │ 9.018888 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 128 │ 1 │ 10 │ 12.127219 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 11 │ 1.597982 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 128 │ 1 │ 11 │ 2.703022 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ polars-lazy │ 128 │ 1 │ 12 │ 12.266083 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 12 │ 9.183415 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 128 │ 1 │ 12 │ 10.053736 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ polars-lazy │ 128 │ 1 │ 13 │ 54.599441 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 13 │ 6.959909 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 128 │ 1 │ 13 │ 7.707117 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 14 │ 7.155558 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 128 │ 1 │ 14 │ 8.676409 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 15 │ 12.765408 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 128 │ 1 │ 15 │ 15.083847 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ polars-lazy │ 128 │ 1 │ 16 │ 1.555730 │ │ … │ … │ … │ … │ … │ … │ └──────────────────────────────────────┴─────────────────┴───────┴──────────────┴──────────────┴────────────────────────┘
= get_totals(t)
totals totals
┏━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ system ┃ sf ┃ total_execution_seconds ┃ ┡━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ string │ int64 │ float64 │ ├─────────────────┼───────┼─────────────────────────┤ │ polars-lazy │ 128 │ 1350.187780 │ │ ibis-duckdb │ 128 │ 223.264220 │ │ ibis-datafusion │ 128 │ 401.521348 │ │ polars-lazy │ 64 │ 176.923297 │ │ ibis-duckdb │ 64 │ 98.655552 │ │ ibis-datafusion │ 64 │ 133.822870 │ │ polars-lazy │ 32 │ 62.012707 │ │ ibis-duckdb │ 32 │ 43.631367 │ │ ibis-datafusion │ 32 │ 60.327710 │ │ polars-lazy │ 16 │ 21.389563 │ │ ibis-duckdb │ 16 │ 22.242419 │ │ ibis-datafusion │ 16 │ 30.334133 │ │ polars-lazy │ 8 │ 8.962351 │ │ ibis-duckdb │ 8 │ 11.322597 │ │ ibis-datafusion │ 8 │ 14.689493 │ │ polars-lazy │ 4 │ 4.202529 │ │ ibis-duckdb │ 4 │ 5.948022 │ │ ibis-datafusion │ 4 │ 7.150409 │ │ polars-lazy │ 2 │ 2.124277 │ │ ibis-duckdb │ 2 │ 3.491531 │ │ ibis-datafusion │ 2 │ 3.933485 │ │ polars-lazy │ 1 │ 1.175853 │ │ ibis-duckdb │ 1 │ 2.304713 │ │ ibis-datafusion │ 1 │ 2.529810 │ └─────────────────┴───────┴─────────────────────────┘
= get_category_orders(t) category_orders
totals_line(totals)
=True) totals_line(totals, log_y
queries_bar(agg, sfs, category_orders)
Floats (TPC-H data with decimals casted to floats)
= get_t(floats=True)
t t.head()
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ session_id ┃ instance_type ┃ system ┃ timestamp ┃ sf ┃ n_partitions ┃ query_number ┃ execution_seconds ┃ file_type ┃ floats ┃ file_id ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ uuid │ string │ string │ timestamp(6) │ int64 │ int64 │ int64 │ float64 │ string │ boolean │ string │ ├──────────────────────────────────────┼──────────────────────────────────────┼─────────────────┼────────────────────────────┼───────┼──────────────┼──────────────┼───────────────────┼───────────┼─────────┼──────────────────────────────────────────────┤ │ 770c123f-24cc-4f59-a19a-1bb61f50ffec │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 2024-08-23 13:19:23.935070 │ 8 │ 1 │ 6 │ 0.356593 │ parquet │ True │ 7c420182-f1a7-4631-b810-b75163ed6100.parquet │ │ 770c123f-24cc-4f59-a19a-1bb61f50ffec │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 2024-08-23 13:18:56.341210 │ 2 │ 1 │ 8 │ 0.214526 │ parquet │ True │ 7c420182-f1a7-4631-b810-b75163ed6100.parquet │ │ 770c123f-24cc-4f59-a19a-1bb61f50ffec │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 2024-08-23 13:19:09.525356 │ 4 │ 1 │ 5 │ 0.294797 │ parquet │ True │ 7c420182-f1a7-4631-b810-b75163ed6100.parquet │ │ 770c123f-24cc-4f59-a19a-1bb61f50ffec │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 2024-08-23 13:19:06.428940 │ 4 │ 1 │ 17 │ 0.293237 │ parquet │ True │ 7c420182-f1a7-4631-b810-b75163ed6100.parquet │ │ 770c123f-24cc-4f59-a19a-1bb61f50ffec │ MacBook Pro (2021 Apple M1 Max 32GB) │ polars-lazy │ 2024-08-23 13:33:39.204966 │ 64 │ 1 │ 14 │ 4.779252 │ parquet │ True │ 7c420182-f1a7-4631-b810-b75163ed6100.parquet │ └──────────────────────────────────────┴──────────────────────────────────────┴─────────────────┴────────────────────────────┴───────┴──────────────┴──────────────┴───────────────────┴───────────┴─────────┴──────────────────────────────────────────────┘
= get_sfs(t)
sfs sfs
[1, 2, 4, 8, 16, 32, 64, 128]
= get_systems(t)
systems systems
['ibis-datafusion', 'ibis-duckdb', 'polars-lazy']
= get_instance_types(t)
instance_types instance_types
['MacBook Pro (2021 Apple M1 Max 32GB)']
= get_query_numbers(t)
query_numbers query_numbers
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
= get_failing_queries(t)
fail fail
┏━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓ ┃ system ┃ sf ┃ floats ┃ failing_queries ┃ num_failing_queries ┃ ┡━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━┩ │ string │ int64 │ boolean │ array<int64> │ int64 │ ├─────────────────┼───────┼─────────┼─────────────────┼─────────────────────┤ │ ibis-datafusion │ 128 │ True │ [] │ 0 │ │ ibis-duckdb │ 128 │ True │ [] │ 0 │ │ polars-lazy │ 128 │ True │ [9] │ 1 │ │ ibis-datafusion │ 64 │ True │ [] │ 0 │ │ ibis-duckdb │ 64 │ True │ [] │ 0 │ │ polars-lazy │ 64 │ True │ [] │ 0 │ │ ibis-datafusion │ 32 │ True │ [] │ 0 │ │ ibis-duckdb │ 32 │ True │ [] │ 0 │ │ polars-lazy │ 32 │ True │ [] │ 0 │ │ ibis-datafusion │ 16 │ True │ [] │ 0 │ │ ibis-duckdb │ 16 │ True │ [] │ 0 │ │ polars-lazy │ 16 │ True │ [] │ 0 │ │ ibis-datafusion │ 8 │ True │ [] │ 0 │ │ ibis-duckdb │ 8 │ True │ [] │ 0 │ │ polars-lazy │ 8 │ True │ [] │ 0 │ │ ibis-datafusion │ 4 │ True │ [] │ 0 │ │ ibis-duckdb │ 4 │ True │ [] │ 0 │ │ polars-lazy │ 4 │ True │ [] │ 0 │ │ ibis-datafusion │ 2 │ True │ [] │ 0 │ │ ibis-duckdb │ 2 │ True │ [] │ 0 │ │ polars-lazy │ 2 │ True │ [] │ 0 │ │ ibis-datafusion │ 1 │ True │ [] │ 0 │ │ ibis-duckdb │ 1 │ True │ [] │ 0 │ │ polars-lazy │ 1 │ True │ [] │ 0 │ └─────────────────┴───────┴─────────┴─────────────────┴─────────────────────┘
= get_agg(t)
agg agg
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ instance_type ┃ system ┃ sf ┃ n_partitions ┃ query_number ┃ mean_execution_seconds ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩ │ string │ string │ int64 │ int64 │ int64 │ float64 │ ├──────────────────────────────────────┼─────────────────┼───────┼──────────────┼──────────────┼────────────────────────┤ │ MacBook Pro (2021 Apple M1 Max 32GB) │ polars-lazy │ 128 │ 1 │ 1 │ 215.198010 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 1 │ 14.151513 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 128 │ 1 │ 1 │ 14.146393 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ polars-lazy │ 128 │ 1 │ 2 │ 3.867136 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 2 │ 1.262599 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 128 │ 1 │ 2 │ 1.418223 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ polars-lazy │ 128 │ 1 │ 3 │ 31.293637 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 3 │ 9.681746 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 128 │ 1 │ 3 │ 7.754292 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ polars-lazy │ 128 │ 1 │ 4 │ 13.875796 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 4 │ 7.143783 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 128 │ 1 │ 4 │ 6.379751 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ polars-lazy │ 128 │ 1 │ 5 │ 60.341715 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 5 │ 9.256498 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 128 │ 1 │ 5 │ 9.278300 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ polars-lazy │ 128 │ 1 │ 6 │ 10.330362 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 6 │ 7.172419 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 128 │ 1 │ 6 │ 5.229498 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ polars-lazy │ 128 │ 1 │ 7 │ 30.417159 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 7 │ 19.057976 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 128 │ 1 │ 7 │ 14.774110 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ polars-lazy │ 128 │ 1 │ 8 │ 103.227846 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 8 │ 11.324261 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 128 │ 1 │ 8 │ 12.952048 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 9 │ 17.571991 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 128 │ 1 │ 9 │ 266.100134 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ polars-lazy │ 128 │ 1 │ 10 │ 19.241730 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 10 │ 9.889749 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 128 │ 1 │ 10 │ 12.680748 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ polars-lazy │ 128 │ 1 │ 11 │ 4.408752 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 11 │ 1.897524 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 128 │ 1 │ 11 │ 2.610841 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ polars-lazy │ 128 │ 1 │ 12 │ 14.268959 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 12 │ 9.745045 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 128 │ 1 │ 12 │ 10.150931 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ polars-lazy │ 128 │ 1 │ 13 │ 53.542194 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 13 │ 8.106897 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-datafusion │ 128 │ 1 │ 13 │ 7.618829 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ polars-lazy │ 128 │ 1 │ 14 │ 14.145932 │ │ MacBook Pro (2021 Apple M1 Max 32GB) │ ibis-duckdb │ 128 │ 1 │ 14 │ 7.723759 │ │ … │ … │ … │ … │ … │ … │ └──────────────────────────────────────┴─────────────────┴───────┴──────────────┴──────────────┴────────────────────────┘
= get_totals(t)
totals totals
┏━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ system ┃ sf ┃ total_execution_seconds ┃ ┡━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ string │ int64 │ float64 │ ├─────────────────┼───────┼─────────────────────────┤ │ polars-lazy │ 128 │ 878.964834 │ │ ibis-duckdb │ 128 │ 241.800632 │ │ ibis-datafusion │ 128 │ 1288.898839 │ │ polars-lazy │ 64 │ 286.585091 │ │ ibis-duckdb │ 64 │ 117.745813 │ │ ibis-datafusion │ 64 │ 198.591653 │ │ polars-lazy │ 32 │ 95.891511 │ │ ibis-duckdb │ 32 │ 42.395885 │ │ ibis-datafusion │ 32 │ 69.521669 │ │ polars-lazy │ 16 │ 30.857167 │ │ ibis-duckdb │ 16 │ 23.126933 │ │ ibis-datafusion │ 16 │ 32.212283 │ │ polars-lazy │ 8 │ 12.247739 │ │ ibis-duckdb │ 8 │ 11.877606 │ │ ibis-datafusion │ 8 │ 14.541157 │ │ polars-lazy │ 4 │ 5.403272 │ │ ibis-duckdb │ 4 │ 6.427686 │ │ ibis-datafusion │ 4 │ 7.547297 │ │ polars-lazy │ 2 │ 2.637706 │ │ ibis-duckdb │ 2 │ 3.704135 │ │ ibis-datafusion │ 2 │ 4.143442 │ │ polars-lazy │ 1 │ 1.442963 │ │ ibis-duckdb │ 1 │ 2.649898 │ │ ibis-datafusion │ 1 │ 2.859929 │ └─────────────────┴───────┴─────────────────────────┘
= get_category_orders(t) category_orders
totals_line(totals)
=True) totals_line(totals, log_y
queries_bar(agg, sfs, category_orders)