Merging upstream version 18.11.6.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
9287f30033
commit
fb9f099c1d
51 changed files with 33974 additions and 32766 deletions
37
CHANGELOG.md
37
CHANGELOG.md
|
@ -1,6 +1,39 @@
|
||||||
Changelog
|
Changelog
|
||||||
=========
|
=========
|
||||||
|
|
||||||
|
## [v18.11.5] - 2023-10-06
|
||||||
|
### :sparkles: New Features
|
||||||
|
- [`ae27e46`](https://github.com/tobymao/sqlglot/commit/ae27e46cf60bbbcb456997afe942a6e8ab9d03c1) - **spark**: from_utc_timestamp -> at time zone *(commit by [@tobymao](https://github.com/tobymao))*
|
||||||
|
|
||||||
|
### :bug: Bug Fixes
|
||||||
|
- [`d9bfaa7`](https://github.com/tobymao/sqlglot/commit/d9bfaa7a5d3a43c5fa1d34dd3b33d1847e0cbb13) - preserve identifiers in postgres merge *(commit by [@tobymao](https://github.com/tobymao))*
|
||||||
|
|
||||||
|
|
||||||
|
## [v18.11.4] - 2023-10-05
|
||||||
|
### :sparkles: New Features
|
||||||
|
- [`3266e51`](https://github.com/tobymao/sqlglot/commit/3266e51fa3f2fcb311bc2fe8b212e423d4253082) - **bigquery**: improve support for CREATE MODEL DDL statement *(PR [#2380](https://github.com/tobymao/sqlglot/pull/2380) by [@GeorgeSittas](https://github.com/GeorgeSittas))*
|
||||||
|
|
||||||
|
### :bug: Bug Fixes
|
||||||
|
- [`dd8334d`](https://github.com/tobymao/sqlglot/commit/dd8334d35d757b7309246ceb4e00f077eb19c9d6) - **parser**: don't consume identifier in unnamed constraint parser *(PR [#2377](https://github.com/tobymao/sqlglot/pull/2377) by [@GeorgeSittas](https://github.com/GeorgeSittas))*
|
||||||
|
- :arrow_lower_right: *fixes issue [#2376](undefined) opened by [@Nitrino](https://github.com/Nitrino)*
|
||||||
|
|
||||||
|
|
||||||
|
## [v18.11.3] - 2023-10-04
|
||||||
|
### :sparkles: New Features
|
||||||
|
- [`347ac51`](https://github.com/tobymao/sqlglot/commit/347ac51da6a553a7904739f0f3ad6b4bb4db01c6) - **redshift**: add support for Redshift's super array index iteration *(PR [#2373](https://github.com/tobymao/sqlglot/pull/2373) by [@GeorgeSittas](https://github.com/GeorgeSittas))*
|
||||||
|
- :arrow_lower_right: *addresses issue [#2372](undefined) opened by [@erdrix](https://github.com/erdrix)*
|
||||||
|
- [`160d841`](https://github.com/tobymao/sqlglot/commit/160d8415d297f998a800c518ce2e85ec41deedae) - **bigquery**: add support for ML.PREDICT function *(PR [#2375](https://github.com/tobymao/sqlglot/pull/2375) by [@GeorgeSittas](https://github.com/GeorgeSittas))*
|
||||||
|
|
||||||
|
### :bug: Bug Fixes
|
||||||
|
- [`6a65a09`](https://github.com/tobymao/sqlglot/commit/6a65a096e69f2e0cee933d0221d0f6a93aeec159) - **postgres**: translate variance_pop to var_pop and variance to var_samp *(PR [#2371](https://github.com/tobymao/sqlglot/pull/2371) by [@cpcloud](https://github.com/cpcloud))*
|
||||||
|
|
||||||
|
|
||||||
|
## [v18.11.2] - 2023-10-03
|
||||||
|
### :bug: Bug Fixes
|
||||||
|
- [`513fe2c`](https://github.com/tobymao/sqlglot/commit/513fe2c5cf06db2a797cdc0422a49a95103c403e) - **parser**: support END keyword when parsing create procedure DDLs *(PR [#2369](https://github.com/tobymao/sqlglot/pull/2369) by [@GeorgeSittas](https://github.com/GeorgeSittas))*
|
||||||
|
- [`1ba5f98`](https://github.com/tobymao/sqlglot/commit/1ba5f98b400483e53d7b1c56a7d5a599f4926234) - distinct from parsing *(commit by [@tobymao](https://github.com/tobymao))*
|
||||||
|
|
||||||
|
|
||||||
## [v18.11.1] - 2023-10-03
|
## [v18.11.1] - 2023-10-03
|
||||||
### :bug: Bug Fixes
|
### :bug: Bug Fixes
|
||||||
- [`f777155`](https://github.com/tobymao/sqlglot/commit/f777155eb6249a51290d38eaa1dfa1f867a38602) - unescape escape sequences on read, re-escape them on generation *(PR [#2367](https://github.com/tobymao/sqlglot/pull/2367) by [@GeorgeSittas](https://github.com/GeorgeSittas))*
|
- [`f777155`](https://github.com/tobymao/sqlglot/commit/f777155eb6249a51290d38eaa1dfa1f867a38602) - unescape escape sequences on read, re-escape them on generation *(PR [#2367](https://github.com/tobymao/sqlglot/pull/2367) by [@GeorgeSittas](https://github.com/GeorgeSittas))*
|
||||||
|
@ -1631,3 +1664,7 @@ Changelog
|
||||||
[v18.10.1]: https://github.com/tobymao/sqlglot/compare/v18.10.0...v18.10.1
|
[v18.10.1]: https://github.com/tobymao/sqlglot/compare/v18.10.0...v18.10.1
|
||||||
[v18.11.0]: https://github.com/tobymao/sqlglot/compare/v18.10.1...v18.11.0
|
[v18.11.0]: https://github.com/tobymao/sqlglot/compare/v18.10.1...v18.11.0
|
||||||
[v18.11.1]: https://github.com/tobymao/sqlglot/compare/v18.11.0...v18.11.1
|
[v18.11.1]: https://github.com/tobymao/sqlglot/compare/v18.11.0...v18.11.1
|
||||||
|
[v18.11.2]: https://github.com/tobymao/sqlglot/compare/v18.11.1...v18.11.2
|
||||||
|
[v18.11.3]: https://github.com/tobymao/sqlglot/compare/v18.11.2...v18.11.3
|
||||||
|
[v18.11.4]: https://github.com/tobymao/sqlglot/compare/v18.11.3...v18.11.4
|
||||||
|
[v18.11.5]: https://github.com/tobymao/sqlglot/compare/v18.11.4...v18.11.5
|
File diff suppressed because one or more lines are too long
|
@ -76,8 +76,8 @@
|
||||||
</span><span id="L-12"><a href="#L-12"><span class="linenos">12</span></a><span class="n">__version_tuple__</span><span class="p">:</span> <span class="n">VERSION_TUPLE</span>
|
</span><span id="L-12"><a href="#L-12"><span class="linenos">12</span></a><span class="n">__version_tuple__</span><span class="p">:</span> <span class="n">VERSION_TUPLE</span>
|
||||||
</span><span id="L-13"><a href="#L-13"><span class="linenos">13</span></a><span class="n">version_tuple</span><span class="p">:</span> <span class="n">VERSION_TUPLE</span>
|
</span><span id="L-13"><a href="#L-13"><span class="linenos">13</span></a><span class="n">version_tuple</span><span class="p">:</span> <span class="n">VERSION_TUPLE</span>
|
||||||
</span><span id="L-14"><a href="#L-14"><span class="linenos">14</span></a>
|
</span><span id="L-14"><a href="#L-14"><span class="linenos">14</span></a>
|
||||||
</span><span id="L-15"><a href="#L-15"><span class="linenos">15</span></a><span class="n">__version__</span> <span class="o">=</span> <span class="n">version</span> <span class="o">=</span> <span class="s1">'18.11.1'</span>
|
</span><span id="L-15"><a href="#L-15"><span class="linenos">15</span></a><span class="n">__version__</span> <span class="o">=</span> <span class="n">version</span> <span class="o">=</span> <span class="s1">'18.11.5'</span>
|
||||||
</span><span id="L-16"><a href="#L-16"><span class="linenos">16</span></a><span class="n">__version_tuple__</span> <span class="o">=</span> <span class="n">version_tuple</span> <span class="o">=</span> <span class="p">(</span><span class="mi">18</span><span class="p">,</span> <span class="mi">11</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
</span><span id="L-16"><a href="#L-16"><span class="linenos">16</span></a><span class="n">__version_tuple__</span> <span class="o">=</span> <span class="n">version_tuple</span> <span class="o">=</span> <span class="p">(</span><span class="mi">18</span><span class="p">,</span> <span class="mi">11</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
|
||||||
</span></pre></div>
|
</span></pre></div>
|
||||||
|
|
||||||
|
|
||||||
|
@ -97,7 +97,7 @@
|
||||||
<section id="version">
|
<section id="version">
|
||||||
<div class="attr variable">
|
<div class="attr variable">
|
||||||
<span class="name">version</span><span class="annotation">: str</span> =
|
<span class="name">version</span><span class="annotation">: str</span> =
|
||||||
<span class="default_value">'18.11.1'</span>
|
<span class="default_value">'18.11.5'</span>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -109,7 +109,7 @@
|
||||||
<section id="version_tuple">
|
<section id="version_tuple">
|
||||||
<div class="attr variable">
|
<div class="attr variable">
|
||||||
<span class="name">version_tuple</span><span class="annotation">: object</span> =
|
<span class="name">version_tuple</span><span class="annotation">: object</span> =
|
||||||
<span class="default_value">(18, 11, 1)</span>
|
<span class="default_value">(18, 11, 5)</span>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -777,7 +777,7 @@
|
||||||
<div class="attr function">
|
<div class="attr function">
|
||||||
|
|
||||||
<span class="def">def</span>
|
<span class="def">def</span>
|
||||||
<span class="name">createDataFrame</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">data</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879721478480'</span><span class="o">></span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879721478480'</span><span class="o">></span><span class="p">],</span> <span class="n">Tuple</span><span class="p">]]</span>,</span><span class="param"> <span class="n">schema</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879721383968'</span><span class="o">></span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">samplingRatio</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">verifySchema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">DataFrame</a></span>:</span></span>
|
<span class="name">createDataFrame</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">data</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712877862496'</span><span class="o">></span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712877862496'</span><span class="o">></span><span class="p">],</span> <span class="n">Tuple</span><span class="p">]]</span>,</span><span class="param"> <span class="n">schema</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712877785152'</span><span class="o">></span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">samplingRatio</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">verifySchema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">DataFrame</a></span>:</span></span>
|
||||||
|
|
||||||
<label class="view-source-button" for="SparkSession.createDataFrame-view-source"><span>View Source</span></label>
|
<label class="view-source-button" for="SparkSession.createDataFrame-view-source"><span>View Source</span></label>
|
||||||
|
|
||||||
|
@ -1829,7 +1829,7 @@
|
||||||
<input id="DataFrame.__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
<input id="DataFrame.__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
||||||
<div class="attr function">
|
<div class="attr function">
|
||||||
|
|
||||||
<span class="name">DataFrame</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="n">spark</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879724199760'</span><span class="o">></span>,</span><span class="param"> <span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#Select">sqlglot.expressions.Select</a></span>,</span><span class="param"> <span class="n">branch_id</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">sequence_id</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">last_op</span><span class="p">:</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">dataframe</span><span class="o">.</span><span class="n">sql</span><span class="o">.</span><span class="n">operations</span><span class="o">.</span><span class="n">Operation</span> <span class="o">=</span> <span class="o"><</span><span class="n">Operation</span><span class="o">.</span><span class="n">INIT</span><span class="p">:</span> <span class="o">-</span><span class="mi">1</span><span class="o">></span>,</span><span class="param"> <span class="n">pending_hints</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">output_expression_container</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879724102464'</span><span class="o">></span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span>)</span>
|
<span class="name">DataFrame</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="n">spark</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712880355936'</span><span class="o">></span>,</span><span class="param"> <span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#Select">sqlglot.expressions.Select</a></span>,</span><span class="param"> <span class="n">branch_id</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">sequence_id</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">last_op</span><span class="p">:</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">dataframe</span><span class="o">.</span><span class="n">sql</span><span class="o">.</span><span class="n">operations</span><span class="o">.</span><span class="n">Operation</span> <span class="o">=</span> <span class="o"><</span><span class="n">Operation</span><span class="o">.</span><span class="n">INIT</span><span class="p">:</span> <span class="o">-</span><span class="mi">1</span><span class="o">></span>,</span><span class="param"> <span class="n">pending_hints</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">output_expression_container</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712880739504'</span><span class="o">></span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span>)</span>
|
||||||
|
|
||||||
<label class="view-source-button" for="DataFrame.__init__-view-source"><span>View Source</span></label>
|
<label class="view-source-button" for="DataFrame.__init__-view-source"><span>View Source</span></label>
|
||||||
|
|
||||||
|
@ -2018,7 +2018,7 @@
|
||||||
<div class="attr function">
|
<div class="attr function">
|
||||||
|
|
||||||
<span class="def">def</span>
|
<span class="def">def</span>
|
||||||
<span class="name">sql</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">dialect</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879720022896'</span><span class="o">></span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">optimize</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span>:</span></span>
|
<span class="name">sql</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">dialect</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712876492592'</span><span class="o">></span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">optimize</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span>:</span></span>
|
||||||
|
|
||||||
<label class="view-source-button" for="DataFrame.sql-view-source"><span>View Source</span></label>
|
<label class="view-source-button" for="DataFrame.sql-view-source"><span>View Source</span></label>
|
||||||
|
|
||||||
|
@ -2773,7 +2773,7 @@ is unlikely to come up.</p>
|
||||||
<div class="decorator">@operation(Operation.FROM)</div>
|
<div class="decorator">@operation(Operation.FROM)</div>
|
||||||
|
|
||||||
<span class="def">def</span>
|
<span class="def">def</span>
|
||||||
<span class="name">fillna</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">value</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879719639920'</span><span class="o">></span>,</span><span class="param"> <span class="n">subset</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o">...</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">DataFrame</a></span>:</span></span>
|
<span class="name">fillna</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">value</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712876223808'</span><span class="o">></span>,</span><span class="param"> <span class="n">subset</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o">...</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">DataFrame</a></span>:</span></span>
|
||||||
|
|
||||||
<label class="view-source-button" for="DataFrame.fillna-view-source"><span>View Source</span></label>
|
<label class="view-source-button" for="DataFrame.fillna-view-source"><span>View Source</span></label>
|
||||||
|
|
||||||
|
@ -2842,7 +2842,7 @@ and check if it matches the type of the value provided. If not then make it null
|
||||||
<div class="decorator">@operation(Operation.FROM)</div>
|
<div class="decorator">@operation(Operation.FROM)</div>
|
||||||
|
|
||||||
<span class="def">def</span>
|
<span class="def">def</span>
|
||||||
<span class="name">replace</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">to_replace</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Dict</span><span class="p">]</span>,</span><span class="param"> <span class="n">value</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">subset</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">Collection</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879720333088'</span><span class="o">></span><span class="p">],</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879720333088'</span><span class="o">></span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">DataFrame</a></span>:</span></span>
|
<span class="name">replace</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">to_replace</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Dict</span><span class="p">]</span>,</span><span class="param"> <span class="n">value</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">subset</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">Collection</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712876804128'</span><span class="o">></span><span class="p">],</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712876804128'</span><span class="o">></span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">DataFrame</a></span>:</span></span>
|
||||||
|
|
||||||
<label class="view-source-button" for="DataFrame.replace-view-source"><span>View Source</span></label>
|
<label class="view-source-button" for="DataFrame.replace-view-source"><span>View Source</span></label>
|
||||||
|
|
||||||
|
@ -3047,7 +3047,7 @@ and check if it matches the type of the value provided. If not then make it null
|
||||||
<div class="decorator">@operation(Operation.NO_OP)</div>
|
<div class="decorator">@operation(Operation.NO_OP)</div>
|
||||||
|
|
||||||
<span class="def">def</span>
|
<span class="def">def</span>
|
||||||
<span class="name">repartition</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">numPartitions</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879720501456'</span><span class="o">></span><span class="p">]</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879720564960'</span><span class="o">></span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">DataFrame</a></span>:</span></span>
|
<span class="name">repartition</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">numPartitions</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712875138096'</span><span class="o">></span><span class="p">]</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712874854672'</span><span class="o">></span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">DataFrame</a></span>:</span></span>
|
||||||
|
|
||||||
<label class="view-source-button" for="DataFrame.repartition-view-source"><span>View Source</span></label>
|
<label class="view-source-button" for="DataFrame.repartition-view-source"><span>View Source</span></label>
|
||||||
|
|
||||||
|
@ -3765,7 +3765,7 @@ and check if it matches the type of the value provided. If not then make it null
|
||||||
<input id="Column.__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
<input id="Column.__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
||||||
<div class="attr function">
|
<div class="attr function">
|
||||||
|
|
||||||
<span class="name">Column</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="n">expression</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879722174736'</span><span class="o">></span><span class="p">,</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span></span>)</span>
|
<span class="name">Column</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="n">expression</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712878583872'</span><span class="o">></span><span class="p">,</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span></span>)</span>
|
||||||
|
|
||||||
<label class="view-source-button" for="Column.__init__-view-source"><span>View Source</span></label>
|
<label class="view-source-button" for="Column.__init__-view-source"><span>View Source</span></label>
|
||||||
|
|
||||||
|
@ -3809,7 +3809,7 @@ and check if it matches the type of the value provided. If not then make it null
|
||||||
<div class="decorator">@classmethod</div>
|
<div class="decorator">@classmethod</div>
|
||||||
|
|
||||||
<span class="def">def</span>
|
<span class="def">def</span>
|
||||||
<span class="name">ensure_col</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">value</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879718606960'</span><span class="o">></span><span class="p">,</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
|
<span class="name">ensure_col</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">value</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712874910496'</span><span class="o">></span><span class="p">,</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
|
||||||
|
|
||||||
<label class="view-source-button" for="Column.ensure_col-view-source"><span>View Source</span></label>
|
<label class="view-source-button" for="Column.ensure_col-view-source"><span>View Source</span></label>
|
||||||
|
|
||||||
|
@ -3830,7 +3830,7 @@ and check if it matches the type of the value provided. If not then make it null
|
||||||
<div class="decorator">@classmethod</div>
|
<div class="decorator">@classmethod</div>
|
||||||
|
|
||||||
<span class="def">def</span>
|
<span class="def">def</span>
|
||||||
<span class="name">ensure_cols</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">args</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879718833936'</span><span class="o">></span><span class="p">,</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n">List</span><span class="p">[</span><span class="n"><a href="#Column">Column</a></span><span class="p">]</span>:</span></span>
|
<span class="name">ensure_cols</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">args</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712875482880'</span><span class="o">></span><span class="p">,</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n">List</span><span class="p">[</span><span class="n"><a href="#Column">Column</a></span><span class="p">]</span>:</span></span>
|
||||||
|
|
||||||
<label class="view-source-button" for="Column.ensure_cols-view-source"><span>View Source</span></label>
|
<label class="view-source-button" for="Column.ensure_cols-view-source"><span>View Source</span></label>
|
||||||
|
|
||||||
|
@ -3851,7 +3851,7 @@ and check if it matches the type of the value provided. If not then make it null
|
||||||
<div class="decorator">@classmethod</div>
|
<div class="decorator">@classmethod</div>
|
||||||
|
|
||||||
<span class="def">def</span>
|
<span class="def">def</span>
|
||||||
<span class="name">invoke_anonymous_function</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">column</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879718802608'</span><span class="o">></span><span class="p">]</span>,</span><span class="param"> <span class="n">func_name</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="o">*</span><span class="n">args</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879718760704'</span><span class="o">></span><span class="p">]</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
|
<span class="name">invoke_anonymous_function</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">column</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712875154096'</span><span class="o">></span><span class="p">]</span>,</span><span class="param"> <span class="n">func_name</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="o">*</span><span class="n">args</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712875032880'</span><span class="o">></span><span class="p">]</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
|
||||||
|
|
||||||
<label class="view-source-button" for="Column.invoke_anonymous_function-view-source"><span>View Source</span></label>
|
<label class="view-source-button" for="Column.invoke_anonymous_function-view-source"><span>View Source</span></label>
|
||||||
|
|
||||||
|
@ -3878,7 +3878,7 @@ and check if it matches the type of the value provided. If not then make it null
|
||||||
<div class="decorator">@classmethod</div>
|
<div class="decorator">@classmethod</div>
|
||||||
|
|
||||||
<span class="def">def</span>
|
<span class="def">def</span>
|
||||||
<span class="name">invoke_expression_over_column</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">column</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879718629728'</span><span class="o">></span><span class="p">]</span>,</span><span class="param"> <span class="n">callable_expression</span><span class="p">:</span> <span class="n">Callable</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
|
<span class="name">invoke_expression_over_column</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">column</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712875027344'</span><span class="o">></span><span class="p">]</span>,</span><span class="param"> <span class="n">callable_expression</span><span class="p">:</span> <span class="n">Callable</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
|
||||||
|
|
||||||
<label class="view-source-button" for="Column.invoke_expression_over_column-view-source"><span>View Source</span></label>
|
<label class="view-source-button" for="Column.invoke_expression_over_column-view-source"><span>View Source</span></label>
|
||||||
|
|
||||||
|
@ -3915,7 +3915,7 @@ and check if it matches the type of the value provided. If not then make it null
|
||||||
<div class="attr function">
|
<div class="attr function">
|
||||||
|
|
||||||
<span class="def">def</span>
|
<span class="def">def</span>
|
||||||
<span class="name">binary_op</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">klass</span><span class="p">:</span> <span class="n">Callable</span>,</span><span class="param"> <span class="n">other</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879718850464'</span><span class="o">></span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
|
<span class="name">binary_op</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">klass</span><span class="p">:</span> <span class="n">Callable</span>,</span><span class="param"> <span class="n">other</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712875319184'</span><span class="o">></span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
|
||||||
|
|
||||||
<label class="view-source-button" for="Column.binary_op-view-source"><span>View Source</span></label>
|
<label class="view-source-button" for="Column.binary_op-view-source"><span>View Source</span></label>
|
||||||
|
|
||||||
|
@ -3936,7 +3936,7 @@ and check if it matches the type of the value provided. If not then make it null
|
||||||
<div class="attr function">
|
<div class="attr function">
|
||||||
|
|
||||||
<span class="def">def</span>
|
<span class="def">def</span>
|
||||||
<span class="name">inverse_binary_op</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">klass</span><span class="p">:</span> <span class="n">Callable</span>,</span><span class="param"> <span class="n">other</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879718860592'</span><span class="o">></span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
|
<span class="name">inverse_binary_op</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">klass</span><span class="p">:</span> <span class="n">Callable</span>,</span><span class="param"> <span class="n">other</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712875330432'</span><span class="o">></span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
|
||||||
|
|
||||||
<label class="view-source-button" for="Column.inverse_binary_op-view-source"><span>View Source</span></label>
|
<label class="view-source-button" for="Column.inverse_binary_op-view-source"><span>View Source</span></label>
|
||||||
|
|
||||||
|
@ -4502,7 +4502,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p>
|
||||||
<div class="attr function">
|
<div class="attr function">
|
||||||
|
|
||||||
<span class="def">def</span>
|
<span class="def">def</span>
|
||||||
<span class="name">isin</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879719076048'</span><span class="o">></span><span class="p">,</span> <span class="n">Iterable</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879719076048'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">):</span></span>
|
<span class="name">isin</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712875557696'</span><span class="o">></span><span class="p">,</span> <span class="n">Iterable</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712875557696'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">):</span></span>
|
||||||
|
|
||||||
<label class="view-source-button" for="Column.isin-view-source"><span>View Source</span></label>
|
<label class="view-source-button" for="Column.isin-view-source"><span>View Source</span></label>
|
||||||
|
|
||||||
|
@ -4523,7 +4523,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p>
|
||||||
<div class="attr function">
|
<div class="attr function">
|
||||||
|
|
||||||
<span class="def">def</span>
|
<span class="def">def</span>
|
||||||
<span class="name">between</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">lowerBound</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879719199664'</span><span class="o">></span>,</span><span class="param"> <span class="n">upperBound</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879719254144'</span><span class="o">></span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
|
<span class="name">between</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">lowerBound</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712875652000'</span><span class="o">></span>,</span><span class="param"> <span class="n">upperBound</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712875706544'</span><span class="o">></span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
|
||||||
|
|
||||||
<label class="view-source-button" for="Column.between-view-source"><span>View Source</span></label>
|
<label class="view-source-button" for="Column.between-view-source"><span>View Source</span></label>
|
||||||
|
|
||||||
|
@ -4558,7 +4558,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p>
|
||||||
<div class="attr function">
|
<div class="attr function">
|
||||||
|
|
||||||
<span class="def">def</span>
|
<span class="def">def</span>
|
||||||
<span class="name">over</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">window</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879719279088'</span><span class="o">></span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
|
<span class="name">over</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">window</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712876108208'</span><span class="o">></span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
|
||||||
|
|
||||||
<label class="view-source-button" for="Column.over-view-source"><span>View Source</span></label>
|
<label class="view-source-button" for="Column.over-view-source"><span>View Source</span></label>
|
||||||
|
|
||||||
|
@ -4803,7 +4803,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p>
|
||||||
<div class="decorator">@classmethod</div>
|
<div class="decorator">@classmethod</div>
|
||||||
|
|
||||||
<span class="def">def</span>
|
<span class="def">def</span>
|
||||||
<span class="name">partitionBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879719449648'</span><span class="o">></span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879719449648'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">WindowSpec</a></span>:</span></span>
|
<span class="name">partitionBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712872747136'</span><span class="o">></span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712872747136'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">WindowSpec</a></span>:</span></span>
|
||||||
|
|
||||||
<label class="view-source-button" for="Window.partitionBy-view-source"><span>View Source</span></label>
|
<label class="view-source-button" for="Window.partitionBy-view-source"><span>View Source</span></label>
|
||||||
|
|
||||||
|
@ -4824,7 +4824,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p>
|
||||||
<div class="decorator">@classmethod</div>
|
<div class="decorator">@classmethod</div>
|
||||||
|
|
||||||
<span class="def">def</span>
|
<span class="def">def</span>
|
||||||
<span class="name">orderBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879719450800'</span><span class="o">></span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879719450800'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">WindowSpec</a></span>:</span></span>
|
<span class="name">orderBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712872888592'</span><span class="o">></span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712872888592'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">WindowSpec</a></span>:</span></span>
|
||||||
|
|
||||||
<label class="view-source-button" for="Window.orderBy-view-source"><span>View Source</span></label>
|
<label class="view-source-button" for="Window.orderBy-view-source"><span>View Source</span></label>
|
||||||
|
|
||||||
|
@ -5064,7 +5064,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p>
|
||||||
<div class="attr function">
|
<div class="attr function">
|
||||||
|
|
||||||
<span class="def">def</span>
|
<span class="def">def</span>
|
||||||
<span class="name">partitionBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879718310320'</span><span class="o">></span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879718310320'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">WindowSpec</a></span>:</span></span>
|
<span class="name">partitionBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712873058720'</span><span class="o">></span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712873058720'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">WindowSpec</a></span>:</span></span>
|
||||||
|
|
||||||
<label class="view-source-button" for="WindowSpec.partitionBy-view-source"><span>View Source</span></label>
|
<label class="view-source-button" for="WindowSpec.partitionBy-view-source"><span>View Source</span></label>
|
||||||
|
|
||||||
|
@ -5091,7 +5091,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p>
|
||||||
<div class="attr function">
|
<div class="attr function">
|
||||||
|
|
||||||
<span class="def">def</span>
|
<span class="def">def</span>
|
||||||
<span class="name">orderBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879717620032'</span><span class="o">></span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'139879717620032'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">WindowSpec</a></span>:</span></span>
|
<span class="name">orderBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712873089328'</span><span class="o">></span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140712873089328'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">WindowSpec</a></span>:</span></span>
|
||||||
|
|
||||||
<label class="view-source-button" for="WindowSpec.orderBy-view-source"><span>View Source</span></label>
|
<label class="view-source-button" for="WindowSpec.orderBy-view-source"><span>View Source</span></label>
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -568,7 +568,7 @@ queries if it would result in multiple table selects in a single query:</p>
|
||||||
<div class="attr variable">
|
<div class="attr variable">
|
||||||
<span class="name">UNMERGABLE_ARGS</span> =
|
<span class="name">UNMERGABLE_ARGS</span> =
|
||||||
<input id="UNMERGABLE_ARGS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
<input id="UNMERGABLE_ARGS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
||||||
<label class="view-value-button pdoc-button" for="UNMERGABLE_ARGS-view-value"></label><span class="default_value">{'having', 'cluster', 'into', 'group', 'locks', 'sample', 'format', 'qualify', 'with', 'distinct', 'connect', 'pivots', 'laterals', 'windows', 'sort', 'limit', 'distribute', 'settings', 'offset', 'kind', 'match'}</span>
|
<label class="view-value-button pdoc-button" for="UNMERGABLE_ARGS-view-value"></label><span class="default_value">{'into', 'group', 'kind', 'settings', 'having', 'sample', 'match', 'windows', 'distinct', 'connect', 'with', 'format', 'limit', 'offset', 'distribute', 'qualify', 'cluster', 'laterals', 'pivots', 'locks', 'sort'}</span>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -2045,7 +2045,7 @@ a b
|
||||||
<div class="attr variable">
|
<div class="attr variable">
|
||||||
<span class="name">DATETRUNC_COMPARISONS</span> =
|
<span class="name">DATETRUNC_COMPARISONS</span> =
|
||||||
<input id="DATETRUNC_COMPARISONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
<input id="DATETRUNC_COMPARISONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
||||||
<label class="view-value-button pdoc-button" for="DATETRUNC_COMPARISONS-view-value"></label><span class="default_value">{<class '<a href="../expressions.html#EQ">sqlglot.expressions.EQ</a>'>, <class '<a href="../expressions.html#GTE">sqlglot.expressions.GTE</a>'>, <class '<a href="../expressions.html#NEQ">sqlglot.expressions.NEQ</a>'>, <class '<a href="../expressions.html#In">sqlglot.expressions.In</a>'>, <class '<a href="../expressions.html#LTE">sqlglot.expressions.LTE</a>'>, <class '<a href="../expressions.html#GT">sqlglot.expressions.GT</a>'>, <class '<a href="../expressions.html#LT">sqlglot.expressions.LT</a>'>}</span>
|
<label class="view-value-button pdoc-button" for="DATETRUNC_COMPARISONS-view-value"></label><span class="default_value">{<class '<a href="../expressions.html#LT">sqlglot.expressions.LT</a>'>, <class '<a href="../expressions.html#NEQ">sqlglot.expressions.NEQ</a>'>, <class '<a href="../expressions.html#EQ">sqlglot.expressions.EQ</a>'>, <class '<a href="../expressions.html#GTE">sqlglot.expressions.GTE</a>'>, <class '<a href="../expressions.html#In">sqlglot.expressions.In</a>'>, <class '<a href="../expressions.html#LTE">sqlglot.expressions.LTE</a>'>, <class '<a href="../expressions.html#GT">sqlglot.expressions.GT</a>'>}</span>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -2081,7 +2081,7 @@ a b
|
||||||
<section id="JOINS">
|
<section id="JOINS">
|
||||||
<div class="attr variable">
|
<div class="attr variable">
|
||||||
<span class="name">JOINS</span> =
|
<span class="name">JOINS</span> =
|
||||||
<span class="default_value">{('', ''), ('RIGHT', ''), ('', 'INNER'), ('RIGHT', 'OUTER')}</span>
|
<span class="default_value">{('', ''), ('', 'INNER'), ('RIGHT', ''), ('RIGHT', 'OUTER')}</span>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
19560
docs/sqlglot/parser.html
19560
docs/sqlglot/parser.html
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load diff
|
@ -656,7 +656,7 @@ def unix_timestamp(
|
||||||
|
|
||||||
def from_utc_timestamp(timestamp: ColumnOrName, tz: ColumnOrName) -> Column:
|
def from_utc_timestamp(timestamp: ColumnOrName, tz: ColumnOrName) -> Column:
|
||||||
tz_column = tz if isinstance(tz, Column) else lit(tz)
|
tz_column = tz if isinstance(tz, Column) else lit(tz)
|
||||||
return Column.invoke_anonymous_function(timestamp, "FROM_UTC_TIMESTAMP", tz_column)
|
return Column.invoke_expression_over_column(timestamp, expression.AtTimeZone, zone=tz_column)
|
||||||
|
|
||||||
|
|
||||||
def to_utc_timestamp(timestamp: ColumnOrName, tz: ColumnOrName) -> Column:
|
def to_utc_timestamp(timestamp: ColumnOrName, tz: ColumnOrName) -> Column:
|
||||||
|
|
|
@ -260,15 +260,16 @@ class BigQuery(Dialect):
|
||||||
"ANY TYPE": TokenType.VARIANT,
|
"ANY TYPE": TokenType.VARIANT,
|
||||||
"BEGIN": TokenType.COMMAND,
|
"BEGIN": TokenType.COMMAND,
|
||||||
"BEGIN TRANSACTION": TokenType.BEGIN,
|
"BEGIN TRANSACTION": TokenType.BEGIN,
|
||||||
"CURRENT_DATETIME": TokenType.CURRENT_DATETIME,
|
|
||||||
"BYTES": TokenType.BINARY,
|
"BYTES": TokenType.BINARY,
|
||||||
|
"CURRENT_DATETIME": TokenType.CURRENT_DATETIME,
|
||||||
"DECLARE": TokenType.COMMAND,
|
"DECLARE": TokenType.COMMAND,
|
||||||
"FLOAT64": TokenType.DOUBLE,
|
"FLOAT64": TokenType.DOUBLE,
|
||||||
|
"FOR SYSTEM_TIME": TokenType.TIMESTAMP_SNAPSHOT,
|
||||||
"INT64": TokenType.BIGINT,
|
"INT64": TokenType.BIGINT,
|
||||||
|
"MODEL": TokenType.MODEL,
|
||||||
|
"NOT DETERMINISTIC": TokenType.VOLATILE,
|
||||||
"RECORD": TokenType.STRUCT,
|
"RECORD": TokenType.STRUCT,
|
||||||
"TIMESTAMP": TokenType.TIMESTAMPTZ,
|
"TIMESTAMP": TokenType.TIMESTAMPTZ,
|
||||||
"NOT DETERMINISTIC": TokenType.VOLATILE,
|
|
||||||
"FOR SYSTEM_TIME": TokenType.TIMESTAMP_SNAPSHOT,
|
|
||||||
}
|
}
|
||||||
KEYWORDS.pop("DIV")
|
KEYWORDS.pop("DIV")
|
||||||
|
|
||||||
|
|
|
@ -205,7 +205,7 @@ def _remove_target_from_merge(expression: exp.Expression) -> exp.Expression:
|
||||||
|
|
||||||
for when in expression.expressions:
|
for when in expression.expressions:
|
||||||
when.transform(
|
when.transform(
|
||||||
lambda node: exp.column(node.name)
|
lambda node: exp.column(node.this)
|
||||||
if isinstance(node, exp.Column) and normalize(node.args.get("table")) in targets
|
if isinstance(node, exp.Column) and normalize(node.args.get("table")) in targets
|
||||||
else node,
|
else node,
|
||||||
copy=False,
|
copy=False,
|
||||||
|
@ -439,6 +439,8 @@ class Postgres(Dialect):
|
||||||
exp.TryCast: no_trycast_sql,
|
exp.TryCast: no_trycast_sql,
|
||||||
exp.TsOrDsToDate: ts_or_ds_to_date_sql("postgres"),
|
exp.TsOrDsToDate: ts_or_ds_to_date_sql("postgres"),
|
||||||
exp.UnixToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')})",
|
exp.UnixToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')})",
|
||||||
|
exp.VariancePop: rename_func("VAR_POP"),
|
||||||
|
exp.Variance: rename_func("VAR_SAMP"),
|
||||||
exp.Xor: bool_xor_sql,
|
exp.Xor: bool_xor_sql,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,6 +31,7 @@ class Redshift(Postgres):
|
||||||
RESOLVES_IDENTIFIERS_AS_UPPERCASE = None
|
RESOLVES_IDENTIFIERS_AS_UPPERCASE = None
|
||||||
|
|
||||||
SUPPORTS_USER_DEFINED_TYPES = False
|
SUPPORTS_USER_DEFINED_TYPES = False
|
||||||
|
INDEX_OFFSET = 0
|
||||||
|
|
||||||
TIME_FORMAT = "'YYYY-MM-DD HH:MI:SS'"
|
TIME_FORMAT = "'YYYY-MM-DD HH:MI:SS'"
|
||||||
TIME_MAPPING = {
|
TIME_MAPPING = {
|
||||||
|
@ -57,6 +58,24 @@ class Redshift(Postgres):
|
||||||
"STRTOL": exp.FromBase.from_arg_list,
|
"STRTOL": exp.FromBase.from_arg_list,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def _parse_table(
|
||||||
|
self,
|
||||||
|
schema: bool = False,
|
||||||
|
joins: bool = False,
|
||||||
|
alias_tokens: t.Optional[t.Collection[TokenType]] = None,
|
||||||
|
parse_bracket: bool = False,
|
||||||
|
) -> t.Optional[exp.Expression]:
|
||||||
|
# Redshift supports UNPIVOTing SUPER objects, e.g. `UNPIVOT foo.obj[0] AS val AT attr`
|
||||||
|
unpivot = self._match(TokenType.UNPIVOT)
|
||||||
|
table = super()._parse_table(
|
||||||
|
schema=schema,
|
||||||
|
joins=joins,
|
||||||
|
alias_tokens=alias_tokens,
|
||||||
|
parse_bracket=parse_bracket,
|
||||||
|
)
|
||||||
|
|
||||||
|
return self.expression(exp.Pivot, this=table, unpivot=True) if unpivot else table
|
||||||
|
|
||||||
def _parse_types(
|
def _parse_types(
|
||||||
self, check_func: bool = False, schema: bool = False, allow_identifiers: bool = True
|
self, check_func: bool = False, schema: bool = False, allow_identifiers: bool = True
|
||||||
) -> t.Optional[exp.Expression]:
|
) -> t.Optional[exp.Expression]:
|
||||||
|
|
|
@ -117,6 +117,10 @@ class Spark2(Hive):
|
||||||
"DAYOFYEAR": lambda args: exp.DayOfYear(this=exp.TsOrDsToDate(this=seq_get(args, 0))),
|
"DAYOFYEAR": lambda args: exp.DayOfYear(this=exp.TsOrDsToDate(this=seq_get(args, 0))),
|
||||||
"DOUBLE": _parse_as_cast("double"),
|
"DOUBLE": _parse_as_cast("double"),
|
||||||
"FLOAT": _parse_as_cast("float"),
|
"FLOAT": _parse_as_cast("float"),
|
||||||
|
"FROM_UTC_TIMESTAMP": lambda args: exp.AtTimeZone(
|
||||||
|
this=exp.Cast(this=seq_get(args, 0), to=exp.DataType.build("timestamp")),
|
||||||
|
zone=seq_get(args, 1),
|
||||||
|
),
|
||||||
"IIF": exp.If.from_arg_list,
|
"IIF": exp.If.from_arg_list,
|
||||||
"INT": _parse_as_cast("int"),
|
"INT": _parse_as_cast("int"),
|
||||||
"MAP_FROM_ARRAYS": exp.Map.from_arg_list,
|
"MAP_FROM_ARRAYS": exp.Map.from_arg_list,
|
||||||
|
|
|
@ -598,6 +598,7 @@ class TSQL(Dialect):
|
||||||
exp.DataType.Type.BOOLEAN: "BIT",
|
exp.DataType.Type.BOOLEAN: "BIT",
|
||||||
exp.DataType.Type.DECIMAL: "NUMERIC",
|
exp.DataType.Type.DECIMAL: "NUMERIC",
|
||||||
exp.DataType.Type.DATETIME: "DATETIME2",
|
exp.DataType.Type.DATETIME: "DATETIME2",
|
||||||
|
exp.DataType.Type.DOUBLE: "FLOAT",
|
||||||
exp.DataType.Type.INT: "INTEGER",
|
exp.DataType.Type.INT: "INTEGER",
|
||||||
exp.DataType.Type.TIMESTAMP: "DATETIME2",
|
exp.DataType.Type.TIMESTAMP: "DATETIME2",
|
||||||
exp.DataType.Type.TIMESTAMPTZ: "DATETIMEOFFSET",
|
exp.DataType.Type.TIMESTAMPTZ: "DATETIMEOFFSET",
|
||||||
|
|
|
@ -2040,8 +2040,12 @@ class FreespaceProperty(Property):
|
||||||
arg_types = {"this": True, "percent": False}
|
arg_types = {"this": True, "percent": False}
|
||||||
|
|
||||||
|
|
||||||
class InputOutputFormat(Expression):
|
class InputModelProperty(Property):
|
||||||
arg_types = {"input_format": False, "output_format": False}
|
arg_types = {"this": True}
|
||||||
|
|
||||||
|
|
||||||
|
class OutputModelProperty(Property):
|
||||||
|
arg_types = {"this": True}
|
||||||
|
|
||||||
|
|
||||||
class IsolatedLoadingProperty(Property):
|
class IsolatedLoadingProperty(Property):
|
||||||
|
@ -2137,6 +2141,10 @@ class PartitionedByProperty(Property):
|
||||||
arg_types = {"this": True}
|
arg_types = {"this": True}
|
||||||
|
|
||||||
|
|
||||||
|
class RemoteWithConnectionModelProperty(Property):
|
||||||
|
arg_types = {"this": True}
|
||||||
|
|
||||||
|
|
||||||
class ReturnsProperty(Property):
|
class ReturnsProperty(Property):
|
||||||
arg_types = {"this": True, "is_table": False, "table": False}
|
arg_types = {"this": True, "is_table": False, "table": False}
|
||||||
|
|
||||||
|
@ -2211,6 +2219,10 @@ class TemporaryProperty(Property):
|
||||||
arg_types = {}
|
arg_types = {}
|
||||||
|
|
||||||
|
|
||||||
|
class TransformModelProperty(Property):
|
||||||
|
arg_types = {"expressions": True}
|
||||||
|
|
||||||
|
|
||||||
class TransientProperty(Property):
|
class TransientProperty(Property):
|
||||||
arg_types = {"this": False}
|
arg_types = {"this": False}
|
||||||
|
|
||||||
|
@ -2293,6 +2305,10 @@ class Qualify(Expression):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class InputOutputFormat(Expression):
|
||||||
|
arg_types = {"input_format": False, "output_format": False}
|
||||||
|
|
||||||
|
|
||||||
# https://www.ibm.com/docs/en/ias?topic=procedures-return-statement-in-sql
|
# https://www.ibm.com/docs/en/ias?topic=procedures-return-statement-in-sql
|
||||||
class Return(Expression):
|
class Return(Expression):
|
||||||
pass
|
pass
|
||||||
|
@ -2465,6 +2481,7 @@ class Table(Expression):
|
||||||
"version": False,
|
"version": False,
|
||||||
"format": False,
|
"format": False,
|
||||||
"pattern": False,
|
"pattern": False,
|
||||||
|
"index": False,
|
||||||
}
|
}
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -3431,7 +3448,7 @@ class Pivot(Expression):
|
||||||
arg_types = {
|
arg_types = {
|
||||||
"this": False,
|
"this": False,
|
||||||
"alias": False,
|
"alias": False,
|
||||||
"expressions": True,
|
"expressions": False,
|
||||||
"field": False,
|
"field": False,
|
||||||
"unpivot": False,
|
"unpivot": False,
|
||||||
"using": False,
|
"using": False,
|
||||||
|
@ -4777,6 +4794,11 @@ class Posexplode(Func):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
# https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-predict#mlpredict_function
|
||||||
|
class Predict(Func):
|
||||||
|
arg_types = {"this": True, "expression": True, "params_struct": False}
|
||||||
|
|
||||||
|
|
||||||
class Pow(Binary, Func):
|
class Pow(Binary, Func):
|
||||||
_sql_names = ["POWER", "POW"]
|
_sql_names = ["POWER", "POW"]
|
||||||
|
|
||||||
|
|
|
@ -73,6 +73,7 @@ class Generator:
|
||||||
exp.ExternalProperty: lambda self, e: "EXTERNAL",
|
exp.ExternalProperty: lambda self, e: "EXTERNAL",
|
||||||
exp.HeapProperty: lambda self, e: "HEAP",
|
exp.HeapProperty: lambda self, e: "HEAP",
|
||||||
exp.InlineLengthColumnConstraint: lambda self, e: f"INLINE LENGTH {self.sql(e, 'this')}",
|
exp.InlineLengthColumnConstraint: lambda self, e: f"INLINE LENGTH {self.sql(e, 'this')}",
|
||||||
|
exp.InputModelProperty: lambda self, e: f"INPUT{self.sql(e, 'this')}",
|
||||||
exp.IntervalSpan: lambda self, e: f"{self.sql(e, 'this')} TO {self.sql(e, 'expression')}",
|
exp.IntervalSpan: lambda self, e: f"{self.sql(e, 'this')} TO {self.sql(e, 'expression')}",
|
||||||
exp.LanguageProperty: lambda self, e: self.naked_property(e),
|
exp.LanguageProperty: lambda self, e: self.naked_property(e),
|
||||||
exp.LocationProperty: lambda self, e: self.naked_property(e),
|
exp.LocationProperty: lambda self, e: self.naked_property(e),
|
||||||
|
@ -84,7 +85,9 @@ class Generator:
|
||||||
exp.OnCommitProperty: lambda self, e: f"ON COMMIT {'DELETE' if e.args.get('delete') else 'PRESERVE'} ROWS",
|
exp.OnCommitProperty: lambda self, e: f"ON COMMIT {'DELETE' if e.args.get('delete') else 'PRESERVE'} ROWS",
|
||||||
exp.OnProperty: lambda self, e: f"ON {self.sql(e, 'this')}",
|
exp.OnProperty: lambda self, e: f"ON {self.sql(e, 'this')}",
|
||||||
exp.OnUpdateColumnConstraint: lambda self, e: f"ON UPDATE {self.sql(e, 'this')}",
|
exp.OnUpdateColumnConstraint: lambda self, e: f"ON UPDATE {self.sql(e, 'this')}",
|
||||||
|
exp.OutputModelProperty: lambda self, e: f"OUTPUT{self.sql(e, 'this')}",
|
||||||
exp.PathColumnConstraint: lambda self, e: f"PATH {self.sql(e, 'this')}",
|
exp.PathColumnConstraint: lambda self, e: f"PATH {self.sql(e, 'this')}",
|
||||||
|
exp.RemoteWithConnectionModelProperty: lambda self, e: f"REMOTE WITH CONNECTION {self.sql(e, 'this')}",
|
||||||
exp.ReturnsProperty: lambda self, e: self.naked_property(e),
|
exp.ReturnsProperty: lambda self, e: self.naked_property(e),
|
||||||
exp.SampleProperty: lambda self, e: f"SAMPLE BY {self.sql(e, 'this')}",
|
exp.SampleProperty: lambda self, e: f"SAMPLE BY {self.sql(e, 'this')}",
|
||||||
exp.SetProperty: lambda self, e: f"{'MULTI' if e.args.get('multi') else ''}SET",
|
exp.SetProperty: lambda self, e: f"{'MULTI' if e.args.get('multi') else ''}SET",
|
||||||
|
@ -94,6 +97,7 @@ class Generator:
|
||||||
exp.TemporaryProperty: lambda self, e: f"TEMPORARY",
|
exp.TemporaryProperty: lambda self, e: f"TEMPORARY",
|
||||||
exp.ToTableProperty: lambda self, e: f"TO {self.sql(e.this)}",
|
exp.ToTableProperty: lambda self, e: f"TO {self.sql(e.this)}",
|
||||||
exp.TransientProperty: lambda self, e: "TRANSIENT",
|
exp.TransientProperty: lambda self, e: "TRANSIENT",
|
||||||
|
exp.TransformModelProperty: lambda self, e: self.func("TRANSFORM", *e.expressions),
|
||||||
exp.TitleColumnConstraint: lambda self, e: f"TITLE {self.sql(e, 'this')}",
|
exp.TitleColumnConstraint: lambda self, e: f"TITLE {self.sql(e, 'this')}",
|
||||||
exp.UppercaseColumnConstraint: lambda self, e: f"UPPERCASE",
|
exp.UppercaseColumnConstraint: lambda self, e: f"UPPERCASE",
|
||||||
exp.VarMap: lambda self, e: self.func("MAP", e.args["keys"], e.args["values"]),
|
exp.VarMap: lambda self, e: self.func("MAP", e.args["keys"], e.args["values"]),
|
||||||
|
@ -278,6 +282,7 @@ class Generator:
|
||||||
exp.FileFormatProperty: exp.Properties.Location.POST_WITH,
|
exp.FileFormatProperty: exp.Properties.Location.POST_WITH,
|
||||||
exp.FreespaceProperty: exp.Properties.Location.POST_NAME,
|
exp.FreespaceProperty: exp.Properties.Location.POST_NAME,
|
||||||
exp.HeapProperty: exp.Properties.Location.POST_WITH,
|
exp.HeapProperty: exp.Properties.Location.POST_WITH,
|
||||||
|
exp.InputModelProperty: exp.Properties.Location.POST_SCHEMA,
|
||||||
exp.IsolatedLoadingProperty: exp.Properties.Location.POST_NAME,
|
exp.IsolatedLoadingProperty: exp.Properties.Location.POST_NAME,
|
||||||
exp.JournalProperty: exp.Properties.Location.POST_NAME,
|
exp.JournalProperty: exp.Properties.Location.POST_NAME,
|
||||||
exp.LanguageProperty: exp.Properties.Location.POST_SCHEMA,
|
exp.LanguageProperty: exp.Properties.Location.POST_SCHEMA,
|
||||||
|
@ -291,9 +296,11 @@ class Generator:
|
||||||
exp.OnProperty: exp.Properties.Location.POST_SCHEMA,
|
exp.OnProperty: exp.Properties.Location.POST_SCHEMA,
|
||||||
exp.OnCommitProperty: exp.Properties.Location.POST_EXPRESSION,
|
exp.OnCommitProperty: exp.Properties.Location.POST_EXPRESSION,
|
||||||
exp.Order: exp.Properties.Location.POST_SCHEMA,
|
exp.Order: exp.Properties.Location.POST_SCHEMA,
|
||||||
|
exp.OutputModelProperty: exp.Properties.Location.POST_SCHEMA,
|
||||||
exp.PartitionedByProperty: exp.Properties.Location.POST_WITH,
|
exp.PartitionedByProperty: exp.Properties.Location.POST_WITH,
|
||||||
exp.PrimaryKey: exp.Properties.Location.POST_SCHEMA,
|
exp.PrimaryKey: exp.Properties.Location.POST_SCHEMA,
|
||||||
exp.Property: exp.Properties.Location.POST_WITH,
|
exp.Property: exp.Properties.Location.POST_WITH,
|
||||||
|
exp.RemoteWithConnectionModelProperty: exp.Properties.Location.POST_SCHEMA,
|
||||||
exp.ReturnsProperty: exp.Properties.Location.POST_SCHEMA,
|
exp.ReturnsProperty: exp.Properties.Location.POST_SCHEMA,
|
||||||
exp.RowFormatProperty: exp.Properties.Location.POST_SCHEMA,
|
exp.RowFormatProperty: exp.Properties.Location.POST_SCHEMA,
|
||||||
exp.RowFormatDelimitedProperty: exp.Properties.Location.POST_SCHEMA,
|
exp.RowFormatDelimitedProperty: exp.Properties.Location.POST_SCHEMA,
|
||||||
|
@ -310,6 +317,7 @@ class Generator:
|
||||||
exp.TemporaryProperty: exp.Properties.Location.POST_CREATE,
|
exp.TemporaryProperty: exp.Properties.Location.POST_CREATE,
|
||||||
exp.ToTableProperty: exp.Properties.Location.POST_SCHEMA,
|
exp.ToTableProperty: exp.Properties.Location.POST_SCHEMA,
|
||||||
exp.TransientProperty: exp.Properties.Location.POST_CREATE,
|
exp.TransientProperty: exp.Properties.Location.POST_CREATE,
|
||||||
|
exp.TransformModelProperty: exp.Properties.Location.POST_SCHEMA,
|
||||||
exp.MergeTreeTTL: exp.Properties.Location.POST_SCHEMA,
|
exp.MergeTreeTTL: exp.Properties.Location.POST_SCHEMA,
|
||||||
exp.VolatileProperty: exp.Properties.Location.POST_CREATE,
|
exp.VolatileProperty: exp.Properties.Location.POST_CREATE,
|
||||||
exp.WithDataProperty: exp.Properties.Location.POST_EXPRESSION,
|
exp.WithDataProperty: exp.Properties.Location.POST_EXPRESSION,
|
||||||
|
@ -1350,13 +1358,17 @@ class Generator:
|
||||||
pivots = f" {pivots}" if pivots else ""
|
pivots = f" {pivots}" if pivots else ""
|
||||||
joins = self.expressions(expression, key="joins", sep="", skip_first=True)
|
joins = self.expressions(expression, key="joins", sep="", skip_first=True)
|
||||||
laterals = self.expressions(expression, key="laterals", sep="")
|
laterals = self.expressions(expression, key="laterals", sep="")
|
||||||
|
|
||||||
file_format = self.sql(expression, "format")
|
file_format = self.sql(expression, "format")
|
||||||
if file_format:
|
if file_format:
|
||||||
pattern = self.sql(expression, "pattern")
|
pattern = self.sql(expression, "pattern")
|
||||||
pattern = f", PATTERN => {pattern}" if pattern else ""
|
pattern = f", PATTERN => {pattern}" if pattern else ""
|
||||||
file_format = f" (FILE_FORMAT => {file_format}{pattern})"
|
file_format = f" (FILE_FORMAT => {file_format}{pattern})"
|
||||||
|
|
||||||
return f"{table}{version}{file_format}{alias}{hints}{pivots}{joins}{laterals}"
|
index = self.sql(expression, "index")
|
||||||
|
index = f" AT {index}" if index else ""
|
||||||
|
|
||||||
|
return f"{table}{version}{file_format}{alias}{index}{hints}{pivots}{joins}{laterals}"
|
||||||
|
|
||||||
def tablesample_sql(
|
def tablesample_sql(
|
||||||
self, expression: exp.TableSample, seed_prefix: str = "SEED", sep=" AS "
|
self, expression: exp.TableSample, seed_prefix: str = "SEED", sep=" AS "
|
||||||
|
@ -1401,6 +1413,9 @@ class Generator:
|
||||||
|
|
||||||
if expression.this:
|
if expression.this:
|
||||||
this = self.sql(expression, "this")
|
this = self.sql(expression, "this")
|
||||||
|
if not expressions:
|
||||||
|
return f"UNPIVOT {this}"
|
||||||
|
|
||||||
on = f"{self.seg('ON')} {expressions}"
|
on = f"{self.seg('ON')} {expressions}"
|
||||||
using = self.expressions(expression, key="using", flat=True)
|
using = self.expressions(expression, key="using", flat=True)
|
||||||
using = f"{self.seg('USING')} {using}" if using else ""
|
using = f"{self.seg('USING')} {using}" if using else ""
|
||||||
|
@ -2880,6 +2895,14 @@ class Generator:
|
||||||
def opclass_sql(self, expression: exp.Opclass) -> str:
|
def opclass_sql(self, expression: exp.Opclass) -> str:
|
||||||
return f"{self.sql(expression, 'this')} {self.sql(expression, 'expression')}"
|
return f"{self.sql(expression, 'this')} {self.sql(expression, 'expression')}"
|
||||||
|
|
||||||
|
def predict_sql(self, expression: exp.Predict) -> str:
|
||||||
|
model = self.sql(expression, "this")
|
||||||
|
model = f"MODEL {model}"
|
||||||
|
table = self.sql(expression, "expression")
|
||||||
|
table = f"TABLE {table}" if not isinstance(expression.expression, exp.Subquery) else table
|
||||||
|
parameters = self.sql(expression, "params_struct")
|
||||||
|
return self.func("PREDICT", model, table, parameters or None)
|
||||||
|
|
||||||
|
|
||||||
def cached_generator(
|
def cached_generator(
|
||||||
cache: t.Optional[t.Dict[int, str]] = None
|
cache: t.Optional[t.Dict[int, str]] = None
|
||||||
|
|
|
@ -2,7 +2,7 @@ from __future__ import annotations
|
||||||
|
|
||||||
import typing as t
|
import typing as t
|
||||||
|
|
||||||
from sqlglot import exp
|
from sqlglot import exp, parse_one
|
||||||
from sqlglot._typing import E
|
from sqlglot._typing import E
|
||||||
from sqlglot.dialects.dialect import Dialect, DialectType
|
from sqlglot.dialects.dialect import Dialect, DialectType
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ def normalize_identifiers(expression, dialect=None):
|
||||||
The transformed expression.
|
The transformed expression.
|
||||||
"""
|
"""
|
||||||
if isinstance(expression, str):
|
if isinstance(expression, str):
|
||||||
expression = exp.to_identifier(expression)
|
expression = parse_one(expression, dialect=dialect, into=exp.Identifier)
|
||||||
|
|
||||||
dialect = Dialect.get_or_raise(dialect)
|
dialect = Dialect.get_or_raise(dialect)
|
||||||
|
|
||||||
|
|
|
@ -236,6 +236,7 @@ class Parser(metaclass=_Parser):
|
||||||
TokenType.SCHEMA,
|
TokenType.SCHEMA,
|
||||||
TokenType.TABLE,
|
TokenType.TABLE,
|
||||||
TokenType.VIEW,
|
TokenType.VIEW,
|
||||||
|
TokenType.MODEL,
|
||||||
TokenType.DICTIONARY,
|
TokenType.DICTIONARY,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -649,6 +650,7 @@ class Parser(metaclass=_Parser):
|
||||||
"IMMUTABLE": lambda self: self.expression(
|
"IMMUTABLE": lambda self: self.expression(
|
||||||
exp.StabilityProperty, this=exp.Literal.string("IMMUTABLE")
|
exp.StabilityProperty, this=exp.Literal.string("IMMUTABLE")
|
||||||
),
|
),
|
||||||
|
"INPUT": lambda self: self.expression(exp.InputModelProperty, this=self._parse_schema()),
|
||||||
"JOURNAL": lambda self, **kwargs: self._parse_journal(**kwargs),
|
"JOURNAL": lambda self, **kwargs: self._parse_journal(**kwargs),
|
||||||
"LANGUAGE": lambda self: self._parse_property_assignment(exp.LanguageProperty),
|
"LANGUAGE": lambda self: self._parse_property_assignment(exp.LanguageProperty),
|
||||||
"LAYOUT": lambda self: self._parse_dict_property(this="LAYOUT"),
|
"LAYOUT": lambda self: self._parse_dict_property(this="LAYOUT"),
|
||||||
|
@ -664,11 +666,13 @@ class Parser(metaclass=_Parser):
|
||||||
"NO": lambda self: self._parse_no_property(),
|
"NO": lambda self: self._parse_no_property(),
|
||||||
"ON": lambda self: self._parse_on_property(),
|
"ON": lambda self: self._parse_on_property(),
|
||||||
"ORDER BY": lambda self: self._parse_order(skip_order_token=True),
|
"ORDER BY": lambda self: self._parse_order(skip_order_token=True),
|
||||||
|
"OUTPUT": lambda self: self.expression(exp.OutputModelProperty, this=self._parse_schema()),
|
||||||
"PARTITION BY": lambda self: self._parse_partitioned_by(),
|
"PARTITION BY": lambda self: self._parse_partitioned_by(),
|
||||||
"PARTITIONED BY": lambda self: self._parse_partitioned_by(),
|
"PARTITIONED BY": lambda self: self._parse_partitioned_by(),
|
||||||
"PARTITIONED_BY": lambda self: self._parse_partitioned_by(),
|
"PARTITIONED_BY": lambda self: self._parse_partitioned_by(),
|
||||||
"PRIMARY KEY": lambda self: self._parse_primary_key(in_props=True),
|
"PRIMARY KEY": lambda self: self._parse_primary_key(in_props=True),
|
||||||
"RANGE": lambda self: self._parse_dict_range(this="RANGE"),
|
"RANGE": lambda self: self._parse_dict_range(this="RANGE"),
|
||||||
|
"REMOTE": lambda self: self._parse_remote_with_connection(),
|
||||||
"RETURNS": lambda self: self._parse_returns(),
|
"RETURNS": lambda self: self._parse_returns(),
|
||||||
"ROW": lambda self: self._parse_row(),
|
"ROW": lambda self: self._parse_row(),
|
||||||
"ROW_FORMAT": lambda self: self._parse_property_assignment(exp.RowFormatProperty),
|
"ROW_FORMAT": lambda self: self._parse_property_assignment(exp.RowFormatProperty),
|
||||||
|
@ -690,6 +694,9 @@ class Parser(metaclass=_Parser):
|
||||||
"TEMPORARY": lambda self: self.expression(exp.TemporaryProperty),
|
"TEMPORARY": lambda self: self.expression(exp.TemporaryProperty),
|
||||||
"TO": lambda self: self._parse_to_table(),
|
"TO": lambda self: self._parse_to_table(),
|
||||||
"TRANSIENT": lambda self: self.expression(exp.TransientProperty),
|
"TRANSIENT": lambda self: self.expression(exp.TransientProperty),
|
||||||
|
"TRANSFORM": lambda self: self.expression(
|
||||||
|
exp.TransformModelProperty, expressions=self._parse_wrapped_csv(self._parse_expression)
|
||||||
|
),
|
||||||
"TTL": lambda self: self._parse_ttl(),
|
"TTL": lambda self: self._parse_ttl(),
|
||||||
"USING": lambda self: self._parse_property_assignment(exp.FileFormatProperty),
|
"USING": lambda self: self._parse_property_assignment(exp.FileFormatProperty),
|
||||||
"VOLATILE": lambda self: self._parse_volatile_property(),
|
"VOLATILE": lambda self: self._parse_volatile_property(),
|
||||||
|
@ -789,6 +796,7 @@ class Parser(metaclass=_Parser):
|
||||||
"MATCH": lambda self: self._parse_match_against(),
|
"MATCH": lambda self: self._parse_match_against(),
|
||||||
"OPENJSON": lambda self: self._parse_open_json(),
|
"OPENJSON": lambda self: self._parse_open_json(),
|
||||||
"POSITION": lambda self: self._parse_position(),
|
"POSITION": lambda self: self._parse_position(),
|
||||||
|
"PREDICT": lambda self: self._parse_predict(),
|
||||||
"SAFE_CAST": lambda self: self._parse_cast(False),
|
"SAFE_CAST": lambda self: self._parse_cast(False),
|
||||||
"STRING_AGG": lambda self: self._parse_string_agg(),
|
"STRING_AGG": lambda self: self._parse_string_agg(),
|
||||||
"SUBSTRING": lambda self: self._parse_substring(),
|
"SUBSTRING": lambda self: self._parse_substring(),
|
||||||
|
@ -1787,6 +1795,12 @@ class Parser(metaclass=_Parser):
|
||||||
exp.CharacterSetProperty, this=self._parse_var_or_string(), default=default
|
exp.CharacterSetProperty, this=self._parse_var_or_string(), default=default
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def _parse_remote_with_connection(self) -> exp.RemoteWithConnectionModelProperty:
|
||||||
|
self._match_text_seq("WITH", "CONNECTION")
|
||||||
|
return self.expression(
|
||||||
|
exp.RemoteWithConnectionModelProperty, this=self._parse_table_parts()
|
||||||
|
)
|
||||||
|
|
||||||
def _parse_returns(self) -> exp.ReturnsProperty:
|
def _parse_returns(self) -> exp.ReturnsProperty:
|
||||||
value: t.Optional[exp.Expression]
|
value: t.Optional[exp.Expression]
|
||||||
is_table = self._match(TokenType.TABLE)
|
is_table = self._match(TokenType.TABLE)
|
||||||
|
@ -2622,7 +2636,9 @@ class Parser(metaclass=_Parser):
|
||||||
|
|
||||||
bracket = parse_bracket and self._parse_bracket(None)
|
bracket = parse_bracket and self._parse_bracket(None)
|
||||||
bracket = self.expression(exp.Table, this=bracket) if bracket else None
|
bracket = self.expression(exp.Table, this=bracket) if bracket else None
|
||||||
this: exp.Expression = bracket or self._parse_table_parts(schema=schema)
|
this = t.cast(
|
||||||
|
exp.Expression, bracket or self._parse_bracket(self._parse_table_parts(schema=schema))
|
||||||
|
)
|
||||||
|
|
||||||
if schema:
|
if schema:
|
||||||
return self._parse_schema(this=this)
|
return self._parse_schema(this=this)
|
||||||
|
@ -2639,6 +2655,9 @@ class Parser(metaclass=_Parser):
|
||||||
if alias:
|
if alias:
|
||||||
this.set("alias", alias)
|
this.set("alias", alias)
|
||||||
|
|
||||||
|
if self._match_text_seq("AT"):
|
||||||
|
this.set("index", self._parse_id_var())
|
||||||
|
|
||||||
this.set("hints", self._parse_table_hints())
|
this.set("hints", self._parse_table_hints())
|
||||||
|
|
||||||
if not this.args.get("pivots"):
|
if not this.args.get("pivots"):
|
||||||
|
@ -3886,7 +3905,9 @@ class Parser(metaclass=_Parser):
|
||||||
def _parse_unnamed_constraint(
|
def _parse_unnamed_constraint(
|
||||||
self, constraints: t.Optional[t.Collection[str]] = None
|
self, constraints: t.Optional[t.Collection[str]] = None
|
||||||
) -> t.Optional[exp.Expression]:
|
) -> t.Optional[exp.Expression]:
|
||||||
if not self._match_texts(constraints or self.CONSTRAINT_PARSERS):
|
if self._match(TokenType.IDENTIFIER, advance=False) or not self._match_texts(
|
||||||
|
constraints or self.CONSTRAINT_PARSERS
|
||||||
|
):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
constraint = self._prev.text.upper()
|
constraint = self._prev.text.upper()
|
||||||
|
@ -4402,6 +4423,20 @@ class Parser(metaclass=_Parser):
|
||||||
exp.StrPosition, this=haystack, substr=needle, position=seq_get(args, 2)
|
exp.StrPosition, this=haystack, substr=needle, position=seq_get(args, 2)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def _parse_predict(self) -> exp.Predict:
|
||||||
|
self._match_text_seq("MODEL")
|
||||||
|
this = self._parse_table()
|
||||||
|
|
||||||
|
self._match(TokenType.COMMA)
|
||||||
|
self._match_text_seq("TABLE")
|
||||||
|
|
||||||
|
return self.expression(
|
||||||
|
exp.Predict,
|
||||||
|
this=this,
|
||||||
|
expression=self._parse_table(),
|
||||||
|
params_struct=self._match(TokenType.COMMA) and self._parse_bitwise(),
|
||||||
|
)
|
||||||
|
|
||||||
def _parse_join_hint(self, func_name: str) -> exp.JoinHint:
|
def _parse_join_hint(self, func_name: str) -> exp.JoinHint:
|
||||||
args = self._parse_csv(self._parse_table)
|
args = self._parse_csv(self._parse_table)
|
||||||
return exp.JoinHint(this=func_name.upper(), expressions=args)
|
return exp.JoinHint(this=func_name.upper(), expressions=args)
|
||||||
|
|
|
@ -263,6 +263,7 @@ class TokenType(AutoName):
|
||||||
MEMBER_OF = auto()
|
MEMBER_OF = auto()
|
||||||
MERGE = auto()
|
MERGE = auto()
|
||||||
MOD = auto()
|
MOD = auto()
|
||||||
|
MODEL = auto()
|
||||||
NATURAL = auto()
|
NATURAL = auto()
|
||||||
NEXT = auto()
|
NEXT = auto()
|
||||||
NOTNULL = auto()
|
NOTNULL = auto()
|
||||||
|
|
|
@ -804,6 +804,63 @@ WHERE
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_models(self):
|
||||||
|
self.validate_identity(
|
||||||
|
"SELECT * FROM ML.PREDICT(MODEL mydataset.mymodel, (SELECT label, column1, column2 FROM mydataset.mytable))"
|
||||||
|
)
|
||||||
|
self.validate_identity(
|
||||||
|
"SELECT label, predicted_label1, predicted_label AS predicted_label2 FROM ML.PREDICT(MODEL mydataset.mymodel2, (SELECT * EXCEPT (predicted_label), predicted_label AS predicted_label1 FROM ML.PREDICT(MODEL mydataset.mymodel1, TABLE mydataset.mytable)))"
|
||||||
|
)
|
||||||
|
self.validate_identity(
|
||||||
|
"SELECT * FROM ML.PREDICT(MODEL mydataset.mymodel, (SELECT custom_label, column1, column2 FROM mydataset.mytable), STRUCT(0.55 AS threshold))"
|
||||||
|
)
|
||||||
|
self.validate_identity(
|
||||||
|
"SELECT * FROM ML.PREDICT(MODEL `my_project`.my_dataset.my_model, (SELECT * FROM input_data))"
|
||||||
|
)
|
||||||
|
self.validate_identity(
|
||||||
|
"SELECT * FROM ML.PREDICT(MODEL my_dataset.vision_model, (SELECT uri, ML.RESIZE_IMAGE(ML.DECODE_IMAGE(data), 480, 480, FALSE) AS input FROM my_dataset.object_table))"
|
||||||
|
)
|
||||||
|
self.validate_identity(
|
||||||
|
"SELECT * FROM ML.PREDICT(MODEL my_dataset.vision_model, (SELECT uri, ML.CONVERT_COLOR_SPACE(ML.RESIZE_IMAGE(ML.DECODE_IMAGE(data), 224, 280, TRUE), 'YIQ') AS input FROM my_dataset.object_table WHERE content_type = 'image/jpeg'))"
|
||||||
|
)
|
||||||
|
self.validate_identity(
|
||||||
|
"CREATE OR REPLACE MODEL foo OPTIONS (model_type='linear_reg') AS SELECT bla FROM foo WHERE cond"
|
||||||
|
)
|
||||||
|
self.validate_identity(
|
||||||
|
"""CREATE OR REPLACE MODEL m
|
||||||
|
TRANSFORM(
|
||||||
|
ML.FEATURE_CROSS(STRUCT(f1, f2)) AS cross_f,
|
||||||
|
ML.QUANTILE_BUCKETIZE(f3) OVER () AS buckets,
|
||||||
|
label_col
|
||||||
|
)
|
||||||
|
OPTIONS (
|
||||||
|
model_type='linear_reg',
|
||||||
|
input_label_cols=['label_col']
|
||||||
|
) AS
|
||||||
|
SELECT
|
||||||
|
*
|
||||||
|
FROM t""",
|
||||||
|
pretty=True,
|
||||||
|
)
|
||||||
|
self.validate_identity(
|
||||||
|
"""CREATE MODEL project_id.mydataset.mymodel
|
||||||
|
INPUT(
|
||||||
|
f1 INT64,
|
||||||
|
f2 FLOAT64,
|
||||||
|
f3 STRING,
|
||||||
|
f4 ARRAY<INT64>
|
||||||
|
)
|
||||||
|
OUTPUT(
|
||||||
|
out1 INT64,
|
||||||
|
out2 INT64
|
||||||
|
)
|
||||||
|
REMOTE WITH CONNECTION myproject.us.test_connection
|
||||||
|
OPTIONS (
|
||||||
|
ENDPOINT='https://us-central1-aiplatform.googleapis.com/v1/projects/myproject/locations/us-central1/endpoints/1234'
|
||||||
|
)""",
|
||||||
|
pretty=True,
|
||||||
|
)
|
||||||
|
|
||||||
def test_merge(self):
|
def test_merge(self):
|
||||||
self.validate_all(
|
self.validate_all(
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -29,6 +29,9 @@ class TestMySQL(Validator):
|
||||||
self.validate_identity("CREATE TABLE foo (a BIGINT, INDEX USING BTREE (b))")
|
self.validate_identity("CREATE TABLE foo (a BIGINT, INDEX USING BTREE (b))")
|
||||||
self.validate_identity("CREATE TABLE foo (a BIGINT, FULLTEXT INDEX (b))")
|
self.validate_identity("CREATE TABLE foo (a BIGINT, FULLTEXT INDEX (b))")
|
||||||
self.validate_identity("CREATE TABLE foo (a BIGINT, SPATIAL INDEX (b))")
|
self.validate_identity("CREATE TABLE foo (a BIGINT, SPATIAL INDEX (b))")
|
||||||
|
self.validate_identity(
|
||||||
|
"CREATE TABLE `oauth_consumer` (`key` VARCHAR(32) NOT NULL, UNIQUE `OAUTH_CONSUMER_KEY` (`key`))"
|
||||||
|
)
|
||||||
self.validate_identity(
|
self.validate_identity(
|
||||||
"CREATE TABLE `x` (`username` VARCHAR(200), PRIMARY KEY (`username`(16)))"
|
"CREATE TABLE `x` (`username` VARCHAR(200), PRIMARY KEY (`username`(16)))"
|
||||||
)
|
)
|
||||||
|
|
|
@ -648,10 +648,10 @@ class TestPostgres(Validator):
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
self.validate_all(
|
self.validate_all(
|
||||||
"merge into x as x using (select id) as y on a = b WHEN matched then update set X.a = y.b",
|
"""merge into x as x using (select id) as y on a = b WHEN matched then update set X."A" = y.b""",
|
||||||
write={
|
write={
|
||||||
"postgres": "MERGE INTO x AS x USING (SELECT id) AS y ON a = b WHEN MATCHED THEN UPDATE SET a = y.b",
|
"postgres": """MERGE INTO x AS x USING (SELECT id) AS y ON a = b WHEN MATCHED THEN UPDATE SET "A" = y.b""",
|
||||||
"snowflake": "MERGE INTO x AS x USING (SELECT id) AS y ON a = b WHEN MATCHED THEN UPDATE SET X.a = y.b",
|
"snowflake": """MERGE INTO x AS x USING (SELECT id) AS y ON a = b WHEN MATCHED THEN UPDATE SET X."A" = y.b""",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
self.validate_all(
|
self.validate_all(
|
||||||
|
@ -724,3 +724,11 @@ class TestPostgres(Validator):
|
||||||
"presto": "CONCAT(CAST(a AS VARCHAR), CAST(b AS VARCHAR))",
|
"presto": "CONCAT(CAST(a AS VARCHAR), CAST(b AS VARCHAR))",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_variance(self):
|
||||||
|
self.validate_all("VAR_SAMP(x)", write={"postgres": "VAR_SAMP(x)"})
|
||||||
|
self.validate_all("VAR_POP(x)", write={"postgres": "VAR_POP(x)"})
|
||||||
|
self.validate_all("VARIANCE(x)", write={"postgres": "VAR_SAMP(x)"})
|
||||||
|
self.validate_all(
|
||||||
|
"VAR_POP(x)", read={"": "VARIANCE_POP(x)"}, write={"postgres": "VAR_POP(x)"}
|
||||||
|
)
|
||||||
|
|
|
@ -352,6 +352,12 @@ class TestPresto(Validator):
|
||||||
"presto": "SELECT CAST('2012-10-31 00:00' AS TIMESTAMP) AT TIME ZONE 'America/Sao_Paulo'",
|
"presto": "SELECT CAST('2012-10-31 00:00' AS TIMESTAMP) AT TIME ZONE 'America/Sao_Paulo'",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
self.validate_all(
|
||||||
|
"CAST('2012-10-31 00:00' AS TIMESTAMP) AT TIME ZONE 'America/Sao_Paulo'",
|
||||||
|
read={
|
||||||
|
"spark": "FROM_UTC_TIMESTAMP('2012-10-31 00:00', 'America/Sao_Paulo')",
|
||||||
|
},
|
||||||
|
)
|
||||||
self.validate_all(
|
self.validate_all(
|
||||||
"CAST(x AS TIMESTAMP)",
|
"CAST(x AS TIMESTAMP)",
|
||||||
write={"presto": "CAST(x AS TIMESTAMP)"},
|
write={"presto": "CAST(x AS TIMESTAMP)"},
|
||||||
|
|
|
@ -273,6 +273,22 @@ class TestRedshift(Validator):
|
||||||
"SELECT DATE_ADD('day', 1, DATE('2023-01-01'))",
|
"SELECT DATE_ADD('day', 1, DATE('2023-01-01'))",
|
||||||
"SELECT DATEADD(day, 1, CAST(DATE('2023-01-01') AS DATE))",
|
"SELECT DATEADD(day, 1, CAST(DATE('2023-01-01') AS DATE))",
|
||||||
)
|
)
|
||||||
|
self.validate_identity(
|
||||||
|
"""SELECT
|
||||||
|
c_name,
|
||||||
|
orders.o_orderkey AS orderkey,
|
||||||
|
index AS orderkey_index
|
||||||
|
FROM customer_orders_lineitem AS c, c.c_orders AS orders AT index
|
||||||
|
ORDER BY
|
||||||
|
orderkey_index""",
|
||||||
|
pretty=True,
|
||||||
|
)
|
||||||
|
self.validate_identity(
|
||||||
|
"SELECT attr AS attr, JSON_TYPEOF(val) AS value_type FROM customer_orders_lineitem AS c, UNPIVOT c.c_orders[0] WHERE c_custkey = 9451"
|
||||||
|
)
|
||||||
|
self.validate_identity(
|
||||||
|
"SELECT attr AS attr, JSON_TYPEOF(val) AS value_type FROM customer_orders_lineitem AS c, UNPIVOT c.c_orders AS val AT attr WHERE c_custkey = 9451"
|
||||||
|
)
|
||||||
|
|
||||||
def test_values(self):
|
def test_values(self):
|
||||||
# Test crazy-sized VALUES clause to UNION ALL conversion to ensure we don't get RecursionError
|
# Test crazy-sized VALUES clause to UNION ALL conversion to ensure we don't get RecursionError
|
||||||
|
|
|
@ -343,7 +343,7 @@ class TestTSQL(Validator):
|
||||||
"CAST(x as DOUBLE)",
|
"CAST(x as DOUBLE)",
|
||||||
write={
|
write={
|
||||||
"spark": "CAST(x AS DOUBLE)",
|
"spark": "CAST(x AS DOUBLE)",
|
||||||
"tsql": "CAST(x AS DOUBLE)",
|
"tsql": "CAST(x AS FLOAT)",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue