sqlframe 3.14.2__tar.gz → 3.15.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sqlframe-3.14.2 → sqlframe-3.15.1}/PKG-INFO +1 -1
- {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/bigquery.md +7 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/duckdb.md +8 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/postgres.md +7 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/snowflake.md +5 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/_version.py +2 -2
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/function_alternatives.py +45 -2
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/functions.py +73 -13
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/session.py +5 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe.egg-info/PKG-INFO +1 -1
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/bigquery/test_bigquery_session.py +1 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/databricks/test_databricks_session.py +1 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/duck/test_duckdb_session.py +1 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/postgres/test_postgres_session.py +1 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/redshift/test_redshift_session.py +1 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/snowflake/test_snowflake_session.py +1 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/test_int_functions.py +13 -1
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/standalone/test_functions.py +6 -4
- {sqlframe-3.14.2 → sqlframe-3.15.1}/.github/CODEOWNERS +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/.github/workflows/main.workflow.yaml +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/.github/workflows/publish.workflow.yaml +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/.gitignore +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/.pre-commit-config.yaml +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/.readthedocs.yaml +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/LICENSE +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/Makefile +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/README.md +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/add_chatgpt_support.md +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/images/add_chatgpt_support/adding_ai_to_meal.jpeg +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/images/add_chatgpt_support/hype_train.gif +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/images/add_chatgpt_support/nonsense_sql.png +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/images/add_chatgpt_support/openai_full_rewrite.png +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/images/but_wait_theres_more.gif +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/images/cake.gif +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/images/you_get_pyspark_api.gif +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/sqlframe_universal_dataframe_api.md +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/configuration.md +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/databricks.md +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/docs/bigquery.md +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/docs/duckdb.md +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/docs/images/SF.png +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/docs/images/favicon.png +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/docs/images/favicon_old.png +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/docs/images/sqlframe_diagram.png +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/docs/postgres.md +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/images/SF.png +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/images/favicon.png +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/images/favicon_old.png +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/images/sqlframe_diagram.png +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/images/sqlframe_logo.png +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/index.md +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/redshift.md +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/requirements.txt +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/spark.md +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/standalone.md +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/docs/stylesheets/extra.css +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/mkdocs.yml +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/pytest.ini +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/renovate.json +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/setup.cfg +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/setup.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/LICENSE +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/_typing.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/catalog.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/column.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/dataframe.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/decorators.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/exceptions.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/group.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/mixins/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/mixins/catalog_mixins.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/mixins/dataframe_mixins.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/mixins/readwriter_mixins.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/mixins/table_mixins.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/normalize.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/operations.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/readerwriter.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/table.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/transforms.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/types.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/udf.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/util.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/base/window.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/bigquery/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/bigquery/catalog.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/bigquery/column.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/bigquery/dataframe.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/bigquery/functions.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/bigquery/functions.pyi +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/bigquery/group.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/bigquery/readwriter.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/bigquery/session.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/bigquery/table.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/bigquery/types.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/bigquery/udf.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/bigquery/window.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/databricks/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/databricks/catalog.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/databricks/column.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/databricks/dataframe.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/databricks/functions.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/databricks/functions.pyi +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/databricks/group.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/databricks/readwriter.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/databricks/session.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/databricks/table.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/databricks/types.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/databricks/udf.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/databricks/window.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/duckdb/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/duckdb/catalog.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/duckdb/column.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/duckdb/dataframe.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/duckdb/functions.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/duckdb/functions.pyi +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/duckdb/group.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/duckdb/readwriter.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/duckdb/session.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/duckdb/table.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/duckdb/types.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/duckdb/udf.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/duckdb/window.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/postgres/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/postgres/catalog.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/postgres/column.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/postgres/dataframe.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/postgres/functions.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/postgres/functions.pyi +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/postgres/group.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/postgres/readwriter.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/postgres/session.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/postgres/table.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/postgres/types.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/postgres/udf.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/postgres/window.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/redshift/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/redshift/catalog.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/redshift/column.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/redshift/dataframe.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/redshift/functions.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/redshift/group.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/redshift/readwriter.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/redshift/session.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/redshift/table.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/redshift/types.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/redshift/udf.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/redshift/window.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/snowflake/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/snowflake/catalog.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/snowflake/column.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/snowflake/dataframe.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/snowflake/functions.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/snowflake/functions.pyi +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/snowflake/group.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/snowflake/readwriter.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/snowflake/session.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/snowflake/table.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/snowflake/types.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/snowflake/udf.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/snowflake/window.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/spark/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/spark/catalog.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/spark/column.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/spark/dataframe.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/spark/functions.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/spark/functions.pyi +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/spark/group.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/spark/readwriter.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/spark/session.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/spark/table.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/spark/types.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/spark/udf.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/spark/window.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/standalone/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/standalone/catalog.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/standalone/column.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/standalone/dataframe.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/standalone/functions.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/standalone/group.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/standalone/readwriter.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/standalone/session.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/standalone/table.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/standalone/types.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/standalone/udf.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/standalone/window.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/testing/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe/testing/utils.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe.egg-info/SOURCES.txt +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe.egg-info/dependency_links.txt +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe.egg-info/requires.txt +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/sqlframe.egg-info/top_level.txt +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/common_fixtures.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/conftest.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee.csv +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee.json +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee.parquet +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_delta/.part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_delta/.part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_delta/.part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_delta/.part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_delta/.part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_delta/.part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet.crc +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_delta/_delta_log/.00000000000000000000.json.crc +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_delta/_delta_log/00000000000000000000.json +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_delta/part-00000-e5965c7b-e58f-4d3c-ad56-002876814e3a-c000.snappy.parquet +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_delta/part-00002-3fed7f18-370f-4b16-b232-504d6194eb52-c000.snappy.parquet +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_delta/part-00004-143c5da1-d5ab-4706-8e84-0d2a324c6894-c000.snappy.parquet +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_delta/part-00006-64f07e25-c30e-4075-acc6-b3c69c4ce80b-c000.snappy.parquet +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_delta/part-00008-89ccad8d-df73-4ad5-8850-82ef3884db60-c000.snappy.parquet +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_delta/part-00010-812b3382-8c7f-4c4e-9bcd-09ce8664f6e0-c000.snappy.parquet +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/employee_extra_line.csv +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/issue_219.csv +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds1.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds10.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds11.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds12.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds13.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds14.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds15.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds16.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds17.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds18.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds19.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds2.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds20.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds21.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds22.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds23.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds24.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds25.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds26.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds27.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds28.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds29.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds3.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds30.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds31.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds32.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds33.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds34.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds35.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds36.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds37.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds38.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds39.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds4.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds40.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds41.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds42.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds43.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds44.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds45.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds46.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds47.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds48.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds49.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds5.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds50.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds51.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds52.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds53.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds54.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds55.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds56.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds57.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds58.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds59.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds6.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds60.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds61.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds62.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds63.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds64.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds65.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds66.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds67.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds68.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds69.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds7.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds70.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds71.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds72.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds73.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds74.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds75.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds76.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds77.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds78.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds79.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds8.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds80.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds81.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds82.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds83.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds84.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds85.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds86.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds87.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds88.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds89.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds9.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds90.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds91.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds92.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds93.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds94.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds95.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds96.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds97.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds98.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/fixtures/tpcds/tpcds99.sql +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/bigquery/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/bigquery/test_bigquery_catalog.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/bigquery/test_bigquery_dataframe.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/databricks/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/databricks/test_databricks_catalog.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/databricks/test_databricks_dataframe.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/duck/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/duck/test_duckdb_activate.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/duck/test_duckdb_catalog.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/duck/test_duckdb_dataframe.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/duck/test_duckdb_reader.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/duck/test_duckdb_udf.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/duck/test_tpcds.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/postgres/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/postgres/test_postgres_activate.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/postgres/test_postgres_catalog.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/postgres/test_postgres_dataframe.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/redshift/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/redshift/test_redshift_catalog.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/snowflake/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/snowflake/test_snowflake_catalog.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/snowflake/test_snowflake_dataframe.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/spark/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/spark/test_spark_catalog.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/spark/test_spark_dataframe.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/test_engine_column.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/test_engine_dataframe.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/test_engine_reader.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/test_engine_session.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/test_engine_table.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/test_engine_writer.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/test_int_testing.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/fixtures.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/test_int_dataframe.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/test_int_dataframe_stats.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/test_int_grouped_data.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/test_int_session.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/types.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/bigquery/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/bigquery/test_activate.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/conftest.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/databricks/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/databricks/test_activate.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/duck/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/duck/test_activate.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/postgres/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/postgres/test_activate.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/redshift/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/redshift/test_activate.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/snowflake/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/snowflake/test_activate.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/spark/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/spark/test_activate.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/standalone/__init__.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/standalone/fixtures.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/standalone/test_activate.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/standalone/test_column.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/standalone/test_dataframe.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/standalone/test_dataframe_writer.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/standalone/test_session.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/standalone/test_session_case_sensitivity.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/standalone/test_types.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/standalone/test_window.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/test_activate.py +0 -0
- {sqlframe-3.14.2 → sqlframe-3.15.1}/tests/unit/test_util.py +0 -0
|
@@ -339,6 +339,8 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
|
339
339
|
* [ceil](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceil.html)
|
|
340
340
|
* [ceiling](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceiling.html)
|
|
341
341
|
* [char](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.char.html)
|
|
342
|
+
* [char_length](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.char_length.html)
|
|
343
|
+
* [character_length](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.character_length.html)
|
|
342
344
|
* [coalesce](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.coalesce.html)
|
|
343
345
|
* [col](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.col.html)
|
|
344
346
|
* [collect_list](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.collect_list.html)
|
|
@@ -449,11 +451,13 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
|
449
451
|
* [radians](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.radians.html)
|
|
450
452
|
* [rand](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.rand.html)
|
|
451
453
|
* [rank](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.rank.html)
|
|
454
|
+
* [regexp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp.html)
|
|
452
455
|
* [regexp_extract](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_extract.html)
|
|
453
456
|
* Single capture group is supported
|
|
454
457
|
* [regexp_like](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_like.html)
|
|
455
458
|
* [regexp_replace](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_replace.html)
|
|
456
459
|
* [repeat](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.repeat.html)
|
|
460
|
+
* [replace](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.replace.html)
|
|
457
461
|
* [reverse](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.reverse.html)
|
|
458
462
|
* Only works on strings (does not work on arrays)
|
|
459
463
|
* [right](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.right.html)
|
|
@@ -509,6 +513,9 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
|
509
513
|
* [ucase](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ucase.html)
|
|
510
514
|
* [unbase64](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unbase64.html)
|
|
511
515
|
* [unhex](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unhex.html)
|
|
516
|
+
* [unix_micros](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_micros.html)
|
|
517
|
+
* [unix_millis](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_millis.html)
|
|
518
|
+
* [unix_seconds](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_seconds.html)
|
|
512
519
|
* [unix_timestamp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_timestamp.html)
|
|
513
520
|
* [upper](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.upper.html)
|
|
514
521
|
* [var_pop](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.var_pop.html)
|
|
@@ -301,6 +301,8 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
|
301
301
|
* [ceil](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceil.html)
|
|
302
302
|
* [ceiling](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceiling.html)
|
|
303
303
|
* [char](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.char.html)
|
|
304
|
+
* [char_length](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.char_length.html)
|
|
305
|
+
* [character_length](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.character_length.html)
|
|
304
306
|
* [coalesce](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.coalesce.html)
|
|
305
307
|
* [col](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.col.html)
|
|
306
308
|
* [collect_list](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.collect_list.html)
|
|
@@ -417,10 +419,12 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
|
417
419
|
* [radians](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.radians.html)
|
|
418
420
|
* [rand](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.rand.html)
|
|
419
421
|
* [rank](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.rank.html)
|
|
422
|
+
* [regexp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp.html)
|
|
420
423
|
* [regexp_extract](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_extract.html)
|
|
421
424
|
* [regexp_like](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_like.html)
|
|
422
425
|
* [regexp_replace](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_replace.html)
|
|
423
426
|
* [repeat](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.repeat.html)
|
|
427
|
+
* [replace](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.replace.html)
|
|
424
428
|
* [reverse](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.reverse.html)
|
|
425
429
|
* Only works on strings (does not work on arrays)
|
|
426
430
|
* [right](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.right.html)
|
|
@@ -473,6 +477,10 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
|
473
477
|
* [ucase](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ucase.html)
|
|
474
478
|
* [unbase64](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unbase64.html)
|
|
475
479
|
* [unhex](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unhex.html)
|
|
480
|
+
* [unix_micros](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_micros.html)
|
|
481
|
+
* [unix_millis](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_millis.html)
|
|
482
|
+
* [unix_seconds](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_seconds.html)
|
|
483
|
+
* [unix_seconds](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_seconds.html)
|
|
476
484
|
* [unix_timestamp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_timestamp.html)
|
|
477
485
|
* [upper](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.upper.html)
|
|
478
486
|
* [var_pop](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.var_pop.html)
|
|
@@ -311,6 +311,8 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
|
311
311
|
* [ceil](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceil.html)
|
|
312
312
|
* [ceiling](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceiling.html)
|
|
313
313
|
* [char](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.char.html)
|
|
314
|
+
* [char_length](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.char_length.html)
|
|
315
|
+
* [character_length](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.character_length.html)
|
|
314
316
|
* [coalesce](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.coalesce.html)
|
|
315
317
|
* [col](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.col.html)
|
|
316
318
|
* [collect_list](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.collect_list.html)
|
|
@@ -412,9 +414,11 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
|
412
414
|
* [radians](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.radians.html)
|
|
413
415
|
* [rand](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.rand.html)
|
|
414
416
|
* [rank](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.rank.html)
|
|
417
|
+
* [regexp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp.html)
|
|
415
418
|
* [regexp_like](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_like.html)
|
|
416
419
|
* [regexp_replace](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_replace.html)
|
|
417
420
|
* [repeat](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.repeat.html)
|
|
421
|
+
* [replace](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.replace.html)
|
|
418
422
|
* [reverse](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.reverse.html)
|
|
419
423
|
* Only works on strings (does not work on arrays)
|
|
420
424
|
* [right](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.right.html)
|
|
@@ -462,6 +466,9 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
|
462
466
|
* [typeof](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.typeof.html)
|
|
463
467
|
* [ucase](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ucase.html)
|
|
464
468
|
* [unbase64](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unbase64.html)
|
|
469
|
+
* [unix_micros](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_micros.html)
|
|
470
|
+
* [unix_millis](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_millis.html)
|
|
471
|
+
* [unix_seconds](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_seconds.html)
|
|
465
472
|
* [unix_timestamp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_timestamp.html)
|
|
466
473
|
* [upper](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.upper.html)
|
|
467
474
|
* [var_pop](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.var_pop.html)
|
|
@@ -337,6 +337,8 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
|
337
337
|
* [ceil](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceil.html)
|
|
338
338
|
* [ceiling](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceiling.html)
|
|
339
339
|
* [char](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.char.html)
|
|
340
|
+
* [char_length](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.char_length.html)
|
|
341
|
+
* [character_length](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.character_length.html)
|
|
340
342
|
* [coalesce](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.coalesce.html)
|
|
341
343
|
* [col](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.col.html)
|
|
342
344
|
* [collect_list](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.collect_list.html)
|
|
@@ -460,6 +462,7 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
|
460
462
|
* [regexp_extract](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_extract.html)
|
|
461
463
|
* [regexp_replace](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_replace.html)
|
|
462
464
|
* [repeat](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.repeat.html)
|
|
465
|
+
* [replace](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.replace.html)
|
|
463
466
|
* [right](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.right.html)
|
|
464
467
|
* [rint](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.rint.html)
|
|
465
468
|
* [round](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.round.html)
|
|
@@ -513,6 +516,8 @@ See something that you would like to see supported? [Open an issue](https://gith
|
|
|
513
516
|
* [ucase](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ucase.html)
|
|
514
517
|
* [unbase64](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unbase64.html)
|
|
515
518
|
* [unhex](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unhex.html)
|
|
519
|
+
* [unix_micros](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_micros.html)
|
|
520
|
+
* [unix_millis](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_millis.html)
|
|
516
521
|
* [unix_seconds](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_seconds.html)
|
|
517
522
|
* [unix_timestamp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_timestamp.html)
|
|
518
523
|
* [upper](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.upper.html)
|
|
@@ -6,9 +6,7 @@ import re
|
|
|
6
6
|
import typing as t
|
|
7
7
|
|
|
8
8
|
from sqlglot import exp as expression
|
|
9
|
-
from sqlglot.dialects.dialect import build_formatted_time
|
|
10
9
|
from sqlglot.helper import ensure_list
|
|
11
|
-
from sqlglot.helper import flatten as _flatten
|
|
12
10
|
|
|
13
11
|
from sqlframe.base.column import Column
|
|
14
12
|
from sqlframe.base.util import (
|
|
@@ -1410,6 +1408,14 @@ def regexp_replace_global_option(
|
|
|
1410
1408
|
)
|
|
1411
1409
|
|
|
1412
1410
|
|
|
1411
|
+
def regexp_with_matches(str: ColumnOrName, regexp: ColumnOrName) -> Column:
|
|
1412
|
+
return Column.invoke_anonymous_function(str, "REGEXP_MATCHES", regexp)
|
|
1413
|
+
|
|
1414
|
+
|
|
1415
|
+
def regexp_with_contains(str: ColumnOrName, regexp: ColumnOrName) -> Column:
|
|
1416
|
+
return Column.invoke_anonymous_function(str, "REGEXP_CONTAINS", regexp)
|
|
1417
|
+
|
|
1418
|
+
|
|
1413
1419
|
def degrees_bgutil(col: ColumnOrName) -> Column:
|
|
1414
1420
|
return Column(
|
|
1415
1421
|
expression.Anonymous(
|
|
@@ -1519,6 +1525,43 @@ def unix_timestamp_bgutil(
|
|
|
1519
1525
|
)
|
|
1520
1526
|
|
|
1521
1527
|
|
|
1528
|
+
def unix_seconds_extract_epoch(col: ColumnOrName) -> Column:
|
|
1529
|
+
return Column(
|
|
1530
|
+
expression.Extract(
|
|
1531
|
+
this=expression.Var(this="EPOCH"),
|
|
1532
|
+
expression=Column.ensure_col(col).column_expression,
|
|
1533
|
+
)
|
|
1534
|
+
)
|
|
1535
|
+
|
|
1536
|
+
|
|
1537
|
+
def unix_millis_multiply_epoch(col: ColumnOrName) -> Column:
|
|
1538
|
+
unix_seconds = get_func_from_session("unix_seconds")
|
|
1539
|
+
|
|
1540
|
+
return Column(
|
|
1541
|
+
expression.Cast(
|
|
1542
|
+
this=expression.Mul(
|
|
1543
|
+
this=unix_seconds(col).column_expression,
|
|
1544
|
+
expression=expression.Literal.number(1000),
|
|
1545
|
+
),
|
|
1546
|
+
to=expression.DataType.build("bigint"),
|
|
1547
|
+
)
|
|
1548
|
+
)
|
|
1549
|
+
|
|
1550
|
+
|
|
1551
|
+
def unix_micros_multiply_epoch(col: ColumnOrName) -> Column:
|
|
1552
|
+
unix_seconds = get_func_from_session("unix_seconds")
|
|
1553
|
+
|
|
1554
|
+
return Column(
|
|
1555
|
+
expression.Cast(
|
|
1556
|
+
this=expression.Mul(
|
|
1557
|
+
this=unix_seconds(col).column_expression,
|
|
1558
|
+
expression=expression.Literal.number(1000000),
|
|
1559
|
+
),
|
|
1560
|
+
to=expression.DataType.build("bigint"),
|
|
1561
|
+
)
|
|
1562
|
+
)
|
|
1563
|
+
|
|
1564
|
+
|
|
1522
1565
|
def format_number_bgutil(col: ColumnOrName, d: int) -> Column:
|
|
1523
1566
|
round = get_func_from_session("round")
|
|
1524
1567
|
lit = get_func_from_session("lit")
|
|
@@ -51,6 +51,8 @@ def col(column_name: t.Union[ColumnOrName, t.Any]) -> Column:
|
|
|
51
51
|
def lit(value: t.Optional[t.Any] = None) -> Column:
|
|
52
52
|
if isinstance(value, str):
|
|
53
53
|
return Column(expression.Literal.string(value))
|
|
54
|
+
if isinstance(value, float) and value in {float("inf"), float("-inf")}:
|
|
55
|
+
return Column(expression.Literal.string(str(value)))
|
|
54
56
|
return Column(value)
|
|
55
57
|
|
|
56
58
|
|
|
@@ -961,12 +963,15 @@ def dayofweek(col: ColumnOrName) -> Column:
|
|
|
961
963
|
return dayofweek_from_extract(col)
|
|
962
964
|
|
|
963
965
|
if session._is_postgres:
|
|
964
|
-
return dayofweek_from_extract_with_isodow(col)
|
|
966
|
+
return dayofweek_from_extract_with_isodow(col) + 1
|
|
965
967
|
|
|
966
|
-
|
|
968
|
+
result = Column.invoke_expression_over_column(
|
|
967
969
|
Column(expression.TsOrDsToDate(this=Column.ensure_col(col).column_expression)),
|
|
968
970
|
expression.DayOfWeek,
|
|
969
971
|
)
|
|
972
|
+
if session._is_duckdb or session._is_snowflake:
|
|
973
|
+
return result + 1
|
|
974
|
+
return result
|
|
970
975
|
|
|
971
976
|
|
|
972
977
|
@meta()
|
|
@@ -2962,14 +2967,14 @@ def char(col: ColumnOrName) -> Column:
|
|
|
2962
2967
|
return Column(expression.Chr(expressions=Column.ensure_col(col).column_expression))
|
|
2963
2968
|
|
|
2964
2969
|
|
|
2965
|
-
@meta(
|
|
2970
|
+
@meta()
|
|
2966
2971
|
def char_length(str: ColumnOrName) -> Column:
|
|
2967
|
-
return Column.
|
|
2972
|
+
return Column.invoke_expression_over_column(str, expression.Length)
|
|
2968
2973
|
|
|
2969
2974
|
|
|
2970
|
-
@meta(
|
|
2975
|
+
@meta()
|
|
2971
2976
|
def character_length(str: ColumnOrName) -> Column:
|
|
2972
|
-
return Column.
|
|
2977
|
+
return Column.invoke_expression_over_column(str, expression.Length)
|
|
2973
2978
|
|
|
2974
2979
|
|
|
2975
2980
|
@meta(unsupported_engines=["bigquery", "postgres"])
|
|
@@ -4946,7 +4951,7 @@ def reflect(*cols: ColumnOrName) -> Column:
|
|
|
4946
4951
|
return Column.invoke_anonymous_function(cols[0], "reflect")
|
|
4947
4952
|
|
|
4948
4953
|
|
|
4949
|
-
@meta(unsupported_engines="
|
|
4954
|
+
@meta(unsupported_engines="snowflake")
|
|
4950
4955
|
def regexp(str: ColumnOrName, regexp: ColumnOrName) -> Column:
|
|
4951
4956
|
r"""Returns true if `str` matches the Java regex `regexp`, or false otherwise.
|
|
4952
4957
|
|
|
@@ -4996,12 +5001,21 @@ def regexp(str: ColumnOrName, regexp: ColumnOrName) -> Column:
|
|
|
4996
5001
|
| true|
|
|
4997
5002
|
+-------------------+
|
|
4998
5003
|
"""
|
|
4999
|
-
from sqlframe.base.function_alternatives import
|
|
5004
|
+
from sqlframe.base.function_alternatives import (
|
|
5005
|
+
regexp_with_contains,
|
|
5006
|
+
regexp_with_matches,
|
|
5007
|
+
)
|
|
5000
5008
|
|
|
5001
5009
|
session = _get_session()
|
|
5002
5010
|
|
|
5011
|
+
if session._is_duckdb:
|
|
5012
|
+
return regexp_with_matches(str, regexp)
|
|
5013
|
+
|
|
5014
|
+
if session._is_postgres:
|
|
5015
|
+
return Column.invoke_expression_over_column(str, expression.RegexpILike, expression=regexp)
|
|
5016
|
+
|
|
5003
5017
|
if session._is_bigquery:
|
|
5004
|
-
return
|
|
5018
|
+
return regexp_with_contains(str, regexp)
|
|
5005
5019
|
|
|
5006
5020
|
return Column.invoke_anonymous_function(str, "regexp", regexp)
|
|
5007
5021
|
|
|
@@ -5485,7 +5499,7 @@ def regr_syy(y: ColumnOrName, x: ColumnOrName) -> Column:
|
|
|
5485
5499
|
return Column.invoke_anonymous_function(y, "regr_syy", x)
|
|
5486
5500
|
|
|
5487
5501
|
|
|
5488
|
-
@meta(
|
|
5502
|
+
@meta()
|
|
5489
5503
|
def replace(
|
|
5490
5504
|
src: ColumnOrName, search: ColumnOrName, replace: t.Optional[ColumnOrName] = None
|
|
5491
5505
|
) -> Column:
|
|
@@ -5513,6 +5527,11 @@ def replace(
|
|
|
5513
5527
|
>>> df.select(replace(df.a, df.b).alias('r')).collect()
|
|
5514
5528
|
[Row(r='ABC')]
|
|
5515
5529
|
"""
|
|
5530
|
+
if replace is None and (
|
|
5531
|
+
_get_session()._is_duckdb or _get_session()._is_postgres or _get_session()._is_bigquery
|
|
5532
|
+
):
|
|
5533
|
+
replace = expression.Literal.string("") # type: ignore
|
|
5534
|
+
|
|
5516
5535
|
if replace is not None:
|
|
5517
5536
|
return Column.invoke_anonymous_function(src, "replace", search, replace)
|
|
5518
5537
|
else:
|
|
@@ -6397,7 +6416,7 @@ def unix_date(col: ColumnOrName) -> Column:
|
|
|
6397
6416
|
return Column.invoke_expression_over_column(col, expression.UnixDate)
|
|
6398
6417
|
|
|
6399
6418
|
|
|
6400
|
-
@meta(
|
|
6419
|
+
@meta()
|
|
6401
6420
|
def unix_micros(col: ColumnOrName) -> Column:
|
|
6402
6421
|
"""Returns the number of microseconds since 1970-01-01 00:00:00 UTC.
|
|
6403
6422
|
|
|
@@ -6411,10 +6430,20 @@ def unix_micros(col: ColumnOrName) -> Column:
|
|
|
6411
6430
|
[Row(n=1437584400000000)]
|
|
6412
6431
|
>>> spark.conf.unset("spark.sql.session.timeZone")
|
|
6413
6432
|
"""
|
|
6433
|
+
from sqlframe.base.function_alternatives import unix_micros_multiply_epoch
|
|
6434
|
+
|
|
6435
|
+
if (
|
|
6436
|
+
_get_session()._is_bigquery
|
|
6437
|
+
or _get_session()._is_duckdb
|
|
6438
|
+
or _get_session()._is_postgres
|
|
6439
|
+
or _get_session()._is_snowflake
|
|
6440
|
+
):
|
|
6441
|
+
return unix_micros_multiply_epoch(col)
|
|
6442
|
+
|
|
6414
6443
|
return Column.invoke_anonymous_function(col, "unix_micros")
|
|
6415
6444
|
|
|
6416
6445
|
|
|
6417
|
-
@meta(
|
|
6446
|
+
@meta()
|
|
6418
6447
|
def unix_millis(col: ColumnOrName) -> Column:
|
|
6419
6448
|
"""Returns the number of milliseconds since 1970-01-01 00:00:00 UTC.
|
|
6420
6449
|
Truncates higher levels of precision.
|
|
@@ -6429,10 +6458,20 @@ def unix_millis(col: ColumnOrName) -> Column:
|
|
|
6429
6458
|
[Row(n=1437584400000)]
|
|
6430
6459
|
>>> spark.conf.unset("spark.sql.session.timeZone")
|
|
6431
6460
|
"""
|
|
6461
|
+
from sqlframe.base.function_alternatives import unix_millis_multiply_epoch
|
|
6462
|
+
|
|
6463
|
+
if (
|
|
6464
|
+
_get_session()._is_bigquery
|
|
6465
|
+
or _get_session()._is_duckdb
|
|
6466
|
+
or _get_session()._is_postgres
|
|
6467
|
+
or _get_session()._is_snowflake
|
|
6468
|
+
):
|
|
6469
|
+
return unix_millis_multiply_epoch(col)
|
|
6470
|
+
|
|
6432
6471
|
return Column.invoke_anonymous_function(col, "unix_millis")
|
|
6433
6472
|
|
|
6434
6473
|
|
|
6435
|
-
@meta(
|
|
6474
|
+
@meta()
|
|
6436
6475
|
def unix_seconds(col: ColumnOrName) -> Column:
|
|
6437
6476
|
"""Returns the number of seconds since 1970-01-01 00:00:00 UTC.
|
|
6438
6477
|
Truncates higher levels of precision.
|
|
@@ -6447,6 +6486,27 @@ def unix_seconds(col: ColumnOrName) -> Column:
|
|
|
6447
6486
|
[Row(n=1437584400)]
|
|
6448
6487
|
>>> spark.conf.unset("spark.sql.session.timeZone")
|
|
6449
6488
|
"""
|
|
6489
|
+
from sqlframe.base.function_alternatives import unix_seconds_extract_epoch
|
|
6490
|
+
|
|
6491
|
+
if _get_session()._is_postgres:
|
|
6492
|
+
return unix_seconds_extract_epoch(col)
|
|
6493
|
+
|
|
6494
|
+
if _get_session()._is_bigquery:
|
|
6495
|
+
return Column(
|
|
6496
|
+
expression.Anonymous(
|
|
6497
|
+
this="UNIX_SECONDS",
|
|
6498
|
+
expressions=[
|
|
6499
|
+
expression.Anonymous(
|
|
6500
|
+
this="TIMESTAMP",
|
|
6501
|
+
expressions=[
|
|
6502
|
+
Column.ensure_col(col).column_expression,
|
|
6503
|
+
expression.Literal.string("UTC"),
|
|
6504
|
+
],
|
|
6505
|
+
)
|
|
6506
|
+
],
|
|
6507
|
+
)
|
|
6508
|
+
)
|
|
6509
|
+
|
|
6450
6510
|
return Column.invoke_expression_over_column(col, expression.UnixSeconds)
|
|
6451
6511
|
|
|
6452
6512
|
|
|
@@ -108,6 +108,11 @@ class _BaseSession(t.Generic[CATALOG, READER, WRITER, DF, TABLE, CONN, UDF_REGIS
|
|
|
108
108
|
if not getattr(self, "schema", None) or schema:
|
|
109
109
|
self._schema = schema
|
|
110
110
|
|
|
111
|
+
# https://github.com/eakmanrq/sqlframe/issues/262
|
|
112
|
+
@property
|
|
113
|
+
def execution_dialect_name(self) -> str:
|
|
114
|
+
return self.execution_dialect.__class__.__name__.lower()
|
|
115
|
+
|
|
111
116
|
@property
|
|
112
117
|
def read(self) -> READER:
|
|
113
118
|
return self._reader(self)
|
{sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/bigquery/test_bigquery_session.py
RENAMED
|
@@ -18,3 +18,4 @@ def test_session_from_config():
|
|
|
18
18
|
session = BigQuerySession.builder.config("default_dataset", "sqlframe.db1").getOrCreate()
|
|
19
19
|
columns = session.catalog.get_columns("db1.test_table")
|
|
20
20
|
assert columns == {"cola": exp.DataType.build("BIGINT"), "colb": exp.DataType.build("TEXT")}
|
|
21
|
+
assert session.execution_dialect_name == "bigquery"
|
{sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/databricks/test_databricks_session.py
RENAMED
|
@@ -45,3 +45,4 @@ def test_session_from_config(cleanup_connector: DatabricksConnection):
|
|
|
45
45
|
"cola": exp.DataType.build("INT", dialect=session.output_dialect),
|
|
46
46
|
"colb": exp.DataType.build("STRING", dialect=session.output_dialect),
|
|
47
47
|
}
|
|
48
|
+
assert session.execution_dialect_name == "databricks"
|
|
@@ -11,3 +11,4 @@ def test_session_from_config():
|
|
|
11
11
|
session = DuckDBSession.builder.config("sqlframe.conn", conn).getOrCreate()
|
|
12
12
|
columns = session.catalog.get_columns("test_table")
|
|
13
13
|
assert columns == {"cola": exp.DataType.build("INT"), "colb": exp.DataType.build("TEXT")}
|
|
14
|
+
assert session.execution_dialect_name == "duckdb"
|
{sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/redshift/test_redshift_session.py
RENAMED
|
@@ -45,3 +45,4 @@ def test_session_from_config(cleanup_connector: RedshiftConnection):
|
|
|
45
45
|
"cola": exp.DataType.build("INT", dialect=session.output_dialect),
|
|
46
46
|
"colb": exp.DataType.build("STRING", dialect=session.output_dialect),
|
|
47
47
|
}
|
|
48
|
+
assert session.execution_dialect_name == "redshift"
|
{sqlframe-3.14.2 → sqlframe-3.15.1}/tests/integration/engines/snowflake/test_snowflake_session.py
RENAMED
|
@@ -45,3 +45,4 @@ def test_session_from_config(cleanup_connector: SnowflakeConnection):
|
|
|
45
45
|
"cola": exp.DataType.build("DECIMAL(38, 0)", dialect=session.output_dialect),
|
|
46
46
|
"colb": exp.DataType.build("TEXT", dialect=session.output_dialect),
|
|
47
47
|
}
|
|
48
|
+
assert session.execution_dialect_name == "snowflake"
|
|
@@ -1279,7 +1279,7 @@ def test_month(get_session_and_func):
|
|
|
1279
1279
|
def test_dayofweek(get_session_and_func):
|
|
1280
1280
|
session, dayofweek = get_session_and_func("dayofweek")
|
|
1281
1281
|
df = session.createDataFrame([("2015-04-08",)], ["dt"])
|
|
1282
|
-
assert df.select(dayofweek("dt").alias("day")).first()[0]
|
|
1282
|
+
assert df.select(dayofweek("dt").alias("day")).first()[0] == 4
|
|
1283
1283
|
|
|
1284
1284
|
|
|
1285
1285
|
def test_dayofmonth(get_session_and_func):
|
|
@@ -5114,3 +5114,15 @@ def test_is_array(get_session_and_func, get_func):
|
|
|
5114
5114
|
.collect()
|
|
5115
5115
|
)
|
|
5116
5116
|
assert result == [Row(v1=True, v2=True, v3=False)]
|
|
5117
|
+
|
|
5118
|
+
|
|
5119
|
+
# https://github.com/eakmanrq/sqlframe/issues/265
|
|
5120
|
+
def test_infinite(get_session_and_func):
|
|
5121
|
+
session, lit = get_session_and_func("lit")
|
|
5122
|
+
df = session.createDataFrame(
|
|
5123
|
+
[
|
|
5124
|
+
{"a": float("inf")},
|
|
5125
|
+
{"a": float("-inf")},
|
|
5126
|
+
]
|
|
5127
|
+
)
|
|
5128
|
+
assert df.collect() == [Row(a=float("inf")), Row(a=float("-inf"))]
|
|
@@ -42,6 +42,8 @@ def test_invoke_anonymous(name, func):
|
|
|
42
42
|
),
|
|
43
43
|
(SF.lit({"cola": 1, "colb": "test"}), "MAP('cola', 1, 'colb', 'test')"),
|
|
44
44
|
(SF.lit(Row(cola=1, colb="test")), "STRUCT(1 AS cola, 'test' AS colb)"),
|
|
45
|
+
(SF.lit(float("inf")), "'inf'"),
|
|
46
|
+
(SF.lit(float("-inf")), "'-inf'"),
|
|
45
47
|
],
|
|
46
48
|
)
|
|
47
49
|
def test_lit(expression, expected):
|
|
@@ -3285,8 +3287,8 @@ def test_char(expression, expected):
|
|
|
3285
3287
|
@pytest.mark.parametrize(
|
|
3286
3288
|
"expression, expected",
|
|
3287
3289
|
[
|
|
3288
|
-
(SF.char_length("cola"), "
|
|
3289
|
-
(SF.char_length(SF.col("cola")), "
|
|
3290
|
+
(SF.char_length("cola"), "LENGTH(cola)"),
|
|
3291
|
+
(SF.char_length(SF.col("cola")), "LENGTH(cola)"),
|
|
3290
3292
|
],
|
|
3291
3293
|
)
|
|
3292
3294
|
def test_char_length(expression, expected):
|
|
@@ -3296,8 +3298,8 @@ def test_char_length(expression, expected):
|
|
|
3296
3298
|
@pytest.mark.parametrize(
|
|
3297
3299
|
"expression, expected",
|
|
3298
3300
|
[
|
|
3299
|
-
(SF.character_length("cola"), "
|
|
3300
|
-
(SF.character_length(SF.col("cola")), "
|
|
3301
|
+
(SF.character_length("cola"), "LENGTH(cola)"),
|
|
3302
|
+
(SF.character_length(SF.col("cola")), "LENGTH(cola)"),
|
|
3301
3303
|
],
|
|
3302
3304
|
)
|
|
3303
3305
|
def test_character_length(expression, expected):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif
RENAMED
|
File without changes
|
|
File without changes
|
{sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/images/add_chatgpt_support/openai_full_rewrite.png
RENAMED
|
File without changes
|
{sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png
RENAMED
|
File without changes
|
{sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png
RENAMED
|
File without changes
|
{sqlframe-3.14.2 → sqlframe-3.15.1}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|