Releases
9.1.0
9.1.0 (2024-06-13)
Features
all: enable passing in-memory data to create_table (#9251 ) (fa15c7d ), closes #6593 #8863
api: add Table.value_counts
for easy group by count on multiple fields (aba913d )
api: isoyear method (#9034 ) (4707c44 )
api: support type
arg to ibis.null() (8db686e )
api: support wider range of types in where
arg to column reductions (582165f )
api: support wider range of types in where
arg to table reductions (7aba385 )
bigquery: implement a few URL ops (#9210 ) (3d0f9bc )
bigquery: support filtering by _TABLE_SUFFIX
when using a wildcard table name (#9375 ) (62a25c4 ), closes #9371
datafusion: use pyarrow for type conversion (#9299 ) (5bef96a )
drop Python 3.9 and test on Python 3.10/3.12 (#9213 ) (c06285e )
duckdb: add catalog support to create_table (#9147 ) (07331b5 )
duckdb: allow to use named in-memory db (#9241 ) (67460aa ), closes #9240
duckdb: support and test 1.0 (#9297 ) (395c8b5 )
pandas,dask: implement ops.StructColumn (#9302 ) (ea81d85 )
polars: accept list of CSVs to read_csv (#9232 ) (7a272e3 ), closes #9230
polars: implement create_view
/drop_view
/drop_table
(#9263 ) (c4324f5 )
postgres: provide translation for hash
ops (#9348 ) (57e2348 )
pyarrow: support Arrow PyCapsule interface on ibis.Table
objects (1a262b9 )
pyspark: builtin udf support (#9191 ) (142c105 )
pyspark: provide a mode option to manage both batch and streaming connections (e425ad5 )
pyspark: support reading from and writing to Kafka (#9266 ) (1c7c6e3 )
selectors: parse Python types in s.of_type
(#9356 ) (c0ebdc8 )
snowflake: implement array map and array filter (#9178 ) (9b42751 )
snowflake: implement support for asof_join
API (#9180 ) (49c6ce3 )
snowflake: implement Table.sample (#9071 ) (307334b )
ux: improve error message on unequal schemas during set ops (#9115 ) (5488896 )
Bug Fixes
api: treat col == None
or col == ibis.NA
as col.isnull()
(#9114 ) (711bf9f )
bigquery: only register memtable if obj is not None (#9268 ) (f175d0a )
bigquery: quote all parts of table names (#9141 ) (e1338d5 )
bigquery: quote qualified memtable names (#9149 ) (878d0d5 )
bigquery: strip whitespace from bigquery field names (#9160 ) (8e5cc3b ), closes #9112
clickhouse: more explicitly disallow null structs (#9305 ) (fc1d00f )
convert the uint64's from some backends' hash() to the desired int64 (900ecca )
datatypes: manually cast the type of pos
to int16
for table.info()
(#9139 ) (9eb1ed1 )
datatypes: manually cast the type of pos to int16 for table.describe()
(#9314 ) (c7fcddf )
ddl: use column names, not position, for insertion order (#9264 ) (3506f40 )
deps: remove pydruid sqlalchemy dependency (#9092 ) (a0df103 )
deps: update dependency datafusion to v37 (#9189 ) (49ecf8d )
deps: update dependency datafusion to v38 (#9278 ) (77aaecd )
deps: update dependency fsspec to <2024.5.1 (#9201 ) (15a5257 )
deps: update dependency fsspec to <2024.6.1 (#9304 ) (d600a0d )
deps: update dependency sqlglot to >=23.4,<23.14 (#9118 ) (d8119fb )
deps: update dependency sqlglot to >=23.4,<23.15 (#9151 ) (ac2201d )
deps: update dependency sqlglot to >=23.4,<23.17 (#9209 ) (82a5f93 )
deps: update dependency sqlglot to >=23.4,<23.18 (#9212 ) (b92dd7b )
deps: update dependency sqlglot to >=23.4,<24.2 (#9277 ) (98cb460 )
deps: update dependency sqlglot to >=23.4,<25.2 (#9368 ) (d65a752 )
deps: update dependency sqlglot to v24 (#9229 ) (a4918be )
deps: update dependency sqlglot to v25 (#9316 ) (2b921f8 )
drop nulls in .collect()
aggregation (b6e0c31 )
duckdb: clean up temp view junk when using memtables in create_table
(#9107 ) (4e7a00c )
duckdb: use existing table repr for settings view (#9155 ) (1892bfd )
exclude null values from first
and last
aggregations (22fffc7 )
mysql: avoid creating any tables when using .sql()
(#9363 ) (d2d5251 ), closes #9354
mysql: support parametrized datetime types (#9294 ) (ccfcbbc )
polars,mysql: avoid execution of query in _get_schema_using_query
(#9290 ) (0348b9a )
pyspark: plumb through limit
and params
in export functions (1f36552 )
replace NaNs with None in some backends when loading from pandas dataframe (#9094 ) (f2a7cd9 ), closes #9095 #8792
snowflake: ensure that timestamp conversion from parquet files is correct (#9181 ) (1ba4c32 )
snowflake: properly pass schema and database for sqlglot generation (#9221 ) (1ecb319 )
to_sql: use default backend for sql generation when set (#9228 ) (c66d6aa ), closes #9227
trino: parse URL passed to ibis.connect (e3ee67b )
typing: map() can take ArrayValues not just ArrayColumns (#9282 ) (3ad1183 )
Documentation
add API docs for operations (#9233 ) (11e0530 )
add probabl podcast to 9.0 blog (#9105 ) (9d20b85 )
api: document the ability to apply a different sort order using across
(#9376 ) (f41c554 )
blog: new blog post on sqlmesh + ibis (#9218 ) (8e015a7 )
builtin: update url for packages.parquet file (#9132 ) (4f93a91 )
descheming: move callout note outside of parameter description (#9133 ) (bb7bdb3 ), closes #8712
dev: update maintainers guide link (#9312 ) (379afac )
fix jupyterlite build (#9090 ) (63dcb92 )
improve maintainers summit slides (#9207 ) (5999e2d )
presentation: minor updates to overview presentation (#9145 ) (f7c2dbb )
presentations: minor updates to history in overview presentation (#9341 ) (f5c7978 )
presentation: updates to overview presentation (#9126 ) (2ba1884 )
put DataType base class first in reference (eaf0e45 )
pyspark: remove outdated connect()
callout (#9327 ) (10112bd )
release blog for Ibis 9.0 (#8918 ) (0350815 )
remove GitHub-specific Markdown in README.md (#9370 ) (ce0f1f2 )
remove unrendered/unused top-level getting-started.qmd document (#9106 ) (66a67c0 )
rework the homepage (#9088 ) (c68f9d4 ), closes #8856
search: append scraped API records to algolia index in CI (#9366 ) (05d9d7a )
talks: pycon 2024 maintainers talk (#9193 ) (77d6cb6 )
update contribute index page content (#9349 ) (f130dae )
update the code of conduct link (#9337 ) (fa2de4d )
use interactive mode instead of execute for typed null docstrings (c27097b )
use more idiomatic group_by in readme example (#9307 ) (2aca613 )
website: make icon grayscale for consistency (#9100 ) (fb81f92 )
Refactors
deprecate fillna
/dropna
methods in favor of fill_null
/drop_null
(df0e656 )
deprecate register api (#8863 ) (7a39bd3 )
ir: actually remove analysis.py
(#9087 ) (8508e3d )
pyspark: remove custom implementation of cursors (#9161 ) (9caa552 )
remove ibisNA (#9344 ) (83db19d ), closes #9311
snowflake: replace array repeat udf with builtin transform function (#9177 ) (b3abc9a )
sql: add LOWERED_OPS
mapping for cleaner handling of operations implemented by "lowering" to simpler operations (7a9b4b6 )
sql: extract aggregate handling out into common utility class (#9222 ) (56e0b38 ), closes #9170
sql: rename UNSUPPORTED_OPERATIONS
to UNSUPPORTED_OPS
for consistency (9e11957 )
sql: use a rewrite rule to implement FillNa/DropNa (378251e )
Performance
api: rewrite union and intersection construction to support more operands (#9194 ) (5d7aa55 )
api: speed up simple column accesses by avoiding dereferencing (#9156 ) (c770fa1 )
You canβt perform that action at this time.