sqlframe 1.8.0__tar.gz → 1.10.0__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.
Files changed (211) hide show
  1. {sqlframe-1.8.0 → sqlframe-1.10.0}/PKG-INFO +1 -1
  2. {sqlframe-1.8.0 → sqlframe-1.10.0}/docs/bigquery.md +38 -0
  3. {sqlframe-1.8.0 → sqlframe-1.10.0}/docs/duckdb.md +42 -1
  4. {sqlframe-1.8.0 → sqlframe-1.10.0}/docs/postgres.md +48 -0
  5. {sqlframe-1.8.0 → sqlframe-1.10.0}/docs/snowflake.md +47 -0
  6. sqlframe-1.10.0/docs/spark.md +264 -0
  7. sqlframe-1.10.0/docs/standalone.md +223 -0
  8. {sqlframe-1.8.0 → sqlframe-1.10.0}/setup.py +4 -4
  9. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/_version.py +2 -2
  10. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/base/column.py +1 -1
  11. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/base/function_alternatives.py +96 -0
  12. sqlframe-1.10.0/sqlframe/base/functions.py +5811 -0
  13. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/base/session.py +2 -2
  14. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/base/types.py +1 -1
  15. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/base/util.py +5 -0
  16. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/bigquery/functions.py +4 -0
  17. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/bigquery/functions.pyi +37 -1
  18. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/duckdb/functions.py +3 -0
  19. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/duckdb/functions.pyi +29 -0
  20. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/postgres/functions.py +6 -0
  21. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/postgres/functions.pyi +28 -0
  22. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/snowflake/functions.py +3 -0
  23. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/snowflake/functions.pyi +27 -0
  24. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/spark/functions.pyi +163 -0
  25. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe.egg-info/PKG-INFO +1 -1
  26. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe.egg-info/requires.txt +4 -4
  27. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/conftest.py +1 -1
  28. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/engines/duck/test_duckdb_session.py +1 -1
  29. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/engines/test_int_functions.py +1982 -4
  30. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/unit/standalone/test_column.py +5 -1
  31. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/unit/standalone/test_functions.py +1982 -5
  32. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/unit/standalone/test_session.py +23 -0
  33. sqlframe-1.8.0/docs/spark.md +0 -514
  34. sqlframe-1.8.0/docs/standalone.md +0 -470
  35. sqlframe-1.8.0/sqlframe/base/functions.py +0 -1764
  36. {sqlframe-1.8.0 → sqlframe-1.10.0}/.github/CODEOWNERS +0 -0
  37. {sqlframe-1.8.0 → sqlframe-1.10.0}/.github/workflows/main.workflow.yaml +0 -0
  38. {sqlframe-1.8.0 → sqlframe-1.10.0}/.github/workflows/publish.workflow.yaml +0 -0
  39. {sqlframe-1.8.0 → sqlframe-1.10.0}/.gitignore +0 -0
  40. {sqlframe-1.8.0 → sqlframe-1.10.0}/.pre-commit-config.yaml +0 -0
  41. {sqlframe-1.8.0 → sqlframe-1.10.0}/.readthedocs.yaml +0 -0
  42. {sqlframe-1.8.0 → sqlframe-1.10.0}/LICENSE +0 -0
  43. {sqlframe-1.8.0 → sqlframe-1.10.0}/Makefile +0 -0
  44. {sqlframe-1.8.0 → sqlframe-1.10.0}/README.md +0 -0
  45. {sqlframe-1.8.0 → sqlframe-1.10.0}/blogs/add_chatgpt_support.md +0 -0
  46. {sqlframe-1.8.0 → sqlframe-1.10.0}/blogs/images/add_chatgpt_support/adding_ai_to_meal.jpeg +0 -0
  47. {sqlframe-1.8.0 → sqlframe-1.10.0}/blogs/images/add_chatgpt_support/hype_train.gif +0 -0
  48. {sqlframe-1.8.0 → sqlframe-1.10.0}/blogs/images/add_chatgpt_support/marvin_paranoid_robot.gif +0 -0
  49. {sqlframe-1.8.0 → sqlframe-1.10.0}/blogs/images/add_chatgpt_support/nonsense_sql.png +0 -0
  50. {sqlframe-1.8.0 → sqlframe-1.10.0}/blogs/images/add_chatgpt_support/openai_full_rewrite.png +0 -0
  51. {sqlframe-1.8.0 → sqlframe-1.10.0}/blogs/images/add_chatgpt_support/openai_replacing_cte_names.png +0 -0
  52. {sqlframe-1.8.0 → sqlframe-1.10.0}/blogs/images/add_chatgpt_support/sqlglot_optimized_code.png +0 -0
  53. {sqlframe-1.8.0 → sqlframe-1.10.0}/blogs/images/add_chatgpt_support/sunny_shake_head_no.gif +0 -0
  54. {sqlframe-1.8.0 → sqlframe-1.10.0}/blogs/images/but_wait_theres_more.gif +0 -0
  55. {sqlframe-1.8.0 → sqlframe-1.10.0}/blogs/images/cake.gif +0 -0
  56. {sqlframe-1.8.0 → sqlframe-1.10.0}/blogs/images/you_get_pyspark_api.gif +0 -0
  57. {sqlframe-1.8.0 → sqlframe-1.10.0}/blogs/sqlframe_universal_dataframe_api.md +0 -0
  58. {sqlframe-1.8.0 → sqlframe-1.10.0}/docs/configuration.md +0 -0
  59. {sqlframe-1.8.0 → sqlframe-1.10.0}/docs/docs/bigquery.md +0 -0
  60. {sqlframe-1.8.0 → sqlframe-1.10.0}/docs/docs/duckdb.md +0 -0
  61. {sqlframe-1.8.0 → sqlframe-1.10.0}/docs/docs/images/SF.png +0 -0
  62. {sqlframe-1.8.0 → sqlframe-1.10.0}/docs/docs/images/favicon.png +0 -0
  63. {sqlframe-1.8.0 → sqlframe-1.10.0}/docs/docs/images/favicon_old.png +0 -0
  64. {sqlframe-1.8.0 → sqlframe-1.10.0}/docs/docs/images/sqlframe_diagram.png +0 -0
  65. {sqlframe-1.8.0 → sqlframe-1.10.0}/docs/docs/images/sqlframe_logo.png +0 -0
  66. {sqlframe-1.8.0 → sqlframe-1.10.0}/docs/docs/postgres.md +0 -0
  67. {sqlframe-1.8.0 → sqlframe-1.10.0}/docs/images/SF.png +0 -0
  68. {sqlframe-1.8.0 → sqlframe-1.10.0}/docs/images/favicon.png +0 -0
  69. {sqlframe-1.8.0 → sqlframe-1.10.0}/docs/images/favicon_old.png +0 -0
  70. {sqlframe-1.8.0 → sqlframe-1.10.0}/docs/images/sqlframe_diagram.png +0 -0
  71. {sqlframe-1.8.0 → sqlframe-1.10.0}/docs/images/sqlframe_logo.png +0 -0
  72. {sqlframe-1.8.0 → sqlframe-1.10.0}/docs/index.md +0 -0
  73. {sqlframe-1.8.0 → sqlframe-1.10.0}/docs/requirements.txt +0 -0
  74. {sqlframe-1.8.0 → sqlframe-1.10.0}/docs/stylesheets/extra.css +0 -0
  75. {sqlframe-1.8.0 → sqlframe-1.10.0}/mkdocs.yml +0 -0
  76. {sqlframe-1.8.0 → sqlframe-1.10.0}/pytest.ini +0 -0
  77. {sqlframe-1.8.0 → sqlframe-1.10.0}/renovate.json +0 -0
  78. {sqlframe-1.8.0 → sqlframe-1.10.0}/setup.cfg +0 -0
  79. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/LICENSE +0 -0
  80. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/__init__.py +0 -0
  81. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/base/__init__.py +0 -0
  82. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/base/_typing.py +0 -0
  83. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/base/catalog.py +0 -0
  84. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/base/dataframe.py +0 -0
  85. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/base/decorators.py +0 -0
  86. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/base/exceptions.py +0 -0
  87. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/base/group.py +0 -0
  88. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/base/mixins/__init__.py +0 -0
  89. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/base/mixins/catalog_mixins.py +0 -0
  90. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/base/mixins/dataframe_mixins.py +0 -0
  91. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/base/mixins/readwriter_mixins.py +0 -0
  92. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/base/normalize.py +0 -0
  93. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/base/operations.py +0 -0
  94. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/base/readerwriter.py +0 -0
  95. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/base/transforms.py +0 -0
  96. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/base/window.py +0 -0
  97. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/bigquery/__init__.py +0 -0
  98. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/bigquery/catalog.py +0 -0
  99. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/bigquery/column.py +0 -0
  100. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/bigquery/dataframe.py +0 -0
  101. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/bigquery/group.py +0 -0
  102. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/bigquery/readwriter.py +0 -0
  103. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/bigquery/session.py +0 -0
  104. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/bigquery/types.py +0 -0
  105. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/bigquery/window.py +0 -0
  106. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/duckdb/__init__.py +0 -0
  107. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/duckdb/catalog.py +0 -0
  108. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/duckdb/column.py +0 -0
  109. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/duckdb/dataframe.py +0 -0
  110. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/duckdb/group.py +0 -0
  111. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/duckdb/readwriter.py +0 -0
  112. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/duckdb/session.py +0 -0
  113. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/duckdb/types.py +0 -0
  114. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/duckdb/window.py +0 -0
  115. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/postgres/__init__.py +0 -0
  116. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/postgres/catalog.py +0 -0
  117. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/postgres/column.py +0 -0
  118. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/postgres/dataframe.py +0 -0
  119. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/postgres/group.py +0 -0
  120. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/postgres/readwriter.py +0 -0
  121. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/postgres/session.py +0 -0
  122. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/postgres/types.py +0 -0
  123. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/postgres/window.py +0 -0
  124. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/redshift/__init__.py +0 -0
  125. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/redshift/catalog.py +0 -0
  126. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/redshift/column.py +0 -0
  127. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/redshift/dataframe.py +0 -0
  128. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/redshift/functions.py +0 -0
  129. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/redshift/group.py +0 -0
  130. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/redshift/readwriter.py +0 -0
  131. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/redshift/session.py +0 -0
  132. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/redshift/types.py +0 -0
  133. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/redshift/window.py +0 -0
  134. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/snowflake/__init__.py +0 -0
  135. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/snowflake/catalog.py +0 -0
  136. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/snowflake/column.py +0 -0
  137. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/snowflake/dataframe.py +0 -0
  138. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/snowflake/group.py +0 -0
  139. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/snowflake/readwriter.py +0 -0
  140. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/snowflake/session.py +0 -0
  141. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/snowflake/types.py +0 -0
  142. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/snowflake/window.py +0 -0
  143. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/spark/__init__.py +0 -0
  144. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/spark/catalog.py +0 -0
  145. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/spark/column.py +0 -0
  146. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/spark/dataframe.py +0 -0
  147. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/spark/functions.py +0 -0
  148. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/spark/group.py +0 -0
  149. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/spark/readwriter.py +0 -0
  150. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/spark/session.py +0 -0
  151. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/spark/types.py +0 -0
  152. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/spark/window.py +0 -0
  153. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/standalone/__init__.py +0 -0
  154. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/standalone/catalog.py +0 -0
  155. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/standalone/column.py +0 -0
  156. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/standalone/dataframe.py +0 -0
  157. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/standalone/functions.py +0 -0
  158. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/standalone/group.py +0 -0
  159. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/standalone/readwriter.py +0 -0
  160. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/standalone/session.py +0 -0
  161. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/standalone/types.py +0 -0
  162. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe/standalone/window.py +0 -0
  163. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe.egg-info/SOURCES.txt +0 -0
  164. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe.egg-info/dependency_links.txt +0 -0
  165. {sqlframe-1.8.0 → sqlframe-1.10.0}/sqlframe.egg-info/top_level.txt +0 -0
  166. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/__init__.py +0 -0
  167. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/common_fixtures.py +0 -0
  168. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/fixtures/employee.csv +0 -0
  169. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/fixtures/employee.json +0 -0
  170. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/fixtures/employee.parquet +0 -0
  171. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/fixtures/employee_extra_line.csv +0 -0
  172. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/__init__.py +0 -0
  173. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/engines/__init__.py +0 -0
  174. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/engines/bigquery/__init__.py +0 -0
  175. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/engines/bigquery/test_bigquery_catalog.py +0 -0
  176. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/engines/bigquery/test_bigquery_session.py +0 -0
  177. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/engines/duck/__init__.py +0 -0
  178. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/engines/duck/test_duckdb_catalog.py +0 -0
  179. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/engines/duck/test_duckdb_dataframe.py +0 -0
  180. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/engines/duck/test_duckdb_reader.py +0 -0
  181. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/engines/postgres/__init__.py +0 -0
  182. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/engines/postgres/test_postgres_catalog.py +0 -0
  183. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/engines/postgres/test_postgres_dataframe.py +0 -0
  184. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/engines/postgres/test_postgres_session.py +0 -0
  185. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/engines/redshift/__init__.py +0 -0
  186. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/engines/redshift/test_redshift_catalog.py +0 -0
  187. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/engines/redshift/test_redshift_session.py +0 -0
  188. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/engines/snowflake/__init__.py +0 -0
  189. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/engines/snowflake/test_snowflake_catalog.py +0 -0
  190. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/engines/snowflake/test_snowflake_session.py +0 -0
  191. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/engines/spark/__init__.py +0 -0
  192. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/engines/spark/test_spark_catalog.py +0 -0
  193. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/engines/test_engine_dataframe.py +0 -0
  194. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/engines/test_engine_reader.py +0 -0
  195. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/engines/test_engine_session.py +0 -0
  196. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/engines/test_engine_writer.py +0 -0
  197. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/fixtures.py +0 -0
  198. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/test_int_dataframe.py +0 -0
  199. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/test_int_dataframe_stats.py +0 -0
  200. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/test_int_grouped_data.py +0 -0
  201. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/integration/test_int_session.py +0 -0
  202. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/types.py +0 -0
  203. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/unit/__init__.py +0 -0
  204. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/unit/standalone/__init__.py +0 -0
  205. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/unit/standalone/fixtures.py +0 -0
  206. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/unit/standalone/test_dataframe.py +0 -0
  207. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/unit/standalone/test_dataframe_writer.py +0 -0
  208. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/unit/standalone/test_session_case_sensitivity.py +0 -0
  209. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/unit/standalone/test_types.py +0 -0
  210. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/unit/standalone/test_window.py +0 -0
  211. {sqlframe-1.8.0 → sqlframe-1.10.0}/tests/unit/test_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sqlframe
3
- Version: 1.8.0
3
+ Version: 1.10.0
4
4
  Summary: Turning PySpark Into a Universal DataFrame API
5
5
  Home-page: https://github.com/eakmanrq/sqlframe
6
6
  Author: Ryan Eakman
@@ -61,6 +61,22 @@ from sqlframe.bigquery import functions as F
61
61
  from sqlframe.bigquery import BigQueryDataFrame
62
62
  ```
63
63
 
64
+ ## Using BigQuery Unique Functions
65
+
66
+ BigQuery may have a function that isn't represented within the PySpark API.
67
+ If that is the case, you can call it directly using PySpark [call_function](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.call_function.html) function.
68
+
69
+ ```python
70
+ from sqlframe.bigquery import BigQuerySession
71
+ from sqlframe.bigquery import functions as F
72
+
73
+ session = BigQuerySession(default_dataset="sqlframe.db1")
74
+ (
75
+ session.table("bigquery-public-data.samples.natality")
76
+ .select(F.call_function("FARM_FINGERPRINT", F.col("source")).alias("source_hash"))
77
+ .show()
78
+ )
79
+ ```
64
80
 
65
81
  ## Example Usage
66
82
 
@@ -225,6 +241,8 @@ See something that you would like to see supported? [Open an issue](https://gith
225
241
  * [acos](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.acos.html)
226
242
  * [acosh](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.acosh.html)
227
243
  * [add_months](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.add_months.html)
244
+ * [any_value](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.any_value.html)
245
+ * Always ignores nulls
228
246
  * [approxCountDistinct](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.approxCountDistinct.html)
229
247
  * [approx_count_distinct](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.approx_count_distinct.html)
230
248
  * [array](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.array.html)
@@ -254,10 +272,14 @@ See something that you would like to see supported? [Open an issue](https://gith
254
272
  * Symbols are not supported
255
273
  * [bitwiseNOT](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bitwiseNOT.html)
256
274
  * [bitwise_not](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bitwise_not.html)
275
+ * [bool_and](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bool_and.html)
276
+ * [bool_or](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bool_or.html)
257
277
  * [bround](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bround.html)
278
+ * [call_function](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.call_function.html)
258
279
  * [cbrt](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.cbrt.html)
259
280
  * [ceil](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceil.html)
260
281
  * [ceiling](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceiling.html)
282
+ * [char](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.char.html)
261
283
  * [coalesce](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.coalesce.html)
262
284
  * [col](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.col.html)
263
285
  * [collect_list](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.collect_list.html)
@@ -270,14 +292,18 @@ See something that you would like to see supported? [Open an issue](https://gith
270
292
  * [cosh](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.cosh.html)
271
293
  * [cot](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.cot.html)
272
294
  * [count](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.count.html)
295
+ * [count_if](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.count_if.html)
273
296
  * [covar_pop](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.covar_pop.html)
274
297
  * [covar_samp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.covar_samp.html)
275
298
  * [csc](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.csc.html)
276
299
  * [cume_dist](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.cume_dist.html)
277
300
  * [current_date](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.current_date.html)
278
301
  * [current_timestamp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.current_timestamp.html)
302
+ * [current_user](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.current_user.html)
279
303
  * [date_add](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.date_add.html)
304
+ * [dateadd](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.dateadd.html)
280
305
  * [date_diff](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.date_diff.html)
306
+ * [datediff](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.datediff.html)
281
307
  * [date_format](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.date_format.html)
282
308
  * [The format string should be in BigQuery syntax](https://cloud.google.com/bigquery/docs/reference/standard-sql/format-elements)
283
309
  * [date_sub](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.date_sub.html)
@@ -300,6 +326,8 @@ See something that you would like to see supported? [Open an issue](https://gith
300
326
  * Doesn't support exploding maps
301
327
  * [expm1](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.expm1.html)
302
328
  * [expr](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.expr.html)
329
+ * [extract](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.extract.html)
330
+ * Some fields may start from 0 instead of 1 (like `week`). [Extract](https://cloud.google.com/bigquery/docs/reference/standard-sql/timestamp_functions#extract)
303
331
  * [factorial](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.factorial.html)
304
332
  * [floor](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.floor.html)
305
333
  * [format_number](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.format_number.html)
@@ -320,10 +348,13 @@ See something that you would like to see supported? [Open an issue](https://gith
320
348
  * [isnull](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.isnull.html)
321
349
  * [lag](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.lag.html)
322
350
  * [last_day](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.last_day.html)
351
+ * [lcase](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.lcase.html)
323
352
  * [lead](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.lead.html)
324
353
  * [least](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.least.html)
354
+ * [left](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.left.html)
325
355
  * [length](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.length.html)
326
356
  * [lit](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.lit.html)
357
+ * [ln](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ln.html)
327
358
  * [log](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.log.html)
328
359
  * [log10](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.log10.html)
329
360
  * [log1p](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.log1p.html)
@@ -353,6 +384,7 @@ See something that you would like to see supported? [Open an issue](https://gith
353
384
  * Default order of columns are `col`, `pos` instead of `pos`, `col`
354
385
  * [posexplode_outer](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.posexplode_outer.html)
355
386
  * Default order of columns are `col`, `pos` instead of `pos`, `col`
387
+ * [position](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.position.html)
356
388
  * [pow](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.pow.html)
357
389
  * [quarter](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.quarter.html)
358
390
  * [radians](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.radians.html)
@@ -360,11 +392,14 @@ See something that you would like to see supported? [Open an issue](https://gith
360
392
  * [rank](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.rank.html)
361
393
  * [regexp_extract](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_extract.html)
362
394
  * Single capture group is supported
395
+ * [regexp_like](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_like.html)
363
396
  * [regexp_replace](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_replace.html)
364
397
  * [repeat](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.repeat.html)
365
398
  * [reverse](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.reverse.html)
366
399
  * Only works on strings (does not work on arrays)
400
+ * [right](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.right.html)
367
401
  * [rint](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.rint.html)
402
+ * [rlike](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.rlike.html)
368
403
  * [round](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.round.html)
369
404
  * [row_number](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.row_number.html)
370
405
  * [rpad](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.rpad.html)
@@ -372,11 +407,13 @@ See something that you would like to see supported? [Open an issue](https://gith
372
407
  * [sec](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.sec.html)
373
408
  * [second](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.second.html)
374
409
  * [sequence](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.sequence.html)
410
+ * [sha](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.sha.html)
375
411
  * [sha1](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.sha1.html)
376
412
  * [shiftLeft](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.shiftLeft.html)
377
413
  * [shiftRight](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.shiftRight.html)
378
414
  * [shiftleft](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.shiftleft.html)
379
415
  * [shiftright](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.shiftright.html)
416
+ * [sign](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.sign.html)
380
417
  * [signum](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.signum.html)
381
418
  * [sin](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.sin.html)
382
419
  * [sinh](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.sinh.html)
@@ -411,6 +448,7 @@ See something that you would like to see supported? [Open an issue](https://gith
411
448
  * [trunc](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.trunc.html)
412
449
  * Shorthand expressions not supported. Ex: Use `month` instead of `mon`
413
450
  * [typeof](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.typeof.html)
451
+ * [ucase](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ucase.html)
414
452
  * [unbase64](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unbase64.html)
415
453
  * [unhex](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unhex.html)
416
454
  * [unix_timestamp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_timestamp.html)
@@ -48,6 +48,23 @@ from sqlframe.duckdb import functions as F
48
48
  from sqlframe.duckdb import DuckDBDataFrame
49
49
  ```
50
50
 
51
+ ## Using DuckDB Unique Functions
52
+
53
+ DuckDB may have a function that isn't represented within the PySpark API.
54
+ If that is the case, you can call it directly using PySpark [call_function](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.call_function.html) function.
55
+
56
+ ```python
57
+ from sqlframe.duckdb import DuckDBSession
58
+ from sqlframe.duckdb import functions as F
59
+
60
+ session = DuckDBSession()
61
+ (
62
+ session.table("example.table")
63
+ .select(F.call_function("CURRENT_SETTING", F.lit("access_mode")).alias("access_mode_value"))
64
+ .show()
65
+ )
66
+ ```
67
+
51
68
  ## Example Usage
52
69
 
53
70
  ```python
@@ -197,6 +214,8 @@ See something that you would like to see supported? [Open an issue](https://gith
197
214
  * [abs](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.abs.html)
198
215
  * [acos](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.acos.html)
199
216
  * [add_months](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.add_months.html)
217
+ * [any_value](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.any_value.html)
218
+ * Always ignores nulls
200
219
  * [approxCountDistinct](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.approxCountDistinct.html)
201
220
  * [approx_count_distinct](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.approx_count_distinct.html)
202
221
  * [array](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.array.html)
@@ -224,9 +243,13 @@ See something that you would like to see supported? [Open an issue](https://gith
224
243
  * [bit_length](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bit_length.html)
225
244
  * [bitwiseNOT](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bitwiseNOT.html)
226
245
  * [bitwise_not](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bitwise_not.html)
246
+ * [bool_and](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bool_and.html)
247
+ * [bool_or](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bool_or.html)
248
+ * [call_function](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.call_function.html)
227
249
  * [cbrt](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.cbrt.html)
228
250
  * [ceil](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceil.html)
229
251
  * [ceiling](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceiling.html)
252
+ * [char](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.char.html)
230
253
  * [coalesce](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.coalesce.html)
231
254
  * [col](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.col.html)
232
255
  * [collect_list](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.collect_list.html)
@@ -240,14 +263,18 @@ See something that you would like to see supported? [Open an issue](https://gith
240
263
  * [count](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.count.html)
241
264
  * [countDistinct](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.countDistinct.html)
242
265
  * [count_distinct](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.count_distinct.html)
266
+ * [count_if](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.count_if.html)
243
267
  * [covar_pop](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.covar_pop.html)
244
268
  * [covar_samp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.covar_samp.html)
245
269
  * [create_map](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.create_map.html)
246
270
  * [cume_dist](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.cume_dist.html)
247
271
  * [current_date](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.current_date.html)
248
272
  * [current_timestamp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.current_timestamp.html)
273
+ * [current_user](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.current_user.html)
249
274
  * [date_add](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.date_add.html)
275
+ * [dateadd](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.dateadd.html)
250
276
  * [date_diff](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.date_diff.html)
277
+ * [datediff](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.datediff.html)
251
278
  * [date_format](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.date_format.html)
252
279
  * [The format string should be in DuckDB syntax](https://duckdb.org/docs/sql/functions/dateformat.html#format-specifiers)
253
280
  * [date_sub](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.date_sub.html)
@@ -269,6 +296,7 @@ See something that you would like to see supported? [Open an issue](https://gith
269
296
  * [explode](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.explode.html)
270
297
  * [expm1](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.expm1.html)
271
298
  * [expr](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.expr.html)
299
+ * [extract](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.extract.html)
272
300
  * [factorial](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.factorial.html)
273
301
  * [first](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.first.html)
274
302
  * [flatten](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.flatten.html)
@@ -291,11 +319,14 @@ See something that you would like to see supported? [Open an issue](https://gith
291
319
  * [kurtosis](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.kurtosis.html)
292
320
  * [lag](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.lag.html)
293
321
  * [last](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.last.html)
322
+ * [lcase](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.lcase.html)
294
323
  * [lead](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.lead.html)
295
324
  * [least](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.least.html)
325
+ * [left](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.left.html)
296
326
  * [length](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.length.html)
297
327
  * [levenshtein](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.levenshtein.html)
298
328
  * [lit](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.lit.html)
329
+ * [ln](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ln.html)
299
330
  * [locate](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.locate.html)
300
331
  * [log](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.log.html)
301
332
  * [log10](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.log10.html)
@@ -323,18 +354,22 @@ See something that you would like to see supported? [Open an issue](https://gith
323
354
  * [percent_rank](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.percent_rank.html)
324
355
  * [percentile](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.percentile.html)
325
356
  * [percentile_approx](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.percentile_approx.html)
357
+ * [position](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.position.html)
326
358
  * [pow](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.pow.html)
327
359
  * [quarter](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.quarter.html)
328
360
  * [radians](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.radians.html)
329
361
  * [rand](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.rand.html)
330
362
  * [rank](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.rank.html)
331
363
  * [regexp_extract](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_extract.html)
364
+ * [regexp_like](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_like.html)
332
365
  * [regexp_replace](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_replace.html)
333
366
  * Replaces first match only
334
367
  * [repeat](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.repeat.html)
335
368
  * [reverse](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.reverse.html)
336
369
  * Only works on strings (does not work on arrays)
370
+ * [right](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.right.html)
337
371
  * [rint](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.rint.html)
372
+ * [rlike](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.rlike.html)
338
373
  * [round](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.round.html)
339
374
  * [row_number](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.row_number.html)
340
375
  * [rpad](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.rpad.html)
@@ -345,6 +380,7 @@ See something that you would like to see supported? [Open an issue](https://gith
345
380
  * [shiftRight](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.shiftRight.html)
346
381
  * [shiftleft](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.shiftleft.html)
347
382
  * [shiftright](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.shiftright.html)
383
+ * [sign](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.sign.html)
348
384
  * [signum](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.signum.html)
349
385
  * [sin](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.sin.html)
350
386
  * [size](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.size.html)
@@ -370,11 +406,16 @@ See something that you would like to see supported? [Open an issue](https://gith
370
406
  * [to_date](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.to_date.html)
371
407
  * [The format string should be in DuckDB syntax](https://duckdb.org/docs/sql/functions/dateformat.html#format-specifiers)
372
408
  * [to_timestamp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.to_timestamp.html)
373
- * * [The format string should be in DuckDB syntax](https://duckdb.org/docs/sql/functions/dateformat.html#format-specifiers)
409
+ * [The format string should be in DuckDB syntax](https://duckdb.org/docs/sql/functions/dateformat.html#format-specifiers)
410
+ * [to_unix_timestamp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.to_unix_timestamp.html)
411
+ * [The format string should be in DuckDB syntax](https://duckdb.org/docs/sql/functions/dateformat.html#format-specifiers
412
+ * The values must match the format string (null will not be returned if they do not)
374
413
  * [translate](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.translate.html)
375
414
  * [trim](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.trim.html)
376
415
  * [trunc](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.trunc.html)
416
+ * [try_element_at](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.try_element_at.html)
377
417
  * [typeof](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.typeof.html)
418
+ * [ucase](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ucase.html)
378
419
  * [unbase64](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unbase64.html)
379
420
  * [unhex](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unhex.html)
380
421
  * [unix_timestamp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_timestamp.html)
@@ -43,6 +43,31 @@ from sqlframe.postgres import functions as F
43
43
  from sqlframe.postgres import PostgresDataFrame
44
44
  ```
45
45
 
46
+ ## Using Postgres Unique Functions
47
+
48
+ Postgres may have a function that isn't represented within the PySpark API.
49
+ If that is the case, you can call it directly using PySpark [call_function](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.call_function.html) function.
50
+
51
+ ```python
52
+ from psycopg2 import connect
53
+ from sqlframe.postgres import PostgresSession
54
+ from sqlframe.postgres import functions as F
55
+
56
+ conn = connect(
57
+ dbname="postgres",
58
+ user="postgres",
59
+ password="password",
60
+ host="localhost",
61
+ port="5432",
62
+ )
63
+ session = PostgresSession(conn=conn)
64
+ (
65
+ session.table("example.table")
66
+ .select(F.call_function("PG_DATABASE_SIZE", F.lit("some_database")).alias("database_size"))
67
+ .show()
68
+ )
69
+ ```
70
+
46
71
  ## Example Usage
47
72
 
48
73
  ```python
@@ -201,6 +226,8 @@ See something that you would like to see supported? [Open an issue](https://gith
201
226
  * [acos](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.acos.html)
202
227
  * [acosh](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.acosh.html)
203
228
  * [add_months](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.add_months.html)
229
+ * [any_value](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.any_value.html)
230
+ * Returns the max value and ignore nulls is not supported
204
231
  * [array](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.array.html)
205
232
  * [array_contains](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.array_contains.html)
206
233
  * [array_join](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.array_join.html)
@@ -223,9 +250,13 @@ See something that you would like to see supported? [Open an issue](https://gith
223
250
  * [bit_length](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bit_length.html)
224
251
  * [bitwiseNOT](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bitwiseNOT.html)
225
252
  * [bitwise_not](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bitwise_not.html)
253
+ * [bool_and](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bool_and.html)
254
+ * [bool_or](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.bool_or.html)
255
+ * [call_function](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.call_function.html)
226
256
  * [cbrt](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.cbrt.html)
227
257
  * [ceil](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceil.html)
228
258
  * [ceiling](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ceiling.html)
259
+ * [char](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.char.html)
229
260
  * [coalesce](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.coalesce.html)
230
261
  * [col](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.col.html)
231
262
  * [collect_list](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.collect_list.html)
@@ -240,13 +271,17 @@ See something that you would like to see supported? [Open an issue](https://gith
240
271
  * [count](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.count.html)
241
272
  * [countDistinct](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.countDistinct.html)
242
273
  * [count_distinct](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.count_distinct.html)
274
+ * [count_if](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.count_if.html)
243
275
  * [covar_pop](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.covar_pop.html)
244
276
  * [covar_samp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.covar_samp.html)
245
277
  * [cume_dist](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.cume_dist.html)
246
278
  * [current_date](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.current_date.html)
247
279
  * [current_timestamp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.current_timestamp.html)
280
+ * [current_user](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.current_user.html)
248
281
  * [date_add](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.date_add.html)
282
+ * [dateadd](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.dateadd.html)
249
283
  * [date_diff](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.date_diff.html)
284
+ * [datediff](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.datediff.html)
250
285
  * [date_format](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.date_format.html)
251
286
  * [The format string should be in Postgres syntax](https://www.postgresql.org/docs/current/functions-formatting.html#FUNCTIONS-FORMATTING-DATETIME-TABLE)
252
287
  * [date_sub](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.date_sub.html)
@@ -270,6 +305,7 @@ See something that you would like to see supported? [Open an issue](https://gith
270
305
  * Doesn't support exploding maps
271
306
  * [expm1](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.expm1.html)
272
307
  * [expr](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.expr.html)
308
+ * [extract](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.extract.html)
273
309
  * [factorial](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.factorial.html)
274
310
  * [floor](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.floor.html)
275
311
  * [format_number](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.format_number.html)
@@ -284,11 +320,14 @@ See something that you would like to see supported? [Open an issue](https://gith
284
320
  * [isnan](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.isnan.html)
285
321
  * [isnull](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.isnull.html)
286
322
  * [lag](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.lag.html)
323
+ * [lcase](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.lcase.html)
287
324
  * [lead](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.lead.html)
288
325
  * [least](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.least.html)
326
+ * [left](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.left.html)
289
327
  * [length](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.length.html)
290
328
  * [levenshtein](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.levenshtein.html)
291
329
  * [lit](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.lit.html)
330
+ * [ln](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ln.html)
292
331
  * [locate](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.locate.html)
293
332
  * [log](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.log.html)
294
333
  * [log10](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.log10.html)
@@ -312,16 +351,20 @@ See something that you would like to see supported? [Open an issue](https://gith
312
351
  * [overlay](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.overlay.html)
313
352
  * [percent_rank](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.percent_rank.html)
314
353
  * [percentile](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.percentile.html)
354
+ * [position](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.position.html)
315
355
  * [pow](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.pow.html)
316
356
  * [quarter](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.quarter.html)
317
357
  * [radians](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.radians.html)
318
358
  * [rand](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.rand.html)
319
359
  * [rank](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.rank.html)
360
+ * [regexp_like](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_like.html)
320
361
  * [regexp_replace](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.regexp_replace.html)
321
362
  * [repeat](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.repeat.html)
322
363
  * [reverse](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.reverse.html)
323
364
  * Only works on strings (does not work on arrays)
365
+ * [right](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.right.html)
324
366
  * [rint](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.rint.html)
367
+ * [rlike](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.rlike.html)
325
368
  * [round](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.round.html)
326
369
  * [row_number](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.row_number.html)
327
370
  * [rpad](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.rpad.html)
@@ -331,6 +374,7 @@ See something that you would like to see supported? [Open an issue](https://gith
331
374
  * [shiftRight](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.shiftRight.html)
332
375
  * [shiftleft](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.shiftleft.html)
333
376
  * [shiftright](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.shiftright.html)
377
+ * [sign](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.sign.html)
334
378
  * [signum](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.signum.html)
335
379
  * [sin](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.sin.html)
336
380
  * [sinh](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.sinh.html)
@@ -353,11 +397,15 @@ See something that you would like to see supported? [Open an issue](https://gith
353
397
  * [toRadians](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.toRadians.html)
354
398
  * [to_date](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.to_date.html)
355
399
  * [The format string should be in Postgres syntax](https://www.postgresql.org/docs/current/functions-formatting.html#FUNCTIONS-FORMATTING-DATETIME-TABLE)
400
+ * [to_number](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.to_number.html)
356
401
  * [to_timestamp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.to_timestamp.html)
357
402
  * [The format string should be in Postgres syntax](https://www.postgresql.org/docs/current/functions-formatting.html#FUNCTIONS-FORMATTING-DATETIME-TABLE)
358
403
  * [translate](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.translate.html)
359
404
  * [trim](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.trim.html)
360
405
  * [trunc](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.trunc.html)
406
+ * [try_element_at](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.try_element_at.html)
407
+ * Negative index returns null and cannot lookup elements in maps
408
+ * [ucase](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.ucase.html)
361
409
  * [unbase64](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unbase64.html)
362
410
  * [unix_timestamp](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.unix_timestamp.html)
363
411
  * [upper](https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.upper.html)