Sessions#
Sessions enable you to attach objects such as catalogs, providers, models, functions, and tables which are reference-able in DataFrame operations. The session also enables creating temporary objects which are accessible through both the Python and SQL APIs. Sessions hold configuration state such as current_catalog and current_namespace which are used in name resolution and can simplify your workflows. Learn more about Sessions in the Daft User Guide.
session #
session() -> Session
Creates a default daft session to be used with a context manager.
Examples:
1 2 3 4 | |
Source code in daft/session.py
74 75 76 77 78 79 80 81 82 83 | |
current_session #
current_session() -> Session
Returns the active session's current session.
Source code in daft/session.py
900 901 902 | |
Session #
Session()
Session holds a connection's state and orchestrates execution of DataFrame and SQL queries against catalogs.
Examples:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
Methods:
| Name | Description |
|---|---|
attach | Attaches a known attachable object like a Catalog, Table, UDF, or DataFrame. |
attach_catalog | Attaches an external catalog to this session. |
attach_function | Attaches a Python function as a UDF in the current session. |
attach_provider | Attaches a provider instance to this session. |
attach_table | Attaches an external table instance to this session. |
attach_view | Attaches a DataFrame as a non-materialized temporary view for SQL resolution. |
create_namespace | Creates a namespace in the current catalog. |
create_namespace_if_not_exists | Creates a namespace in the current catalog if it does not already exist. |
create_table | Creates a table in the current catalog. |
create_table_if_not_exists | Creates a table in the current catalog if it does not already exist. |
create_temp_table | Creates a temp table scoped to this session's lifetime. |
create_temp_view | Creates or replaces a non-materialized temporary view from a DataFrame. |
current_catalog | Get the session's current catalog or None. |
current_model | Get the session's current model or None. |
current_namespace | Get the session's current namespace or None. |
current_provider | Get the session's current provider or None. |
detach_catalog | Detaches the catalog from this session or raises if the catalog does not exist. |
detach_function | Detaches a Python function as a UDF in the current session. |
detach_provider | Detaches the provider from this session or raises if the provider does not exist. |
detach_table | Detaches the table from this session or raises if the table does not exist. |
drop_namespace | Drop the given namespace in the current catalog. |
drop_table | Drop the given table in the current catalog. |
get_aggregate_function | Returns an aggregate function expression from the current session. |
get_catalog | Returns the catalog or raises an exception if it does not exist. |
get_function | Returns the function from the current session or raises an exception if it does not exist. |
get_provider | Returns the provider or raises an exception if it does not exist. |
get_table | Returns the table or raises an exception if it does not exist. |
has_catalog | Returns true if a catalog with the given identifier exists. |
has_namespace | Returns true if a namespace with the given identifier exists. |
has_provider | Returns true if a provider with the given identifier exists. |
has_table | Returns true if a table with the given identifier exists. |
list_catalogs | Returns a list of available catalogs matching the pattern. |
list_namespaces | Returns a list of matching namespaces in the current catalog. |
list_tables | Returns a list of available tables. |
load_extension | Load a native extension by module symbol or an explicit file path. |
read_table | Returns the table as a DataFrame or raises an exception if it does not exist. |
set_catalog | Set the given catalog as current_catalog or raises an err if it does not exist. |
set_model | Set the default model type. |
set_namespace | Set the given namespace as current_namespace for table resolution. |
set_provider | Set the default model provider with associated options. |
sql | Executes the SQL statement using this session. |
use | Use sets the current catalog and namespace. |
write_table | Writes the DataFrame to the table specified by the identifier. |
Source code in daft/session.py
111 112 113 | |
attach #
Attaches a known attachable object like a Catalog, Table, UDF, or DataFrame.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
object | Catalog | Table | UDF | DataFrame | object which is attachable to a session | required |
Returns:
| Type | Description |
|---|---|
None | None |
Source code in daft/session.py
176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 | |
attach_catalog #
Attaches an external catalog to this session.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
catalog | object | catalog instance or supported catalog object | required |
alias | str | None | optional alias for name resolution | None |
Returns:
| Name | Type | Description |
|---|---|---|
Catalog | Catalog | new daft catalog instance |
Source code in daft/session.py
200 201 202 203 204 205 206 207 208 209 210 211 212 213 | |
attach_function #
attach_function(function: UDF, alias: str | None = None) -> None
Attaches a Python function as a UDF in the current session.
Source code in daft/session.py
215 216 217 | |
attach_provider #
Attaches a provider instance to this session.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
provider | Provider | provider instance | required |
alias | str | None | optional alias for name resolution | None |
Returns:
| Name | Type | Description |
|---|---|---|
Provider | Provider | the provider instance |
Source code in daft/session.py
219 220 221 222 223 224 225 226 227 228 229 230 231 232 | |
attach_table #
Attaches an external table instance to this session.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
table | Table | object | table instance or supported table object | required |
alias | str | None | optional alias for name resolution | None |
Returns:
| Name | Type | Description |
|---|---|---|
Table | Table | new daft table instance |
Source code in daft/session.py
234 235 236 237 238 239 240 241 242 243 244 245 246 247 | |
attach_view #
Attaches a DataFrame as a non-materialized temporary view for SQL resolution.
Unlike attach_table(Table.from_df(...)), this does not materialize data into a MemoryTable.
Source code in daft/session.py
249 250 251 252 253 254 255 | |
create_namespace #
create_namespace(identifier: Identifier | str) -> None
Creates a namespace in the current catalog.
Source code in daft/session.py
317 318 319 320 321 | |
create_namespace_if_not_exists #
create_namespace_if_not_exists(identifier: Identifier | str) -> None
Creates a namespace in the current catalog if it does not already exist.
Source code in daft/session.py
323 324 325 326 327 | |
create_table #
create_table(identifier: Identifier | str, source: Schema | DataFrame, **properties: Any) -> Table
Creates a table in the current catalog.
If no namespace is specified, the current namespace is used.
Returns:
| Name | Type | Description |
|---|---|---|
Table | Table | the newly created table instance. |
Source code in daft/session.py
335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 | |
create_table_if_not_exists #
create_table_if_not_exists(identifier: Identifier | str, source: Schema | DataFrame, **properties: Any) -> Table
Creates a table in the current catalog if it does not already exist.
If no namespace is specified, the current namespace is used.
Returns:
| Name | Type | Description |
|---|---|---|
Table | Table | the newly created instance, or the existing table instance. |
Source code in daft/session.py
360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 | |
create_temp_table #
Creates a temp table scoped to this session's lifetime.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
identifier | str | table identifier (name) | required |
source | TableSource | object | table source like a schema or dataframe | required |
Returns:
| Name | Type | Description |
|---|---|---|
Table | Table | new table instance |
Examples:
1 2 3 4 5 6 | |
[Identifier(''T''), Identifier(''S'')] Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
identifier | str | table identifier (name) | required |
source | Schema | DataFrame | table source is either a Schema or Dataframe | required |
Returns:
| Name | Type | Description |
|---|---|---|
Table | Table | new table instance |
Source code in daft/session.py
390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 | |
create_temp_view #
Creates or replaces a non-materialized temporary view from a DataFrame.
Source code in daft/session.py
419 420 421 422 | |
current_catalog #
current_catalog() -> Catalog | None
Get the session's current catalog or None.
Returns:
| Name | Type | Description |
|---|---|---|
Catalog | Catalog | None | current catalog or None if one is not set |
Source code in daft/session.py
484 485 486 487 488 489 490 | |
current_model #
current_model() -> str | None
Get the session's current model or None.
Returns:
| Name | Type | Description |
|---|---|---|
str | str | None | the session's default model identifier |
Source code in daft/session.py
509 510 511 512 513 514 515 | |
current_namespace #
current_namespace() -> Identifier | None
Get the session's current namespace or None.
Returns:
| Name | Type | Description |
|---|---|---|
Identifier | Identifier | None | current namespace or none if one is not set |
Source code in daft/session.py
492 493 494 495 496 497 498 499 | |
current_provider #
current_provider() -> Provider | None
Get the session's current provider or None.
Returns:
| Name | Type | Description |
|---|---|---|
str | Provider | None | the session's default provider identifier |
Source code in daft/session.py
501 502 503 504 505 506 507 | |
detach_catalog #
detach_catalog(alias: str) -> None
Detaches the catalog from this session or raises if the catalog does not exist.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
alias | str | catalog alias to detach | required |
Source code in daft/session.py
257 258 259 260 261 262 263 | |
detach_function #
detach_function(alias: str) -> None
Detaches a Python function as a UDF in the current session.
Source code in daft/session.py
265 266 267 | |
detach_provider #
detach_provider(alias: str) -> None
Detaches the provider from this session or raises if the provider does not exist.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
alias | str | provider alias to detach | required |
Source code in daft/session.py
297 298 299 300 301 302 303 | |
detach_table #
detach_table(alias: str) -> None
Detaches the table from this session or raises if the table does not exist.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
alias | str | catalog alias to detach | required |
Source code in daft/session.py
305 306 307 308 309 310 311 | |
drop_namespace #
drop_namespace(identifier: Identifier | str) -> None
Drop the given namespace in the current catalog.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
identifier | Identifier | str | table identifier | required |
Source code in daft/session.py
438 439 440 441 442 443 444 445 446 | |
drop_table #
drop_table(identifier: Identifier | str) -> None
Drop the given table in the current catalog.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
identifier | Identifier | str | table identifier | required |
Source code in daft/session.py
448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 | |
get_aggregate_function #
get_aggregate_function(name: str, *args: Expression) -> Expression
Returns an aggregate function expression from the current session.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name | str | aggregate function name as registered by an extension | required |
*args | Expression | Expression arguments to pass to the aggregate function | () |
Returns:
| Name | Type | Description |
|---|---|---|
Expression | Expression | aggregate result expression |
Source code in daft/session.py
577 578 579 580 581 582 583 584 585 586 587 | |
get_catalog #
get_catalog(identifier: str) -> Catalog
Returns the catalog or raises an exception if it does not exist.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
identifier | str | catalog identifier (name) | required |
Returns:
| Name | Type | Description |
|---|---|---|
Catalog | Catalog | The catalog object. |
Raises:
| Type | Description |
|---|---|
ValueError | If the catalog does not exist. |
Source code in daft/session.py
521 522 523 524 525 526 527 528 529 530 531 532 533 | |
get_function #
get_function(name: str, *args: Expression) -> Expression
Returns the function from the current session or raises an exception if it does not exist.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name | str | function name as registered by an extension | required |
*args | Expression | Expression arguments to pass to the function | () |
Returns:
| Name | Type | Description |
|---|---|---|
Expression | Expression | result expression |
Source code in daft/session.py
565 566 567 568 569 570 571 572 573 574 575 | |
get_provider #
get_provider(identifier: str) -> Provider
Returns the provider or raises an exception if it does not exist.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
identifier | str | provider identifier e.g. "openai", "anthropic", "transformers" | required |
Returns:
| Name | Type | Description |
|---|---|---|
Provider | Provider | The provider object. |
Raises:
| Type | Description |
|---|---|
ValueError | If the provider does not exist. |
Source code in daft/session.py
535 536 537 538 539 540 541 542 543 544 545 546 547 | |
get_table #
get_table(identifier: Identifier | str) -> Table
Returns the table or raises an exception if it does not exist.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
identifier | Identifier | str | table identifier or identifier string | required |
Returns:
| Name | Type | Description |
|---|---|---|
Table | Table | The table object. |
Raises:
| Type | Description |
|---|---|
ValueError | If the table does not exist. |
Source code in daft/session.py
549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 | |
has_catalog #
has_catalog(identifier: str) -> bool
Returns true if a catalog with the given identifier exists.
Source code in daft/session.py
593 594 595 | |
has_namespace #
has_namespace(identifier: Identifier | str) -> bool
Returns true if a namespace with the given identifier exists.
Source code in daft/session.py
597 598 599 600 601 | |
has_provider #
has_provider(identifier: str) -> bool
Returns true if a provider with the given identifier exists.
Source code in daft/session.py
603 604 605 | |
has_table #
has_table(identifier: Identifier | str) -> bool
Returns true if a table with the given identifier exists.
Source code in daft/session.py
607 608 609 610 611 | |
list_catalogs #
list_catalogs(pattern: str | None = None) -> list[str]
Returns a list of available catalogs matching the pattern.
This API currently returns a list of catalog names for backwards compatibility. In 0.5.0 this API will return a list of Catalog objects.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
pattern | str | catalog name pattern | None |
Returns:
| Type | Description |
|---|---|
list[str] | list[str]: list of available catalog names |
Source code in daft/session.py
617 618 619 620 621 622 623 624 625 626 627 628 629 | |
list_namespaces #
list_namespaces(pattern: str | None = None) -> list[Identifier]
Returns a list of matching namespaces in the current catalog.
Source code in daft/session.py
631 632 633 634 635 | |
list_tables #
list_tables(pattern: str | None = None) -> list[Identifier]
Returns a list of available tables.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
- pattern | str | Pattern to match table names. Pattern syntax is catalog-dependent: - Native/Memory and Postgres catalogs: Use SQL LIKE syntax ( | required |
Returns:
| Type | Description |
|---|---|
list[Identifier] | list[Identifier]: list of available tables |
Examples:
1 2 3 | |
Source code in daft/session.py
637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 | |
load_extension #
load_extension(extension: str | ModuleType | Path) -> None
Load a native extension by module symbol or an explicit file path.
.. warning:: This API is experimental and may change in future releases.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
extension | str | ModuleType | Path | A module with a native library or a direct file path to the shared library. | required |
Source code in daft/session.py
269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 | |
read_table #
read_table(identifier: Identifier | str, **options: Any) -> DataFrame
Returns the table as a DataFrame or raises an exception if it does not exist.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
identifier | Identifier | str | table identifier | required |
Returns:
| Name | Type | Description |
|---|---|---|
DataFrame | DataFrame | |
Raises:
| Type | Description |
|---|---|
ValueError | If the tables does not exist. |
Source code in daft/session.py
659 660 661 662 663 664 665 666 667 668 669 670 671 | |
set_catalog #
set_catalog(identifier: str | None) -> None
Set the given catalog as current_catalog or raises an err if it does not exist.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
identifier | str | sets the current catalog | required |
Raises:
| Type | Description |
|---|---|
ValueError | If the catalog does not exist. |
Source code in daft/session.py
677 678 679 680 681 682 683 684 685 686 | |
set_model #
set_model(identifier: str | None) -> None
Set the default model type.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
identifier | str | None | model identifier string. | required |
Source code in daft/session.py
717 718 719 720 721 722 723 | |
set_namespace #
set_namespace(identifier: Identifier | str | None) -> None
Set the given namespace as current_namespace for table resolution.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
identifier | Identifier | str | namespace identifier | required |
Source code in daft/session.py
688 689 690 691 692 693 694 695 696 | |
set_provider #
set_provider(identifier: str | None, **options: Any) -> None
Set the default model provider with associated options.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
identifier | str | None | provider identifier string or None. | required |
**options | Any | provider specific options such as an API key or retry limit. | {} |
Note
If there are no providers, and you give a known provider identifier like "openai", then we will create and attach this known provider. For example, daft.set_provider("openai") works.
Source code in daft/session.py
698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 | |
sql #
sql(sql: str) -> DataFrame | None
Executes the SQL statement using this session.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sql | str | input SQL statement | required |
Returns:
| Name | Type | Description |
|---|---|---|
DataFrame | DataFrame | None | dataframe instance if this was a data statement (DQL, DDL, DML). |
Source code in daft/session.py
153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 | |
use #
use(identifier: Identifier | str | None = None) -> None
Use sets the current catalog and namespace.
Source code in daft/session.py
470 471 472 473 474 475 476 477 478 479 480 481 482 | |
write_table #
write_table(identifier: Identifier | str, df: DataFrame, mode: Literal['append', 'overwrite'] = 'append', **options: dict[str, Any]) -> None
Writes the DataFrame to the table specified by the identifier.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
identifier | Identifier | str | table identifier | required |
df | DataFrame | dataframe to write | required |
mode | 'append' | 'overwrite' | write mode, defaults to "append" | 'append' |
**options | dict[str, Any] | additional, format-specific write options | {} |
Source code in daft/session.py
729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 | |