diff options
Diffstat (limited to 'docs/sqlglot/dialects/bigquery.html')
-rw-r--r-- | docs/sqlglot/dialects/bigquery.html | 1451 |
1 files changed, 726 insertions, 725 deletions
diff --git a/docs/sqlglot/dialects/bigquery.html b/docs/sqlglot/dialects/bigquery.html index 1cdef06..c34fcc2 100644 --- a/docs/sqlglot/dialects/bigquery.html +++ b/docs/sqlglot/dialects/bigquery.html @@ -1081,213 +1081,212 @@ </span><span id="L-705"><a href="#L-705"><span class="linenos">705</span></a> </span><span id="L-706"><a href="#L-706"><span class="linenos">706</span></a> <span class="c1"># from: https://cloud.google.com/bigquery/docs/reference/standard-sql/lexical#reserved_keywords</span> </span><span id="L-707"><a href="#L-707"><span class="linenos">707</span></a> <span class="n">RESERVED_KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-708"><a href="#L-708"><span class="linenos">708</span></a> <span class="o">*</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">RESERVED_KEYWORDS</span><span class="p">,</span> -</span><span id="L-709"><a href="#L-709"><span class="linenos">709</span></a> <span class="s2">"all"</span><span class="p">,</span> -</span><span id="L-710"><a href="#L-710"><span class="linenos">710</span></a> <span class="s2">"and"</span><span class="p">,</span> -</span><span id="L-711"><a href="#L-711"><span class="linenos">711</span></a> <span class="s2">"any"</span><span class="p">,</span> -</span><span id="L-712"><a href="#L-712"><span class="linenos">712</span></a> <span class="s2">"array"</span><span class="p">,</span> -</span><span id="L-713"><a href="#L-713"><span class="linenos">713</span></a> <span class="s2">"as"</span><span class="p">,</span> -</span><span id="L-714"><a href="#L-714"><span class="linenos">714</span></a> <span class="s2">"asc"</span><span class="p">,</span> -</span><span id="L-715"><a href="#L-715"><span class="linenos">715</span></a> <span class="s2">"assert_rows_modified"</span><span class="p">,</span> -</span><span id="L-716"><a href="#L-716"><span class="linenos">716</span></a> <span class="s2">"at"</span><span class="p">,</span> -</span><span id="L-717"><a href="#L-717"><span class="linenos">717</span></a> <span class="s2">"between"</span><span class="p">,</span> -</span><span id="L-718"><a href="#L-718"><span class="linenos">718</span></a> <span class="s2">"by"</span><span class="p">,</span> -</span><span id="L-719"><a href="#L-719"><span class="linenos">719</span></a> <span class="s2">"case"</span><span class="p">,</span> -</span><span id="L-720"><a href="#L-720"><span class="linenos">720</span></a> <span class="s2">"cast"</span><span class="p">,</span> -</span><span id="L-721"><a href="#L-721"><span class="linenos">721</span></a> <span class="s2">"collate"</span><span class="p">,</span> -</span><span id="L-722"><a href="#L-722"><span class="linenos">722</span></a> <span class="s2">"contains"</span><span class="p">,</span> -</span><span id="L-723"><a href="#L-723"><span class="linenos">723</span></a> <span class="s2">"create"</span><span class="p">,</span> -</span><span id="L-724"><a href="#L-724"><span class="linenos">724</span></a> <span class="s2">"cross"</span><span class="p">,</span> -</span><span id="L-725"><a href="#L-725"><span class="linenos">725</span></a> <span class="s2">"cube"</span><span class="p">,</span> -</span><span id="L-726"><a href="#L-726"><span class="linenos">726</span></a> <span class="s2">"current"</span><span class="p">,</span> -</span><span id="L-727"><a href="#L-727"><span class="linenos">727</span></a> <span class="s2">"default"</span><span class="p">,</span> -</span><span id="L-728"><a href="#L-728"><span class="linenos">728</span></a> <span class="s2">"define"</span><span class="p">,</span> -</span><span id="L-729"><a href="#L-729"><span class="linenos">729</span></a> <span class="s2">"desc"</span><span class="p">,</span> -</span><span id="L-730"><a href="#L-730"><span class="linenos">730</span></a> <span class="s2">"distinct"</span><span class="p">,</span> -</span><span id="L-731"><a href="#L-731"><span class="linenos">731</span></a> <span class="s2">"else"</span><span class="p">,</span> -</span><span id="L-732"><a href="#L-732"><span class="linenos">732</span></a> <span class="s2">"end"</span><span class="p">,</span> -</span><span id="L-733"><a href="#L-733"><span class="linenos">733</span></a> <span class="s2">"enum"</span><span class="p">,</span> -</span><span id="L-734"><a href="#L-734"><span class="linenos">734</span></a> <span class="s2">"escape"</span><span class="p">,</span> -</span><span id="L-735"><a href="#L-735"><span class="linenos">735</span></a> <span class="s2">"except"</span><span class="p">,</span> -</span><span id="L-736"><a href="#L-736"><span class="linenos">736</span></a> <span class="s2">"exclude"</span><span class="p">,</span> -</span><span id="L-737"><a href="#L-737"><span class="linenos">737</span></a> <span class="s2">"exists"</span><span class="p">,</span> -</span><span id="L-738"><a href="#L-738"><span class="linenos">738</span></a> <span class="s2">"extract"</span><span class="p">,</span> -</span><span id="L-739"><a href="#L-739"><span class="linenos">739</span></a> <span class="s2">"false"</span><span class="p">,</span> -</span><span id="L-740"><a href="#L-740"><span class="linenos">740</span></a> <span class="s2">"fetch"</span><span class="p">,</span> -</span><span id="L-741"><a href="#L-741"><span class="linenos">741</span></a> <span class="s2">"following"</span><span class="p">,</span> -</span><span id="L-742"><a href="#L-742"><span class="linenos">742</span></a> <span class="s2">"for"</span><span class="p">,</span> -</span><span id="L-743"><a href="#L-743"><span class="linenos">743</span></a> <span class="s2">"from"</span><span class="p">,</span> -</span><span id="L-744"><a href="#L-744"><span class="linenos">744</span></a> <span class="s2">"full"</span><span class="p">,</span> -</span><span id="L-745"><a href="#L-745"><span class="linenos">745</span></a> <span class="s2">"group"</span><span class="p">,</span> -</span><span id="L-746"><a href="#L-746"><span class="linenos">746</span></a> <span class="s2">"grouping"</span><span class="p">,</span> -</span><span id="L-747"><a href="#L-747"><span class="linenos">747</span></a> <span class="s2">"groups"</span><span class="p">,</span> -</span><span id="L-748"><a href="#L-748"><span class="linenos">748</span></a> <span class="s2">"hash"</span><span class="p">,</span> -</span><span id="L-749"><a href="#L-749"><span class="linenos">749</span></a> <span class="s2">"having"</span><span class="p">,</span> -</span><span id="L-750"><a href="#L-750"><span class="linenos">750</span></a> <span class="s2">"if"</span><span class="p">,</span> -</span><span id="L-751"><a href="#L-751"><span class="linenos">751</span></a> <span class="s2">"ignore"</span><span class="p">,</span> -</span><span id="L-752"><a href="#L-752"><span class="linenos">752</span></a> <span class="s2">"in"</span><span class="p">,</span> -</span><span id="L-753"><a href="#L-753"><span class="linenos">753</span></a> <span class="s2">"inner"</span><span class="p">,</span> -</span><span id="L-754"><a href="#L-754"><span class="linenos">754</span></a> <span class="s2">"intersect"</span><span class="p">,</span> -</span><span id="L-755"><a href="#L-755"><span class="linenos">755</span></a> <span class="s2">"interval"</span><span class="p">,</span> -</span><span id="L-756"><a href="#L-756"><span class="linenos">756</span></a> <span class="s2">"into"</span><span class="p">,</span> -</span><span id="L-757"><a href="#L-757"><span class="linenos">757</span></a> <span class="s2">"is"</span><span class="p">,</span> -</span><span id="L-758"><a href="#L-758"><span class="linenos">758</span></a> <span class="s2">"join"</span><span class="p">,</span> -</span><span id="L-759"><a href="#L-759"><span class="linenos">759</span></a> <span class="s2">"lateral"</span><span class="p">,</span> -</span><span id="L-760"><a href="#L-760"><span class="linenos">760</span></a> <span class="s2">"left"</span><span class="p">,</span> -</span><span id="L-761"><a href="#L-761"><span class="linenos">761</span></a> <span class="s2">"like"</span><span class="p">,</span> -</span><span id="L-762"><a href="#L-762"><span class="linenos">762</span></a> <span class="s2">"limit"</span><span class="p">,</span> -</span><span id="L-763"><a href="#L-763"><span class="linenos">763</span></a> <span class="s2">"lookup"</span><span class="p">,</span> -</span><span id="L-764"><a href="#L-764"><span class="linenos">764</span></a> <span class="s2">"merge"</span><span class="p">,</span> -</span><span id="L-765"><a href="#L-765"><span class="linenos">765</span></a> <span class="s2">"natural"</span><span class="p">,</span> -</span><span id="L-766"><a href="#L-766"><span class="linenos">766</span></a> <span class="s2">"new"</span><span class="p">,</span> -</span><span id="L-767"><a href="#L-767"><span class="linenos">767</span></a> <span class="s2">"no"</span><span class="p">,</span> -</span><span id="L-768"><a href="#L-768"><span class="linenos">768</span></a> <span class="s2">"not"</span><span class="p">,</span> -</span><span id="L-769"><a href="#L-769"><span class="linenos">769</span></a> <span class="s2">"null"</span><span class="p">,</span> -</span><span id="L-770"><a href="#L-770"><span class="linenos">770</span></a> <span class="s2">"nulls"</span><span class="p">,</span> -</span><span id="L-771"><a href="#L-771"><span class="linenos">771</span></a> <span class="s2">"of"</span><span class="p">,</span> -</span><span id="L-772"><a href="#L-772"><span class="linenos">772</span></a> <span class="s2">"on"</span><span class="p">,</span> -</span><span id="L-773"><a href="#L-773"><span class="linenos">773</span></a> <span class="s2">"or"</span><span class="p">,</span> -</span><span id="L-774"><a href="#L-774"><span class="linenos">774</span></a> <span class="s2">"order"</span><span class="p">,</span> -</span><span id="L-775"><a href="#L-775"><span class="linenos">775</span></a> <span class="s2">"outer"</span><span class="p">,</span> -</span><span id="L-776"><a href="#L-776"><span class="linenos">776</span></a> <span class="s2">"over"</span><span class="p">,</span> -</span><span id="L-777"><a href="#L-777"><span class="linenos">777</span></a> <span class="s2">"partition"</span><span class="p">,</span> -</span><span id="L-778"><a href="#L-778"><span class="linenos">778</span></a> <span class="s2">"preceding"</span><span class="p">,</span> -</span><span id="L-779"><a href="#L-779"><span class="linenos">779</span></a> <span class="s2">"proto"</span><span class="p">,</span> -</span><span id="L-780"><a href="#L-780"><span class="linenos">780</span></a> <span class="s2">"qualify"</span><span class="p">,</span> -</span><span id="L-781"><a href="#L-781"><span class="linenos">781</span></a> <span class="s2">"range"</span><span class="p">,</span> -</span><span id="L-782"><a href="#L-782"><span class="linenos">782</span></a> <span class="s2">"recursive"</span><span class="p">,</span> -</span><span id="L-783"><a href="#L-783"><span class="linenos">783</span></a> <span class="s2">"respect"</span><span class="p">,</span> -</span><span id="L-784"><a href="#L-784"><span class="linenos">784</span></a> <span class="s2">"right"</span><span class="p">,</span> -</span><span id="L-785"><a href="#L-785"><span class="linenos">785</span></a> <span class="s2">"rollup"</span><span class="p">,</span> -</span><span id="L-786"><a href="#L-786"><span class="linenos">786</span></a> <span class="s2">"rows"</span><span class="p">,</span> -</span><span id="L-787"><a href="#L-787"><span class="linenos">787</span></a> <span class="s2">"select"</span><span class="p">,</span> -</span><span id="L-788"><a href="#L-788"><span class="linenos">788</span></a> <span class="s2">"set"</span><span class="p">,</span> -</span><span id="L-789"><a href="#L-789"><span class="linenos">789</span></a> <span class="s2">"some"</span><span class="p">,</span> -</span><span id="L-790"><a href="#L-790"><span class="linenos">790</span></a> <span class="s2">"struct"</span><span class="p">,</span> -</span><span id="L-791"><a href="#L-791"><span class="linenos">791</span></a> <span class="s2">"tablesample"</span><span class="p">,</span> -</span><span id="L-792"><a href="#L-792"><span class="linenos">792</span></a> <span class="s2">"then"</span><span class="p">,</span> -</span><span id="L-793"><a href="#L-793"><span class="linenos">793</span></a> <span class="s2">"to"</span><span class="p">,</span> -</span><span id="L-794"><a href="#L-794"><span class="linenos">794</span></a> <span class="s2">"treat"</span><span class="p">,</span> -</span><span id="L-795"><a href="#L-795"><span class="linenos">795</span></a> <span class="s2">"true"</span><span class="p">,</span> -</span><span id="L-796"><a href="#L-796"><span class="linenos">796</span></a> <span class="s2">"unbounded"</span><span class="p">,</span> -</span><span id="L-797"><a href="#L-797"><span class="linenos">797</span></a> <span class="s2">"union"</span><span class="p">,</span> -</span><span id="L-798"><a href="#L-798"><span class="linenos">798</span></a> <span class="s2">"unnest"</span><span class="p">,</span> -</span><span id="L-799"><a href="#L-799"><span class="linenos">799</span></a> <span class="s2">"using"</span><span class="p">,</span> -</span><span id="L-800"><a href="#L-800"><span class="linenos">800</span></a> <span class="s2">"when"</span><span class="p">,</span> -</span><span id="L-801"><a href="#L-801"><span class="linenos">801</span></a> <span class="s2">"where"</span><span class="p">,</span> -</span><span id="L-802"><a href="#L-802"><span class="linenos">802</span></a> <span class="s2">"window"</span><span class="p">,</span> -</span><span id="L-803"><a href="#L-803"><span class="linenos">803</span></a> <span class="s2">"with"</span><span class="p">,</span> -</span><span id="L-804"><a href="#L-804"><span class="linenos">804</span></a> <span class="s2">"within"</span><span class="p">,</span> -</span><span id="L-805"><a href="#L-805"><span class="linenos">805</span></a> <span class="p">}</span> -</span><span id="L-806"><a href="#L-806"><span class="linenos">806</span></a> -</span><span id="L-807"><a href="#L-807"><span class="linenos">807</span></a> <span class="k">def</span> <span class="nf">mod_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Mod</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-808"><a href="#L-808"><span class="linenos">808</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> -</span><span id="L-809"><a href="#L-809"><span class="linenos">809</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span> -</span><span id="L-810"><a href="#L-810"><span class="linenos">810</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> -</span><span id="L-811"><a href="#L-811"><span class="linenos">811</span></a> <span class="s2">"MOD"</span><span class="p">,</span> -</span><span id="L-812"><a href="#L-812"><span class="linenos">812</span></a> <span class="n">this</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">)</span> <span class="k">else</span> <span class="n">this</span><span class="p">,</span> -</span><span id="L-813"><a href="#L-813"><span class="linenos">813</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expr</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">)</span> <span class="k">else</span> <span class="n">expr</span><span class="p">,</span> -</span><span id="L-814"><a href="#L-814"><span class="linenos">814</span></a> <span class="p">)</span> -</span><span id="L-815"><a href="#L-815"><span class="linenos">815</span></a> -</span><span id="L-816"><a href="#L-816"><span class="linenos">816</span></a> <span class="k">def</span> <span class="nf">column_parts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-817"><a href="#L-817"><span class="linenos">817</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">meta</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"quoted_column"</span><span class="p">):</span> -</span><span id="L-818"><a href="#L-818"><span class="linenos">818</span></a> <span class="c1"># If a column reference is of the form `dataset.table`.name, we need</span> -</span><span id="L-819"><a href="#L-819"><span class="linenos">819</span></a> <span class="c1"># to preserve the quoted table path, otherwise the reference breaks</span> -</span><span id="L-820"><a href="#L-820"><span class="linenos">820</span></a> <span class="n">table_parts</span> <span class="o">=</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">parts</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span> -</span><span id="L-821"><a href="#L-821"><span class="linenos">821</span></a> <span class="n">table_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">table_parts</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="L-822"><a href="#L-822"><span class="linenos">822</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">table_path</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-823"><a href="#L-823"><span class="linenos">823</span></a> -</span><span id="L-824"><a href="#L-824"><span class="linenos">824</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">column_parts</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-825"><a href="#L-825"><span class="linenos">825</span></a> -</span><span id="L-826"><a href="#L-826"><span class="linenos">826</span></a> <span class="k">def</span> <span class="nf">table_parts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-827"><a href="#L-827"><span class="linenos">827</span></a> <span class="c1"># Depending on the context, `x.y` may not resolve to the same data source as `x`.`y`, so</span> -</span><span id="L-828"><a href="#L-828"><span class="linenos">828</span></a> <span class="c1"># we need to make sure the correct quoting is used in each case.</span> -</span><span id="L-829"><a href="#L-829"><span class="linenos">829</span></a> <span class="c1">#</span> -</span><span id="L-830"><a href="#L-830"><span class="linenos">830</span></a> <span class="c1"># For example, if there is a CTE x that clashes with a schema name, then the former will</span> -</span><span id="L-831"><a href="#L-831"><span class="linenos">831</span></a> <span class="c1"># return the table y in that schema, whereas the latter will return the CTE's y column:</span> -</span><span id="L-832"><a href="#L-832"><span class="linenos">832</span></a> <span class="c1">#</span> -</span><span id="L-833"><a href="#L-833"><span class="linenos">833</span></a> <span class="c1"># - WITH x AS (SELECT [1, 2] AS y) SELECT * FROM x, `x.y` -> cross join</span> -</span><span id="L-834"><a href="#L-834"><span class="linenos">834</span></a> <span class="c1"># - WITH x AS (SELECT [1, 2] AS y) SELECT * FROM x, `x`.`y` -> implicit unnest</span> -</span><span id="L-835"><a href="#L-835"><span class="linenos">835</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">meta</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"quoted_table"</span><span class="p">):</span> -</span><span id="L-836"><a href="#L-836"><span class="linenos">836</span></a> <span class="n">table_parts</span> <span class="o">=</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">parts</span><span class="p">)</span> -</span><span id="L-837"><a href="#L-837"><span class="linenos">837</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">table_parts</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="L-838"><a href="#L-838"><span class="linenos">838</span></a> -</span><span id="L-839"><a href="#L-839"><span class="linenos">839</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">table_parts</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-840"><a href="#L-840"><span class="linenos">840</span></a> -</span><span id="L-841"><a href="#L-841"><span class="linenos">841</span></a> <span class="k">def</span> <span class="nf">timetostr_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-842"><a href="#L-842"><span class="linenos">842</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</span><span class="p">)</span> <span class="k">else</span> <span class="n">expression</span> -</span><span id="L-843"><a href="#L-843"><span class="linenos">843</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"FORMAT_DATE"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">),</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-844"><a href="#L-844"><span class="linenos">844</span></a> -</span><span id="L-845"><a href="#L-845"><span class="linenos">845</span></a> <span class="k">def</span> <span class="nf">eq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-846"><a href="#L-846"><span class="linenos">846</span></a> <span class="c1"># Operands of = cannot be NULL in BigQuery</span> -</span><span id="L-847"><a href="#L-847"><span class="linenos">847</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">left</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">right</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">):</span> -</span><span id="L-848"><a href="#L-848"><span class="linenos">848</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">):</span> -</span><span id="L-849"><a href="#L-849"><span class="linenos">849</span></a> <span class="k">return</span> <span class="s2">"NULL"</span> -</span><span id="L-850"><a href="#L-850"><span class="linenos">850</span></a> -</span><span id="L-851"><a href="#L-851"><span class="linenos">851</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"="</span><span class="p">)</span> -</span><span id="L-852"><a href="#L-852"><span class="linenos">852</span></a> -</span><span id="L-853"><a href="#L-853"><span class="linenos">853</span></a> <span class="k">def</span> <span class="nf">attimezone_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-854"><a href="#L-854"><span class="linenos">854</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">parent</span> -</span><span id="L-855"><a href="#L-855"><span class="linenos">855</span></a> -</span><span id="L-856"><a href="#L-856"><span class="linenos">856</span></a> <span class="c1"># BigQuery allows CAST(.. AS {STRING|TIMESTAMP} [FORMAT <fmt> [AT TIME ZONE <tz>]]).</span> -</span><span id="L-857"><a href="#L-857"><span class="linenos">857</span></a> <span class="c1"># Only the TIMESTAMP one should use the below conversion, when AT TIME ZONE is included.</span> -</span><span id="L-858"><a href="#L-858"><span class="linenos">858</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">parent</span><span class="o">.</span><span class="n">to</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"text"</span><span class="p">):</span> -</span><span id="L-859"><a href="#L-859"><span class="linenos">859</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> -</span><span id="L-860"><a href="#L-860"><span class="linenos">860</span></a> <span class="s2">"TIMESTAMP"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"DATETIME"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"zone"</span><span class="p">))</span> -</span><span id="L-861"><a href="#L-861"><span class="linenos">861</span></a> <span class="p">)</span> -</span><span id="L-862"><a href="#L-862"><span class="linenos">862</span></a> -</span><span id="L-863"><a href="#L-863"><span class="linenos">863</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">attimezone_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-864"><a href="#L-864"><span class="linenos">864</span></a> -</span><span id="L-865"><a href="#L-865"><span class="linenos">865</span></a> <span class="k">def</span> <span class="nf">trycast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-866"><a href="#L-866"><span class="linenos">866</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">safe_prefix</span><span class="o">=</span><span class="s2">"SAFE_"</span><span class="p">)</span> -</span><span id="L-867"><a href="#L-867"><span class="linenos">867</span></a> -</span><span id="L-868"><a href="#L-868"><span class="linenos">868</span></a> <span class="k">def</span> <span class="nf">bracket_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Bracket</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-869"><a href="#L-869"><span class="linenos">869</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> -</span><span id="L-870"><a href="#L-870"><span class="linenos">870</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> -</span><span id="L-871"><a href="#L-871"><span class="linenos">871</span></a> -</span><span id="L-872"><a href="#L-872"><span class="linenos">872</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">and</span> <span class="n">this</span> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">STRUCT</span><span class="p">):</span> -</span><span id="L-873"><a href="#L-873"><span class="linenos">873</span></a> <span class="n">arg</span> <span class="o">=</span> <span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> -</span><span id="L-874"><a href="#L-874"><span class="linenos">874</span></a> <span class="k">if</span> <span class="n">arg</span><span class="o">.</span><span class="n">type</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-875"><a href="#L-875"><span class="linenos">875</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span> -</span><span id="L-876"><a href="#L-876"><span class="linenos">876</span></a> -</span><span id="L-877"><a href="#L-877"><span class="linenos">877</span></a> <span class="n">arg</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> -</span><span id="L-878"><a href="#L-878"><span class="linenos">878</span></a> -</span><span id="L-879"><a href="#L-879"><span class="linenos">879</span></a> <span class="k">if</span> <span class="n">arg</span><span class="o">.</span><span class="n">type</span> <span class="ow">and</span> <span class="n">arg</span><span class="o">.</span><span class="n">type</span><span class="o">.</span><span class="n">this</span> <span class="ow">in</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">TEXT_TYPES</span><span class="p">:</span> -</span><span id="L-880"><a href="#L-880"><span class="linenos">880</span></a> <span class="c1"># BQ doesn't support bracket syntax with string values for structs</span> -</span><span id="L-881"><a href="#L-881"><span class="linenos">881</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">arg</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-882"><a href="#L-882"><span class="linenos">882</span></a> -</span><span id="L-883"><a href="#L-883"><span class="linenos">883</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-884"><a href="#L-884"><span class="linenos">884</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"offset"</span><span class="p">)</span> -</span><span id="L-885"><a href="#L-885"><span class="linenos">885</span></a> -</span><span id="L-886"><a href="#L-886"><span class="linenos">886</span></a> <span class="k">if</span> <span class="n">offset</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> -</span><span id="L-887"><a href="#L-887"><span class="linenos">887</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"OFFSET(</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-888"><a href="#L-888"><span class="linenos">888</span></a> <span class="k">elif</span> <span class="n">offset</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="L-889"><a href="#L-889"><span class="linenos">889</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"ORDINAL(</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-890"><a href="#L-890"><span class="linenos">890</span></a> <span class="k">elif</span> <span class="n">offset</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-891"><a href="#L-891"><span class="linenos">891</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported array offset: </span><span class="si">{</span><span class="n">offset</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-892"><a href="#L-892"><span class="linenos">892</span></a> -</span><span id="L-893"><a href="#L-893"><span class="linenos">893</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"safe"</span><span class="p">):</span> -</span><span id="L-894"><a href="#L-894"><span class="linenos">894</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"SAFE_</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-895"><a href="#L-895"><span class="linenos">895</span></a> -</span><span id="L-896"><a href="#L-896"><span class="linenos">896</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">]"</span> -</span><span id="L-897"><a href="#L-897"><span class="linenos">897</span></a> -</span><span id="L-898"><a href="#L-898"><span class="linenos">898</span></a> <span class="k">def</span> <span class="nf">in_unnest_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-899"><a href="#L-899"><span class="linenos">899</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-900"><a href="#L-900"><span class="linenos">900</span></a> -</span><span id="L-901"><a href="#L-901"><span class="linenos">901</span></a> <span class="k">def</span> <span class="nf">except_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Except</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-902"><a href="#L-902"><span class="linenos">902</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"distinct"</span><span class="p">):</span> -</span><span id="L-903"><a href="#L-903"><span class="linenos">903</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"EXCEPT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> -</span><span id="L-904"><a href="#L-904"><span class="linenos">904</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXCEPT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-905"><a href="#L-905"><span class="linenos">905</span></a> -</span><span id="L-906"><a href="#L-906"><span class="linenos">906</span></a> <span class="k">def</span> <span class="nf">intersect_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Intersect</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-907"><a href="#L-907"><span class="linenos">907</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"distinct"</span><span class="p">):</span> -</span><span id="L-908"><a href="#L-908"><span class="linenos">908</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"INTERSECT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> -</span><span id="L-909"><a href="#L-909"><span class="linenos">909</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"INTERSECT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-910"><a href="#L-910"><span class="linenos">910</span></a> -</span><span id="L-911"><a href="#L-911"><span class="linenos">911</span></a> <span class="k">def</span> <span class="nf">version_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Version</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-912"><a href="#L-912"><span class="linenos">912</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"TIMESTAMP"</span><span class="p">:</span> -</span><span id="L-913"><a href="#L-913"><span class="linenos">913</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="s2">"SYSTEM_TIME"</span><span class="p">)</span> -</span><span id="L-914"><a href="#L-914"><span class="linenos">914</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">version_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-708"><a href="#L-708"><span class="linenos">708</span></a> <span class="s2">"all"</span><span class="p">,</span> +</span><span id="L-709"><a href="#L-709"><span class="linenos">709</span></a> <span class="s2">"and"</span><span class="p">,</span> +</span><span id="L-710"><a href="#L-710"><span class="linenos">710</span></a> <span class="s2">"any"</span><span class="p">,</span> +</span><span id="L-711"><a href="#L-711"><span class="linenos">711</span></a> <span class="s2">"array"</span><span class="p">,</span> +</span><span id="L-712"><a href="#L-712"><span class="linenos">712</span></a> <span class="s2">"as"</span><span class="p">,</span> +</span><span id="L-713"><a href="#L-713"><span class="linenos">713</span></a> <span class="s2">"asc"</span><span class="p">,</span> +</span><span id="L-714"><a href="#L-714"><span class="linenos">714</span></a> <span class="s2">"assert_rows_modified"</span><span class="p">,</span> +</span><span id="L-715"><a href="#L-715"><span class="linenos">715</span></a> <span class="s2">"at"</span><span class="p">,</span> +</span><span id="L-716"><a href="#L-716"><span class="linenos">716</span></a> <span class="s2">"between"</span><span class="p">,</span> +</span><span id="L-717"><a href="#L-717"><span class="linenos">717</span></a> <span class="s2">"by"</span><span class="p">,</span> +</span><span id="L-718"><a href="#L-718"><span class="linenos">718</span></a> <span class="s2">"case"</span><span class="p">,</span> +</span><span id="L-719"><a href="#L-719"><span class="linenos">719</span></a> <span class="s2">"cast"</span><span class="p">,</span> +</span><span id="L-720"><a href="#L-720"><span class="linenos">720</span></a> <span class="s2">"collate"</span><span class="p">,</span> +</span><span id="L-721"><a href="#L-721"><span class="linenos">721</span></a> <span class="s2">"contains"</span><span class="p">,</span> +</span><span id="L-722"><a href="#L-722"><span class="linenos">722</span></a> <span class="s2">"create"</span><span class="p">,</span> +</span><span id="L-723"><a href="#L-723"><span class="linenos">723</span></a> <span class="s2">"cross"</span><span class="p">,</span> +</span><span id="L-724"><a href="#L-724"><span class="linenos">724</span></a> <span class="s2">"cube"</span><span class="p">,</span> +</span><span id="L-725"><a href="#L-725"><span class="linenos">725</span></a> <span class="s2">"current"</span><span class="p">,</span> +</span><span id="L-726"><a href="#L-726"><span class="linenos">726</span></a> <span class="s2">"default"</span><span class="p">,</span> +</span><span id="L-727"><a href="#L-727"><span class="linenos">727</span></a> <span class="s2">"define"</span><span class="p">,</span> +</span><span id="L-728"><a href="#L-728"><span class="linenos">728</span></a> <span class="s2">"desc"</span><span class="p">,</span> +</span><span id="L-729"><a href="#L-729"><span class="linenos">729</span></a> <span class="s2">"distinct"</span><span class="p">,</span> +</span><span id="L-730"><a href="#L-730"><span class="linenos">730</span></a> <span class="s2">"else"</span><span class="p">,</span> +</span><span id="L-731"><a href="#L-731"><span class="linenos">731</span></a> <span class="s2">"end"</span><span class="p">,</span> +</span><span id="L-732"><a href="#L-732"><span class="linenos">732</span></a> <span class="s2">"enum"</span><span class="p">,</span> +</span><span id="L-733"><a href="#L-733"><span class="linenos">733</span></a> <span class="s2">"escape"</span><span class="p">,</span> +</span><span id="L-734"><a href="#L-734"><span class="linenos">734</span></a> <span class="s2">"except"</span><span class="p">,</span> +</span><span id="L-735"><a href="#L-735"><span class="linenos">735</span></a> <span class="s2">"exclude"</span><span class="p">,</span> +</span><span id="L-736"><a href="#L-736"><span class="linenos">736</span></a> <span class="s2">"exists"</span><span class="p">,</span> +</span><span id="L-737"><a href="#L-737"><span class="linenos">737</span></a> <span class="s2">"extract"</span><span class="p">,</span> +</span><span id="L-738"><a href="#L-738"><span class="linenos">738</span></a> <span class="s2">"false"</span><span class="p">,</span> +</span><span id="L-739"><a href="#L-739"><span class="linenos">739</span></a> <span class="s2">"fetch"</span><span class="p">,</span> +</span><span id="L-740"><a href="#L-740"><span class="linenos">740</span></a> <span class="s2">"following"</span><span class="p">,</span> +</span><span id="L-741"><a href="#L-741"><span class="linenos">741</span></a> <span class="s2">"for"</span><span class="p">,</span> +</span><span id="L-742"><a href="#L-742"><span class="linenos">742</span></a> <span class="s2">"from"</span><span class="p">,</span> +</span><span id="L-743"><a href="#L-743"><span class="linenos">743</span></a> <span class="s2">"full"</span><span class="p">,</span> +</span><span id="L-744"><a href="#L-744"><span class="linenos">744</span></a> <span class="s2">"group"</span><span class="p">,</span> +</span><span id="L-745"><a href="#L-745"><span class="linenos">745</span></a> <span class="s2">"grouping"</span><span class="p">,</span> +</span><span id="L-746"><a href="#L-746"><span class="linenos">746</span></a> <span class="s2">"groups"</span><span class="p">,</span> +</span><span id="L-747"><a href="#L-747"><span class="linenos">747</span></a> <span class="s2">"hash"</span><span class="p">,</span> +</span><span id="L-748"><a href="#L-748"><span class="linenos">748</span></a> <span class="s2">"having"</span><span class="p">,</span> +</span><span id="L-749"><a href="#L-749"><span class="linenos">749</span></a> <span class="s2">"if"</span><span class="p">,</span> +</span><span id="L-750"><a href="#L-750"><span class="linenos">750</span></a> <span class="s2">"ignore"</span><span class="p">,</span> +</span><span id="L-751"><a href="#L-751"><span class="linenos">751</span></a> <span class="s2">"in"</span><span class="p">,</span> +</span><span id="L-752"><a href="#L-752"><span class="linenos">752</span></a> <span class="s2">"inner"</span><span class="p">,</span> +</span><span id="L-753"><a href="#L-753"><span class="linenos">753</span></a> <span class="s2">"intersect"</span><span class="p">,</span> +</span><span id="L-754"><a href="#L-754"><span class="linenos">754</span></a> <span class="s2">"interval"</span><span class="p">,</span> +</span><span id="L-755"><a href="#L-755"><span class="linenos">755</span></a> <span class="s2">"into"</span><span class="p">,</span> +</span><span id="L-756"><a href="#L-756"><span class="linenos">756</span></a> <span class="s2">"is"</span><span class="p">,</span> +</span><span id="L-757"><a href="#L-757"><span class="linenos">757</span></a> <span class="s2">"join"</span><span class="p">,</span> +</span><span id="L-758"><a href="#L-758"><span class="linenos">758</span></a> <span class="s2">"lateral"</span><span class="p">,</span> +</span><span id="L-759"><a href="#L-759"><span class="linenos">759</span></a> <span class="s2">"left"</span><span class="p">,</span> +</span><span id="L-760"><a href="#L-760"><span class="linenos">760</span></a> <span class="s2">"like"</span><span class="p">,</span> +</span><span id="L-761"><a href="#L-761"><span class="linenos">761</span></a> <span class="s2">"limit"</span><span class="p">,</span> +</span><span id="L-762"><a href="#L-762"><span class="linenos">762</span></a> <span class="s2">"lookup"</span><span class="p">,</span> +</span><span id="L-763"><a href="#L-763"><span class="linenos">763</span></a> <span class="s2">"merge"</span><span class="p">,</span> +</span><span id="L-764"><a href="#L-764"><span class="linenos">764</span></a> <span class="s2">"natural"</span><span class="p">,</span> +</span><span id="L-765"><a href="#L-765"><span class="linenos">765</span></a> <span class="s2">"new"</span><span class="p">,</span> +</span><span id="L-766"><a href="#L-766"><span class="linenos">766</span></a> <span class="s2">"no"</span><span class="p">,</span> +</span><span id="L-767"><a href="#L-767"><span class="linenos">767</span></a> <span class="s2">"not"</span><span class="p">,</span> +</span><span id="L-768"><a href="#L-768"><span class="linenos">768</span></a> <span class="s2">"null"</span><span class="p">,</span> +</span><span id="L-769"><a href="#L-769"><span class="linenos">769</span></a> <span class="s2">"nulls"</span><span class="p">,</span> +</span><span id="L-770"><a href="#L-770"><span class="linenos">770</span></a> <span class="s2">"of"</span><span class="p">,</span> +</span><span id="L-771"><a href="#L-771"><span class="linenos">771</span></a> <span class="s2">"on"</span><span class="p">,</span> +</span><span id="L-772"><a href="#L-772"><span class="linenos">772</span></a> <span class="s2">"or"</span><span class="p">,</span> +</span><span id="L-773"><a href="#L-773"><span class="linenos">773</span></a> <span class="s2">"order"</span><span class="p">,</span> +</span><span id="L-774"><a href="#L-774"><span class="linenos">774</span></a> <span class="s2">"outer"</span><span class="p">,</span> +</span><span id="L-775"><a href="#L-775"><span class="linenos">775</span></a> <span class="s2">"over"</span><span class="p">,</span> +</span><span id="L-776"><a href="#L-776"><span class="linenos">776</span></a> <span class="s2">"partition"</span><span class="p">,</span> +</span><span id="L-777"><a href="#L-777"><span class="linenos">777</span></a> <span class="s2">"preceding"</span><span class="p">,</span> +</span><span id="L-778"><a href="#L-778"><span class="linenos">778</span></a> <span class="s2">"proto"</span><span class="p">,</span> +</span><span id="L-779"><a href="#L-779"><span class="linenos">779</span></a> <span class="s2">"qualify"</span><span class="p">,</span> +</span><span id="L-780"><a href="#L-780"><span class="linenos">780</span></a> <span class="s2">"range"</span><span class="p">,</span> +</span><span id="L-781"><a href="#L-781"><span class="linenos">781</span></a> <span class="s2">"recursive"</span><span class="p">,</span> +</span><span id="L-782"><a href="#L-782"><span class="linenos">782</span></a> <span class="s2">"respect"</span><span class="p">,</span> +</span><span id="L-783"><a href="#L-783"><span class="linenos">783</span></a> <span class="s2">"right"</span><span class="p">,</span> +</span><span id="L-784"><a href="#L-784"><span class="linenos">784</span></a> <span class="s2">"rollup"</span><span class="p">,</span> +</span><span id="L-785"><a href="#L-785"><span class="linenos">785</span></a> <span class="s2">"rows"</span><span class="p">,</span> +</span><span id="L-786"><a href="#L-786"><span class="linenos">786</span></a> <span class="s2">"select"</span><span class="p">,</span> +</span><span id="L-787"><a href="#L-787"><span class="linenos">787</span></a> <span class="s2">"set"</span><span class="p">,</span> +</span><span id="L-788"><a href="#L-788"><span class="linenos">788</span></a> <span class="s2">"some"</span><span class="p">,</span> +</span><span id="L-789"><a href="#L-789"><span class="linenos">789</span></a> <span class="s2">"struct"</span><span class="p">,</span> +</span><span id="L-790"><a href="#L-790"><span class="linenos">790</span></a> <span class="s2">"tablesample"</span><span class="p">,</span> +</span><span id="L-791"><a href="#L-791"><span class="linenos">791</span></a> <span class="s2">"then"</span><span class="p">,</span> +</span><span id="L-792"><a href="#L-792"><span class="linenos">792</span></a> <span class="s2">"to"</span><span class="p">,</span> +</span><span id="L-793"><a href="#L-793"><span class="linenos">793</span></a> <span class="s2">"treat"</span><span class="p">,</span> +</span><span id="L-794"><a href="#L-794"><span class="linenos">794</span></a> <span class="s2">"true"</span><span class="p">,</span> +</span><span id="L-795"><a href="#L-795"><span class="linenos">795</span></a> <span class="s2">"unbounded"</span><span class="p">,</span> +</span><span id="L-796"><a href="#L-796"><span class="linenos">796</span></a> <span class="s2">"union"</span><span class="p">,</span> +</span><span id="L-797"><a href="#L-797"><span class="linenos">797</span></a> <span class="s2">"unnest"</span><span class="p">,</span> +</span><span id="L-798"><a href="#L-798"><span class="linenos">798</span></a> <span class="s2">"using"</span><span class="p">,</span> +</span><span id="L-799"><a href="#L-799"><span class="linenos">799</span></a> <span class="s2">"when"</span><span class="p">,</span> +</span><span id="L-800"><a href="#L-800"><span class="linenos">800</span></a> <span class="s2">"where"</span><span class="p">,</span> +</span><span id="L-801"><a href="#L-801"><span class="linenos">801</span></a> <span class="s2">"window"</span><span class="p">,</span> +</span><span id="L-802"><a href="#L-802"><span class="linenos">802</span></a> <span class="s2">"with"</span><span class="p">,</span> +</span><span id="L-803"><a href="#L-803"><span class="linenos">803</span></a> <span class="s2">"within"</span><span class="p">,</span> +</span><span id="L-804"><a href="#L-804"><span class="linenos">804</span></a> <span class="p">}</span> +</span><span id="L-805"><a href="#L-805"><span class="linenos">805</span></a> +</span><span id="L-806"><a href="#L-806"><span class="linenos">806</span></a> <span class="k">def</span> <span class="nf">mod_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Mod</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-807"><a href="#L-807"><span class="linenos">807</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-808"><a href="#L-808"><span class="linenos">808</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span> +</span><span id="L-809"><a href="#L-809"><span class="linenos">809</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> +</span><span id="L-810"><a href="#L-810"><span class="linenos">810</span></a> <span class="s2">"MOD"</span><span class="p">,</span> +</span><span id="L-811"><a href="#L-811"><span class="linenos">811</span></a> <span class="n">this</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">)</span> <span class="k">else</span> <span class="n">this</span><span class="p">,</span> +</span><span id="L-812"><a href="#L-812"><span class="linenos">812</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expr</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">)</span> <span class="k">else</span> <span class="n">expr</span><span class="p">,</span> +</span><span id="L-813"><a href="#L-813"><span class="linenos">813</span></a> <span class="p">)</span> +</span><span id="L-814"><a href="#L-814"><span class="linenos">814</span></a> +</span><span id="L-815"><a href="#L-815"><span class="linenos">815</span></a> <span class="k">def</span> <span class="nf">column_parts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-816"><a href="#L-816"><span class="linenos">816</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">meta</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"quoted_column"</span><span class="p">):</span> +</span><span id="L-817"><a href="#L-817"><span class="linenos">817</span></a> <span class="c1"># If a column reference is of the form `dataset.table`.name, we need</span> +</span><span id="L-818"><a href="#L-818"><span class="linenos">818</span></a> <span class="c1"># to preserve the quoted table path, otherwise the reference breaks</span> +</span><span id="L-819"><a href="#L-819"><span class="linenos">819</span></a> <span class="n">table_parts</span> <span class="o">=</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">parts</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span> +</span><span id="L-820"><a href="#L-820"><span class="linenos">820</span></a> <span class="n">table_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">table_parts</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="L-821"><a href="#L-821"><span class="linenos">821</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">table_path</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-822"><a href="#L-822"><span class="linenos">822</span></a> +</span><span id="L-823"><a href="#L-823"><span class="linenos">823</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">column_parts</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-824"><a href="#L-824"><span class="linenos">824</span></a> +</span><span id="L-825"><a href="#L-825"><span class="linenos">825</span></a> <span class="k">def</span> <span class="nf">table_parts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-826"><a href="#L-826"><span class="linenos">826</span></a> <span class="c1"># Depending on the context, `x.y` may not resolve to the same data source as `x`.`y`, so</span> +</span><span id="L-827"><a href="#L-827"><span class="linenos">827</span></a> <span class="c1"># we need to make sure the correct quoting is used in each case.</span> +</span><span id="L-828"><a href="#L-828"><span class="linenos">828</span></a> <span class="c1">#</span> +</span><span id="L-829"><a href="#L-829"><span class="linenos">829</span></a> <span class="c1"># For example, if there is a CTE x that clashes with a schema name, then the former will</span> +</span><span id="L-830"><a href="#L-830"><span class="linenos">830</span></a> <span class="c1"># return the table y in that schema, whereas the latter will return the CTE's y column:</span> +</span><span id="L-831"><a href="#L-831"><span class="linenos">831</span></a> <span class="c1">#</span> +</span><span id="L-832"><a href="#L-832"><span class="linenos">832</span></a> <span class="c1"># - WITH x AS (SELECT [1, 2] AS y) SELECT * FROM x, `x.y` -> cross join</span> +</span><span id="L-833"><a href="#L-833"><span class="linenos">833</span></a> <span class="c1"># - WITH x AS (SELECT [1, 2] AS y) SELECT * FROM x, `x`.`y` -> implicit unnest</span> +</span><span id="L-834"><a href="#L-834"><span class="linenos">834</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">meta</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"quoted_table"</span><span class="p">):</span> +</span><span id="L-835"><a href="#L-835"><span class="linenos">835</span></a> <span class="n">table_parts</span> <span class="o">=</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">parts</span><span class="p">)</span> +</span><span id="L-836"><a href="#L-836"><span class="linenos">836</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">table_parts</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="L-837"><a href="#L-837"><span class="linenos">837</span></a> +</span><span id="L-838"><a href="#L-838"><span class="linenos">838</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">table_parts</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-839"><a href="#L-839"><span class="linenos">839</span></a> +</span><span id="L-840"><a href="#L-840"><span class="linenos">840</span></a> <span class="k">def</span> <span class="nf">timetostr_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-841"><a href="#L-841"><span class="linenos">841</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</span><span class="p">)</span> <span class="k">else</span> <span class="n">expression</span> +</span><span id="L-842"><a href="#L-842"><span class="linenos">842</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"FORMAT_DATE"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">),</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-843"><a href="#L-843"><span class="linenos">843</span></a> +</span><span id="L-844"><a href="#L-844"><span class="linenos">844</span></a> <span class="k">def</span> <span class="nf">eq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-845"><a href="#L-845"><span class="linenos">845</span></a> <span class="c1"># Operands of = cannot be NULL in BigQuery</span> +</span><span id="L-846"><a href="#L-846"><span class="linenos">846</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">left</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">right</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">):</span> +</span><span id="L-847"><a href="#L-847"><span class="linenos">847</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">):</span> +</span><span id="L-848"><a href="#L-848"><span class="linenos">848</span></a> <span class="k">return</span> <span class="s2">"NULL"</span> +</span><span id="L-849"><a href="#L-849"><span class="linenos">849</span></a> +</span><span id="L-850"><a href="#L-850"><span class="linenos">850</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"="</span><span class="p">)</span> +</span><span id="L-851"><a href="#L-851"><span class="linenos">851</span></a> +</span><span id="L-852"><a href="#L-852"><span class="linenos">852</span></a> <span class="k">def</span> <span class="nf">attimezone_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-853"><a href="#L-853"><span class="linenos">853</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">parent</span> +</span><span id="L-854"><a href="#L-854"><span class="linenos">854</span></a> +</span><span id="L-855"><a href="#L-855"><span class="linenos">855</span></a> <span class="c1"># BigQuery allows CAST(.. AS {STRING|TIMESTAMP} [FORMAT <fmt> [AT TIME ZONE <tz>]]).</span> +</span><span id="L-856"><a href="#L-856"><span class="linenos">856</span></a> <span class="c1"># Only the TIMESTAMP one should use the below conversion, when AT TIME ZONE is included.</span> +</span><span id="L-857"><a href="#L-857"><span class="linenos">857</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">parent</span><span class="o">.</span><span class="n">to</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"text"</span><span class="p">):</span> +</span><span id="L-858"><a href="#L-858"><span class="linenos">858</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> +</span><span id="L-859"><a href="#L-859"><span class="linenos">859</span></a> <span class="s2">"TIMESTAMP"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"DATETIME"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"zone"</span><span class="p">))</span> +</span><span id="L-860"><a href="#L-860"><span class="linenos">860</span></a> <span class="p">)</span> +</span><span id="L-861"><a href="#L-861"><span class="linenos">861</span></a> +</span><span id="L-862"><a href="#L-862"><span class="linenos">862</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">attimezone_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-863"><a href="#L-863"><span class="linenos">863</span></a> +</span><span id="L-864"><a href="#L-864"><span class="linenos">864</span></a> <span class="k">def</span> <span class="nf">trycast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-865"><a href="#L-865"><span class="linenos">865</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">safe_prefix</span><span class="o">=</span><span class="s2">"SAFE_"</span><span class="p">)</span> +</span><span id="L-866"><a href="#L-866"><span class="linenos">866</span></a> +</span><span id="L-867"><a href="#L-867"><span class="linenos">867</span></a> <span class="k">def</span> <span class="nf">bracket_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Bracket</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-868"><a href="#L-868"><span class="linenos">868</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-869"><a href="#L-869"><span class="linenos">869</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="L-870"><a href="#L-870"><span class="linenos">870</span></a> +</span><span id="L-871"><a href="#L-871"><span class="linenos">871</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">and</span> <span class="n">this</span> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">STRUCT</span><span class="p">):</span> +</span><span id="L-872"><a href="#L-872"><span class="linenos">872</span></a> <span class="n">arg</span> <span class="o">=</span> <span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> +</span><span id="L-873"><a href="#L-873"><span class="linenos">873</span></a> <span class="k">if</span> <span class="n">arg</span><span class="o">.</span><span class="n">type</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-874"><a href="#L-874"><span class="linenos">874</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span> +</span><span id="L-875"><a href="#L-875"><span class="linenos">875</span></a> +</span><span id="L-876"><a href="#L-876"><span class="linenos">876</span></a> <span class="n">arg</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> +</span><span id="L-877"><a href="#L-877"><span class="linenos">877</span></a> +</span><span id="L-878"><a href="#L-878"><span class="linenos">878</span></a> <span class="k">if</span> <span class="n">arg</span><span class="o">.</span><span class="n">type</span> <span class="ow">and</span> <span class="n">arg</span><span class="o">.</span><span class="n">type</span><span class="o">.</span><span class="n">this</span> <span class="ow">in</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">TEXT_TYPES</span><span class="p">:</span> +</span><span id="L-879"><a href="#L-879"><span class="linenos">879</span></a> <span class="c1"># BQ doesn't support bracket syntax with string values for structs</span> +</span><span id="L-880"><a href="#L-880"><span class="linenos">880</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">arg</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-881"><a href="#L-881"><span class="linenos">881</span></a> +</span><span id="L-882"><a href="#L-882"><span class="linenos">882</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-883"><a href="#L-883"><span class="linenos">883</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"offset"</span><span class="p">)</span> +</span><span id="L-884"><a href="#L-884"><span class="linenos">884</span></a> +</span><span id="L-885"><a href="#L-885"><span class="linenos">885</span></a> <span class="k">if</span> <span class="n">offset</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> +</span><span id="L-886"><a href="#L-886"><span class="linenos">886</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"OFFSET(</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-887"><a href="#L-887"><span class="linenos">887</span></a> <span class="k">elif</span> <span class="n">offset</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="L-888"><a href="#L-888"><span class="linenos">888</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"ORDINAL(</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-889"><a href="#L-889"><span class="linenos">889</span></a> <span class="k">elif</span> <span class="n">offset</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-890"><a href="#L-890"><span class="linenos">890</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported array offset: </span><span class="si">{</span><span class="n">offset</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-891"><a href="#L-891"><span class="linenos">891</span></a> +</span><span id="L-892"><a href="#L-892"><span class="linenos">892</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"safe"</span><span class="p">):</span> +</span><span id="L-893"><a href="#L-893"><span class="linenos">893</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"SAFE_</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-894"><a href="#L-894"><span class="linenos">894</span></a> +</span><span id="L-895"><a href="#L-895"><span class="linenos">895</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">]"</span> +</span><span id="L-896"><a href="#L-896"><span class="linenos">896</span></a> +</span><span id="L-897"><a href="#L-897"><span class="linenos">897</span></a> <span class="k">def</span> <span class="nf">in_unnest_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-898"><a href="#L-898"><span class="linenos">898</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-899"><a href="#L-899"><span class="linenos">899</span></a> +</span><span id="L-900"><a href="#L-900"><span class="linenos">900</span></a> <span class="k">def</span> <span class="nf">except_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Except</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-901"><a href="#L-901"><span class="linenos">901</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"distinct"</span><span class="p">):</span> +</span><span id="L-902"><a href="#L-902"><span class="linenos">902</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"EXCEPT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> +</span><span id="L-903"><a href="#L-903"><span class="linenos">903</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXCEPT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-904"><a href="#L-904"><span class="linenos">904</span></a> +</span><span id="L-905"><a href="#L-905"><span class="linenos">905</span></a> <span class="k">def</span> <span class="nf">intersect_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Intersect</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-906"><a href="#L-906"><span class="linenos">906</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"distinct"</span><span class="p">):</span> +</span><span id="L-907"><a href="#L-907"><span class="linenos">907</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"INTERSECT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> +</span><span id="L-908"><a href="#L-908"><span class="linenos">908</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"INTERSECT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-909"><a href="#L-909"><span class="linenos">909</span></a> +</span><span id="L-910"><a href="#L-910"><span class="linenos">910</span></a> <span class="k">def</span> <span class="nf">version_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Version</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-911"><a href="#L-911"><span class="linenos">911</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"TIMESTAMP"</span><span class="p">:</span> +</span><span id="L-912"><a href="#L-912"><span class="linenos">912</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="s2">"SYSTEM_TIME"</span><span class="p">)</span> +</span><span id="L-913"><a href="#L-913"><span class="linenos">913</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">version_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -1814,213 +1813,212 @@ </span><span id="BigQuery-706"><a href="#BigQuery-706"><span class="linenos">706</span></a> </span><span id="BigQuery-707"><a href="#BigQuery-707"><span class="linenos">707</span></a> <span class="c1"># from: https://cloud.google.com/bigquery/docs/reference/standard-sql/lexical#reserved_keywords</span> </span><span id="BigQuery-708"><a href="#BigQuery-708"><span class="linenos">708</span></a> <span class="n">RESERVED_KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="BigQuery-709"><a href="#BigQuery-709"><span class="linenos">709</span></a> <span class="o">*</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">RESERVED_KEYWORDS</span><span class="p">,</span> -</span><span id="BigQuery-710"><a href="#BigQuery-710"><span class="linenos">710</span></a> <span class="s2">"all"</span><span class="p">,</span> -</span><span id="BigQuery-711"><a href="#BigQuery-711"><span class="linenos">711</span></a> <span class="s2">"and"</span><span class="p">,</span> -</span><span id="BigQuery-712"><a href="#BigQuery-712"><span class="linenos">712</span></a> <span class="s2">"any"</span><span class="p">,</span> -</span><span id="BigQuery-713"><a href="#BigQuery-713"><span class="linenos">713</span></a> <span class="s2">"array"</span><span class="p">,</span> -</span><span id="BigQuery-714"><a href="#BigQuery-714"><span class="linenos">714</span></a> <span class="s2">"as"</span><span class="p">,</span> -</span><span id="BigQuery-715"><a href="#BigQuery-715"><span class="linenos">715</span></a> <span class="s2">"asc"</span><span class="p">,</span> -</span><span id="BigQuery-716"><a href="#BigQuery-716"><span class="linenos">716</span></a> <span class="s2">"assert_rows_modified"</span><span class="p">,</span> -</span><span id="BigQuery-717"><a href="#BigQuery-717"><span class="linenos">717</span></a> <span class="s2">"at"</span><span class="p">,</span> -</span><span id="BigQuery-718"><a href="#BigQuery-718"><span class="linenos">718</span></a> <span class="s2">"between"</span><span class="p">,</span> -</span><span id="BigQuery-719"><a href="#BigQuery-719"><span class="linenos">719</span></a> <span class="s2">"by"</span><span class="p">,</span> -</span><span id="BigQuery-720"><a href="#BigQuery-720"><span class="linenos">720</span></a> <span class="s2">"case"</span><span class="p">,</span> -</span><span id="BigQuery-721"><a href="#BigQuery-721"><span class="linenos">721</span></a> <span class="s2">"cast"</span><span class="p">,</span> -</span><span id="BigQuery-722"><a href="#BigQuery-722"><span class="linenos">722</span></a> <span class="s2">"collate"</span><span class="p">,</span> -</span><span id="BigQuery-723"><a href="#BigQuery-723"><span class="linenos">723</span></a> <span class="s2">"contains"</span><span class="p">,</span> -</span><span id="BigQuery-724"><a href="#BigQuery-724"><span class="linenos">724</span></a> <span class="s2">"create"</span><span class="p">,</span> -</span><span id="BigQuery-725"><a href="#BigQuery-725"><span class="linenos">725</span></a> <span class="s2">"cross"</span><span class="p">,</span> -</span><span id="BigQuery-726"><a href="#BigQuery-726"><span class="linenos">726</span></a> <span class="s2">"cube"</span><span class="p">,</span> -</span><span id="BigQuery-727"><a href="#BigQuery-727"><span class="linenos">727</span></a> <span class="s2">"current"</span><span class="p">,</span> -</span><span id="BigQuery-728"><a href="#BigQuery-728"><span class="linenos">728</span></a> <span class="s2">"default"</span><span class="p">,</span> -</span><span id="BigQuery-729"><a href="#BigQuery-729"><span class="linenos">729</span></a> <span class="s2">"define"</span><span class="p">,</span> -</span><span id="BigQuery-730"><a href="#BigQuery-730"><span class="linenos">730</span></a> <span class="s2">"desc"</span><span class="p">,</span> -</span><span id="BigQuery-731"><a href="#BigQuery-731"><span class="linenos">731</span></a> <span class="s2">"distinct"</span><span class="p">,</span> -</span><span id="BigQuery-732"><a href="#BigQuery-732"><span class="linenos">732</span></a> <span class="s2">"else"</span><span class="p">,</span> -</span><span id="BigQuery-733"><a href="#BigQuery-733"><span class="linenos">733</span></a> <span class="s2">"end"</span><span class="p">,</span> -</span><span id="BigQuery-734"><a href="#BigQuery-734"><span class="linenos">734</span></a> <span class="s2">"enum"</span><span class="p">,</span> -</span><span id="BigQuery-735"><a href="#BigQuery-735"><span class="linenos">735</span></a> <span class="s2">"escape"</span><span class="p">,</span> -</span><span id="BigQuery-736"><a href="#BigQuery-736"><span class="linenos">736</span></a> <span class="s2">"except"</span><span class="p">,</span> -</span><span id="BigQuery-737"><a href="#BigQuery-737"><span class="linenos">737</span></a> <span class="s2">"exclude"</span><span class="p">,</span> -</span><span id="BigQuery-738"><a href="#BigQuery-738"><span class="linenos">738</span></a> <span class="s2">"exists"</span><span class="p">,</span> -</span><span id="BigQuery-739"><a href="#BigQuery-739"><span class="linenos">739</span></a> <span class="s2">"extract"</span><span class="p">,</span> -</span><span id="BigQuery-740"><a href="#BigQuery-740"><span class="linenos">740</span></a> <span class="s2">"false"</span><span class="p">,</span> -</span><span id="BigQuery-741"><a href="#BigQuery-741"><span class="linenos">741</span></a> <span class="s2">"fetch"</span><span class="p">,</span> -</span><span id="BigQuery-742"><a href="#BigQuery-742"><span class="linenos">742</span></a> <span class="s2">"following"</span><span class="p">,</span> -</span><span id="BigQuery-743"><a href="#BigQuery-743"><span class="linenos">743</span></a> <span class="s2">"for"</span><span class="p">,</span> -</span><span id="BigQuery-744"><a href="#BigQuery-744"><span class="linenos">744</span></a> <span class="s2">"from"</span><span class="p">,</span> -</span><span id="BigQuery-745"><a href="#BigQuery-745"><span class="linenos">745</span></a> <span class="s2">"full"</span><span class="p">,</span> -</span><span id="BigQuery-746"><a href="#BigQuery-746"><span class="linenos">746</span></a> <span class="s2">"group"</span><span class="p">,</span> -</span><span id="BigQuery-747"><a href="#BigQuery-747"><span class="linenos">747</span></a> <span class="s2">"grouping"</span><span class="p">,</span> -</span><span id="BigQuery-748"><a href="#BigQuery-748"><span class="linenos">748</span></a> <span class="s2">"groups"</span><span class="p">,</span> -</span><span id="BigQuery-749"><a href="#BigQuery-749"><span class="linenos">749</span></a> <span class="s2">"hash"</span><span class="p">,</span> -</span><span id="BigQuery-750"><a href="#BigQuery-750"><span class="linenos">750</span></a> <span class="s2">"having"</span><span class="p">,</span> -</span><span id="BigQuery-751"><a href="#BigQuery-751"><span class="linenos">751</span></a> <span class="s2">"if"</span><span class="p">,</span> -</span><span id="BigQuery-752"><a href="#BigQuery-752"><span class="linenos">752</span></a> <span class="s2">"ignore"</span><span class="p">,</span> -</span><span id="BigQuery-753"><a href="#BigQuery-753"><span class="linenos">753</span></a> <span class="s2">"in"</span><span class="p">,</span> -</span><span id="BigQuery-754"><a href="#BigQuery-754"><span class="linenos">754</span></a> <span class="s2">"inner"</span><span class="p">,</span> -</span><span id="BigQuery-755"><a href="#BigQuery-755"><span class="linenos">755</span></a> <span class="s2">"intersect"</span><span class="p">,</span> -</span><span id="BigQuery-756"><a href="#BigQuery-756"><span class="linenos">756</span></a> <span class="s2">"interval"</span><span class="p">,</span> -</span><span id="BigQuery-757"><a href="#BigQuery-757"><span class="linenos">757</span></a> <span class="s2">"into"</span><span class="p">,</span> -</span><span id="BigQuery-758"><a href="#BigQuery-758"><span class="linenos">758</span></a> <span class="s2">"is"</span><span class="p">,</span> -</span><span id="BigQuery-759"><a href="#BigQuery-759"><span class="linenos">759</span></a> <span class="s2">"join"</span><span class="p">,</span> -</span><span id="BigQuery-760"><a href="#BigQuery-760"><span class="linenos">760</span></a> <span class="s2">"lateral"</span><span class="p">,</span> -</span><span id="BigQuery-761"><a href="#BigQuery-761"><span class="linenos">761</span></a> <span class="s2">"left"</span><span class="p">,</span> -</span><span id="BigQuery-762"><a href="#BigQuery-762"><span class="linenos">762</span></a> <span class="s2">"like"</span><span class="p">,</span> -</span><span id="BigQuery-763"><a href="#BigQuery-763"><span class="linenos">763</span></a> <span class="s2">"limit"</span><span class="p">,</span> -</span><span id="BigQuery-764"><a href="#BigQuery-764"><span class="linenos">764</span></a> <span class="s2">"lookup"</span><span class="p">,</span> -</span><span id="BigQuery-765"><a href="#BigQuery-765"><span class="linenos">765</span></a> <span class="s2">"merge"</span><span class="p">,</span> -</span><span id="BigQuery-766"><a href="#BigQuery-766"><span class="linenos">766</span></a> <span class="s2">"natural"</span><span class="p">,</span> -</span><span id="BigQuery-767"><a href="#BigQuery-767"><span class="linenos">767</span></a> <span class="s2">"new"</span><span class="p">,</span> -</span><span id="BigQuery-768"><a href="#BigQuery-768"><span class="linenos">768</span></a> <span class="s2">"no"</span><span class="p">,</span> -</span><span id="BigQuery-769"><a href="#BigQuery-769"><span class="linenos">769</span></a> <span class="s2">"not"</span><span class="p">,</span> -</span><span id="BigQuery-770"><a href="#BigQuery-770"><span class="linenos">770</span></a> <span class="s2">"null"</span><span class="p">,</span> -</span><span id="BigQuery-771"><a href="#BigQuery-771"><span class="linenos">771</span></a> <span class="s2">"nulls"</span><span class="p">,</span> -</span><span id="BigQuery-772"><a href="#BigQuery-772"><span class="linenos">772</span></a> <span class="s2">"of"</span><span class="p">,</span> -</span><span id="BigQuery-773"><a href="#BigQuery-773"><span class="linenos">773</span></a> <span class="s2">"on"</span><span class="p">,</span> -</span><span id="BigQuery-774"><a href="#BigQuery-774"><span class="linenos">774</span></a> <span class="s2">"or"</span><span class="p">,</span> -</span><span id="BigQuery-775"><a href="#BigQuery-775"><span class="linenos">775</span></a> <span class="s2">"order"</span><span class="p">,</span> -</span><span id="BigQuery-776"><a href="#BigQuery-776"><span class="linenos">776</span></a> <span class="s2">"outer"</span><span class="p">,</span> -</span><span id="BigQuery-777"><a href="#BigQuery-777"><span class="linenos">777</span></a> <span class="s2">"over"</span><span class="p">,</span> -</span><span id="BigQuery-778"><a href="#BigQuery-778"><span class="linenos">778</span></a> <span class="s2">"partition"</span><span class="p">,</span> -</span><span id="BigQuery-779"><a href="#BigQuery-779"><span class="linenos">779</span></a> <span class="s2">"preceding"</span><span class="p">,</span> -</span><span id="BigQuery-780"><a href="#BigQuery-780"><span class="linenos">780</span></a> <span class="s2">"proto"</span><span class="p">,</span> -</span><span id="BigQuery-781"><a href="#BigQuery-781"><span class="linenos">781</span></a> <span class="s2">"qualify"</span><span class="p">,</span> -</span><span id="BigQuery-782"><a href="#BigQuery-782"><span class="linenos">782</span></a> <span class="s2">"range"</span><span class="p">,</span> -</span><span id="BigQuery-783"><a href="#BigQuery-783"><span class="linenos">783</span></a> <span class="s2">"recursive"</span><span class="p">,</span> -</span><span id="BigQuery-784"><a href="#BigQuery-784"><span class="linenos">784</span></a> <span class="s2">"respect"</span><span class="p">,</span> -</span><span id="BigQuery-785"><a href="#BigQuery-785"><span class="linenos">785</span></a> <span class="s2">"right"</span><span class="p">,</span> -</span><span id="BigQuery-786"><a href="#BigQuery-786"><span class="linenos">786</span></a> <span class="s2">"rollup"</span><span class="p">,</span> -</span><span id="BigQuery-787"><a href="#BigQuery-787"><span class="linenos">787</span></a> <span class="s2">"rows"</span><span class="p">,</span> -</span><span id="BigQuery-788"><a href="#BigQuery-788"><span class="linenos">788</span></a> <span class="s2">"select"</span><span class="p">,</span> -</span><span id="BigQuery-789"><a href="#BigQuery-789"><span class="linenos">789</span></a> <span class="s2">"set"</span><span class="p">,</span> -</span><span id="BigQuery-790"><a href="#BigQuery-790"><span class="linenos">790</span></a> <span class="s2">"some"</span><span class="p">,</span> -</span><span id="BigQuery-791"><a href="#BigQuery-791"><span class="linenos">791</span></a> <span class="s2">"struct"</span><span class="p">,</span> -</span><span id="BigQuery-792"><a href="#BigQuery-792"><span class="linenos">792</span></a> <span class="s2">"tablesample"</span><span class="p">,</span> -</span><span id="BigQuery-793"><a href="#BigQuery-793"><span class="linenos">793</span></a> <span class="s2">"then"</span><span class="p">,</span> -</span><span id="BigQuery-794"><a href="#BigQuery-794"><span class="linenos">794</span></a> <span class="s2">"to"</span><span class="p">,</span> -</span><span id="BigQuery-795"><a href="#BigQuery-795"><span class="linenos">795</span></a> <span class="s2">"treat"</span><span class="p">,</span> -</span><span id="BigQuery-796"><a href="#BigQuery-796"><span class="linenos">796</span></a> <span class="s2">"true"</span><span class="p">,</span> -</span><span id="BigQuery-797"><a href="#BigQuery-797"><span class="linenos">797</span></a> <span class="s2">"unbounded"</span><span class="p">,</span> -</span><span id="BigQuery-798"><a href="#BigQuery-798"><span class="linenos">798</span></a> <span class="s2">"union"</span><span class="p">,</span> -</span><span id="BigQuery-799"><a href="#BigQuery-799"><span class="linenos">799</span></a> <span class="s2">"unnest"</span><span class="p">,</span> -</span><span id="BigQuery-800"><a href="#BigQuery-800"><span class="linenos">800</span></a> <span class="s2">"using"</span><span class="p">,</span> -</span><span id="BigQuery-801"><a href="#BigQuery-801"><span class="linenos">801</span></a> <span class="s2">"when"</span><span class="p">,</span> -</span><span id="BigQuery-802"><a href="#BigQuery-802"><span class="linenos">802</span></a> <span class="s2">"where"</span><span class="p">,</span> -</span><span id="BigQuery-803"><a href="#BigQuery-803"><span class="linenos">803</span></a> <span class="s2">"window"</span><span class="p">,</span> -</span><span id="BigQuery-804"><a href="#BigQuery-804"><span class="linenos">804</span></a> <span class="s2">"with"</span><span class="p">,</span> -</span><span id="BigQuery-805"><a href="#BigQuery-805"><span class="linenos">805</span></a> <span class="s2">"within"</span><span class="p">,</span> -</span><span id="BigQuery-806"><a href="#BigQuery-806"><span class="linenos">806</span></a> <span class="p">}</span> -</span><span id="BigQuery-807"><a href="#BigQuery-807"><span class="linenos">807</span></a> -</span><span id="BigQuery-808"><a href="#BigQuery-808"><span class="linenos">808</span></a> <span class="k">def</span> <span class="nf">mod_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Mod</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery-809"><a href="#BigQuery-809"><span class="linenos">809</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> -</span><span id="BigQuery-810"><a href="#BigQuery-810"><span class="linenos">810</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span> -</span><span id="BigQuery-811"><a href="#BigQuery-811"><span class="linenos">811</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> -</span><span id="BigQuery-812"><a href="#BigQuery-812"><span class="linenos">812</span></a> <span class="s2">"MOD"</span><span class="p">,</span> -</span><span id="BigQuery-813"><a href="#BigQuery-813"><span class="linenos">813</span></a> <span class="n">this</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">)</span> <span class="k">else</span> <span class="n">this</span><span class="p">,</span> -</span><span id="BigQuery-814"><a href="#BigQuery-814"><span class="linenos">814</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expr</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">)</span> <span class="k">else</span> <span class="n">expr</span><span class="p">,</span> -</span><span id="BigQuery-815"><a href="#BigQuery-815"><span class="linenos">815</span></a> <span class="p">)</span> -</span><span id="BigQuery-816"><a href="#BigQuery-816"><span class="linenos">816</span></a> -</span><span id="BigQuery-817"><a href="#BigQuery-817"><span class="linenos">817</span></a> <span class="k">def</span> <span class="nf">column_parts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery-818"><a href="#BigQuery-818"><span class="linenos">818</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">meta</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"quoted_column"</span><span class="p">):</span> -</span><span id="BigQuery-819"><a href="#BigQuery-819"><span class="linenos">819</span></a> <span class="c1"># If a column reference is of the form `dataset.table`.name, we need</span> -</span><span id="BigQuery-820"><a href="#BigQuery-820"><span class="linenos">820</span></a> <span class="c1"># to preserve the quoted table path, otherwise the reference breaks</span> -</span><span id="BigQuery-821"><a href="#BigQuery-821"><span class="linenos">821</span></a> <span class="n">table_parts</span> <span class="o">=</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">parts</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span> -</span><span id="BigQuery-822"><a href="#BigQuery-822"><span class="linenos">822</span></a> <span class="n">table_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">table_parts</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="BigQuery-823"><a href="#BigQuery-823"><span class="linenos">823</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">table_path</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="BigQuery-824"><a href="#BigQuery-824"><span class="linenos">824</span></a> -</span><span id="BigQuery-825"><a href="#BigQuery-825"><span class="linenos">825</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">column_parts</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="BigQuery-826"><a href="#BigQuery-826"><span class="linenos">826</span></a> -</span><span id="BigQuery-827"><a href="#BigQuery-827"><span class="linenos">827</span></a> <span class="k">def</span> <span class="nf">table_parts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery-828"><a href="#BigQuery-828"><span class="linenos">828</span></a> <span class="c1"># Depending on the context, `x.y` may not resolve to the same data source as `x`.`y`, so</span> -</span><span id="BigQuery-829"><a href="#BigQuery-829"><span class="linenos">829</span></a> <span class="c1"># we need to make sure the correct quoting is used in each case.</span> -</span><span id="BigQuery-830"><a href="#BigQuery-830"><span class="linenos">830</span></a> <span class="c1">#</span> -</span><span id="BigQuery-831"><a href="#BigQuery-831"><span class="linenos">831</span></a> <span class="c1"># For example, if there is a CTE x that clashes with a schema name, then the former will</span> -</span><span id="BigQuery-832"><a href="#BigQuery-832"><span class="linenos">832</span></a> <span class="c1"># return the table y in that schema, whereas the latter will return the CTE's y column:</span> -</span><span id="BigQuery-833"><a href="#BigQuery-833"><span class="linenos">833</span></a> <span class="c1">#</span> -</span><span id="BigQuery-834"><a href="#BigQuery-834"><span class="linenos">834</span></a> <span class="c1"># - WITH x AS (SELECT [1, 2] AS y) SELECT * FROM x, `x.y` -> cross join</span> -</span><span id="BigQuery-835"><a href="#BigQuery-835"><span class="linenos">835</span></a> <span class="c1"># - WITH x AS (SELECT [1, 2] AS y) SELECT * FROM x, `x`.`y` -> implicit unnest</span> -</span><span id="BigQuery-836"><a href="#BigQuery-836"><span class="linenos">836</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">meta</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"quoted_table"</span><span class="p">):</span> -</span><span id="BigQuery-837"><a href="#BigQuery-837"><span class="linenos">837</span></a> <span class="n">table_parts</span> <span class="o">=</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">parts</span><span class="p">)</span> -</span><span id="BigQuery-838"><a href="#BigQuery-838"><span class="linenos">838</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">table_parts</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="BigQuery-839"><a href="#BigQuery-839"><span class="linenos">839</span></a> -</span><span id="BigQuery-840"><a href="#BigQuery-840"><span class="linenos">840</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">table_parts</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="BigQuery-841"><a href="#BigQuery-841"><span class="linenos">841</span></a> -</span><span id="BigQuery-842"><a href="#BigQuery-842"><span class="linenos">842</span></a> <span class="k">def</span> <span class="nf">timetostr_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery-843"><a href="#BigQuery-843"><span class="linenos">843</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</span><span class="p">)</span> <span class="k">else</span> <span class="n">expression</span> -</span><span id="BigQuery-844"><a href="#BigQuery-844"><span class="linenos">844</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"FORMAT_DATE"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">),</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="BigQuery-845"><a href="#BigQuery-845"><span class="linenos">845</span></a> -</span><span id="BigQuery-846"><a href="#BigQuery-846"><span class="linenos">846</span></a> <span class="k">def</span> <span class="nf">eq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery-847"><a href="#BigQuery-847"><span class="linenos">847</span></a> <span class="c1"># Operands of = cannot be NULL in BigQuery</span> -</span><span id="BigQuery-848"><a href="#BigQuery-848"><span class="linenos">848</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">left</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">right</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">):</span> -</span><span id="BigQuery-849"><a href="#BigQuery-849"><span class="linenos">849</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">):</span> -</span><span id="BigQuery-850"><a href="#BigQuery-850"><span class="linenos">850</span></a> <span class="k">return</span> <span class="s2">"NULL"</span> -</span><span id="BigQuery-851"><a href="#BigQuery-851"><span class="linenos">851</span></a> -</span><span id="BigQuery-852"><a href="#BigQuery-852"><span class="linenos">852</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"="</span><span class="p">)</span> -</span><span id="BigQuery-853"><a href="#BigQuery-853"><span class="linenos">853</span></a> -</span><span id="BigQuery-854"><a href="#BigQuery-854"><span class="linenos">854</span></a> <span class="k">def</span> <span class="nf">attimezone_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery-855"><a href="#BigQuery-855"><span class="linenos">855</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">parent</span> -</span><span id="BigQuery-856"><a href="#BigQuery-856"><span class="linenos">856</span></a> -</span><span id="BigQuery-857"><a href="#BigQuery-857"><span class="linenos">857</span></a> <span class="c1"># BigQuery allows CAST(.. AS {STRING|TIMESTAMP} [FORMAT <fmt> [AT TIME ZONE <tz>]]).</span> -</span><span id="BigQuery-858"><a href="#BigQuery-858"><span class="linenos">858</span></a> <span class="c1"># Only the TIMESTAMP one should use the below conversion, when AT TIME ZONE is included.</span> -</span><span id="BigQuery-859"><a href="#BigQuery-859"><span class="linenos">859</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">parent</span><span class="o">.</span><span class="n">to</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"text"</span><span class="p">):</span> -</span><span id="BigQuery-860"><a href="#BigQuery-860"><span class="linenos">860</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> -</span><span id="BigQuery-861"><a href="#BigQuery-861"><span class="linenos">861</span></a> <span class="s2">"TIMESTAMP"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"DATETIME"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"zone"</span><span class="p">))</span> -</span><span id="BigQuery-862"><a href="#BigQuery-862"><span class="linenos">862</span></a> <span class="p">)</span> -</span><span id="BigQuery-863"><a href="#BigQuery-863"><span class="linenos">863</span></a> -</span><span id="BigQuery-864"><a href="#BigQuery-864"><span class="linenos">864</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">attimezone_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="BigQuery-865"><a href="#BigQuery-865"><span class="linenos">865</span></a> -</span><span id="BigQuery-866"><a href="#BigQuery-866"><span class="linenos">866</span></a> <span class="k">def</span> <span class="nf">trycast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery-867"><a href="#BigQuery-867"><span class="linenos">867</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">safe_prefix</span><span class="o">=</span><span class="s2">"SAFE_"</span><span class="p">)</span> -</span><span id="BigQuery-868"><a href="#BigQuery-868"><span class="linenos">868</span></a> -</span><span id="BigQuery-869"><a href="#BigQuery-869"><span class="linenos">869</span></a> <span class="k">def</span> <span class="nf">bracket_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Bracket</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery-870"><a href="#BigQuery-870"><span class="linenos">870</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> -</span><span id="BigQuery-871"><a href="#BigQuery-871"><span class="linenos">871</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> -</span><span id="BigQuery-872"><a href="#BigQuery-872"><span class="linenos">872</span></a> -</span><span id="BigQuery-873"><a href="#BigQuery-873"><span class="linenos">873</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">and</span> <span class="n">this</span> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">STRUCT</span><span class="p">):</span> -</span><span id="BigQuery-874"><a href="#BigQuery-874"><span class="linenos">874</span></a> <span class="n">arg</span> <span class="o">=</span> <span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> -</span><span id="BigQuery-875"><a href="#BigQuery-875"><span class="linenos">875</span></a> <span class="k">if</span> <span class="n">arg</span><span class="o">.</span><span class="n">type</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="BigQuery-876"><a href="#BigQuery-876"><span class="linenos">876</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span> -</span><span id="BigQuery-877"><a href="#BigQuery-877"><span class="linenos">877</span></a> -</span><span id="BigQuery-878"><a href="#BigQuery-878"><span class="linenos">878</span></a> <span class="n">arg</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> -</span><span id="BigQuery-879"><a href="#BigQuery-879"><span class="linenos">879</span></a> -</span><span id="BigQuery-880"><a href="#BigQuery-880"><span class="linenos">880</span></a> <span class="k">if</span> <span class="n">arg</span><span class="o">.</span><span class="n">type</span> <span class="ow">and</span> <span class="n">arg</span><span class="o">.</span><span class="n">type</span><span class="o">.</span><span class="n">this</span> <span class="ow">in</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">TEXT_TYPES</span><span class="p">:</span> -</span><span id="BigQuery-881"><a href="#BigQuery-881"><span class="linenos">881</span></a> <span class="c1"># BQ doesn't support bracket syntax with string values for structs</span> -</span><span id="BigQuery-882"><a href="#BigQuery-882"><span class="linenos">882</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">arg</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> -</span><span id="BigQuery-883"><a href="#BigQuery-883"><span class="linenos">883</span></a> -</span><span id="BigQuery-884"><a href="#BigQuery-884"><span class="linenos">884</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="BigQuery-885"><a href="#BigQuery-885"><span class="linenos">885</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"offset"</span><span class="p">)</span> -</span><span id="BigQuery-886"><a href="#BigQuery-886"><span class="linenos">886</span></a> -</span><span id="BigQuery-887"><a href="#BigQuery-887"><span class="linenos">887</span></a> <span class="k">if</span> <span class="n">offset</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> -</span><span id="BigQuery-888"><a href="#BigQuery-888"><span class="linenos">888</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"OFFSET(</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="BigQuery-889"><a href="#BigQuery-889"><span class="linenos">889</span></a> <span class="k">elif</span> <span class="n">offset</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="BigQuery-890"><a href="#BigQuery-890"><span class="linenos">890</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"ORDINAL(</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="BigQuery-891"><a href="#BigQuery-891"><span class="linenos">891</span></a> <span class="k">elif</span> <span class="n">offset</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="BigQuery-892"><a href="#BigQuery-892"><span class="linenos">892</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported array offset: </span><span class="si">{</span><span class="n">offset</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="BigQuery-893"><a href="#BigQuery-893"><span class="linenos">893</span></a> -</span><span id="BigQuery-894"><a href="#BigQuery-894"><span class="linenos">894</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"safe"</span><span class="p">):</span> -</span><span id="BigQuery-895"><a href="#BigQuery-895"><span class="linenos">895</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"SAFE_</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="BigQuery-896"><a href="#BigQuery-896"><span class="linenos">896</span></a> -</span><span id="BigQuery-897"><a href="#BigQuery-897"><span class="linenos">897</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">]"</span> -</span><span id="BigQuery-898"><a href="#BigQuery-898"><span class="linenos">898</span></a> -</span><span id="BigQuery-899"><a href="#BigQuery-899"><span class="linenos">899</span></a> <span class="k">def</span> <span class="nf">in_unnest_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery-900"><a href="#BigQuery-900"><span class="linenos">900</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="BigQuery-901"><a href="#BigQuery-901"><span class="linenos">901</span></a> -</span><span id="BigQuery-902"><a href="#BigQuery-902"><span class="linenos">902</span></a> <span class="k">def</span> <span class="nf">except_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Except</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery-903"><a href="#BigQuery-903"><span class="linenos">903</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"distinct"</span><span class="p">):</span> -</span><span id="BigQuery-904"><a href="#BigQuery-904"><span class="linenos">904</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"EXCEPT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> -</span><span id="BigQuery-905"><a href="#BigQuery-905"><span class="linenos">905</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXCEPT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> -</span><span id="BigQuery-906"><a href="#BigQuery-906"><span class="linenos">906</span></a> -</span><span id="BigQuery-907"><a href="#BigQuery-907"><span class="linenos">907</span></a> <span class="k">def</span> <span class="nf">intersect_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Intersect</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery-908"><a href="#BigQuery-908"><span class="linenos">908</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"distinct"</span><span class="p">):</span> -</span><span id="BigQuery-909"><a href="#BigQuery-909"><span class="linenos">909</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"INTERSECT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> -</span><span id="BigQuery-910"><a href="#BigQuery-910"><span class="linenos">910</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"INTERSECT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> -</span><span id="BigQuery-911"><a href="#BigQuery-911"><span class="linenos">911</span></a> -</span><span id="BigQuery-912"><a href="#BigQuery-912"><span class="linenos">912</span></a> <span class="k">def</span> <span class="nf">version_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Version</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery-913"><a href="#BigQuery-913"><span class="linenos">913</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"TIMESTAMP"</span><span class="p">:</span> -</span><span id="BigQuery-914"><a href="#BigQuery-914"><span class="linenos">914</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="s2">"SYSTEM_TIME"</span><span class="p">)</span> -</span><span id="BigQuery-915"><a href="#BigQuery-915"><span class="linenos">915</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">version_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="BigQuery-709"><a href="#BigQuery-709"><span class="linenos">709</span></a> <span class="s2">"all"</span><span class="p">,</span> +</span><span id="BigQuery-710"><a href="#BigQuery-710"><span class="linenos">710</span></a> <span class="s2">"and"</span><span class="p">,</span> +</span><span id="BigQuery-711"><a href="#BigQuery-711"><span class="linenos">711</span></a> <span class="s2">"any"</span><span class="p">,</span> +</span><span id="BigQuery-712"><a href="#BigQuery-712"><span class="linenos">712</span></a> <span class="s2">"array"</span><span class="p">,</span> +</span><span id="BigQuery-713"><a href="#BigQuery-713"><span class="linenos">713</span></a> <span class="s2">"as"</span><span class="p">,</span> +</span><span id="BigQuery-714"><a href="#BigQuery-714"><span class="linenos">714</span></a> <span class="s2">"asc"</span><span class="p">,</span> +</span><span id="BigQuery-715"><a href="#BigQuery-715"><span class="linenos">715</span></a> <span class="s2">"assert_rows_modified"</span><span class="p">,</span> +</span><span id="BigQuery-716"><a href="#BigQuery-716"><span class="linenos">716</span></a> <span class="s2">"at"</span><span class="p">,</span> +</span><span id="BigQuery-717"><a href="#BigQuery-717"><span class="linenos">717</span></a> <span class="s2">"between"</span><span class="p">,</span> +</span><span id="BigQuery-718"><a href="#BigQuery-718"><span class="linenos">718</span></a> <span class="s2">"by"</span><span class="p">,</span> +</span><span id="BigQuery-719"><a href="#BigQuery-719"><span class="linenos">719</span></a> <span class="s2">"case"</span><span class="p">,</span> +</span><span id="BigQuery-720"><a href="#BigQuery-720"><span class="linenos">720</span></a> <span class="s2">"cast"</span><span class="p">,</span> +</span><span id="BigQuery-721"><a href="#BigQuery-721"><span class="linenos">721</span></a> <span class="s2">"collate"</span><span class="p">,</span> +</span><span id="BigQuery-722"><a href="#BigQuery-722"><span class="linenos">722</span></a> <span class="s2">"contains"</span><span class="p">,</span> +</span><span id="BigQuery-723"><a href="#BigQuery-723"><span class="linenos">723</span></a> <span class="s2">"create"</span><span class="p">,</span> +</span><span id="BigQuery-724"><a href="#BigQuery-724"><span class="linenos">724</span></a> <span class="s2">"cross"</span><span class="p">,</span> +</span><span id="BigQuery-725"><a href="#BigQuery-725"><span class="linenos">725</span></a> <span class="s2">"cube"</span><span class="p">,</span> +</span><span id="BigQuery-726"><a href="#BigQuery-726"><span class="linenos">726</span></a> <span class="s2">"current"</span><span class="p">,</span> +</span><span id="BigQuery-727"><a href="#BigQuery-727"><span class="linenos">727</span></a> <span class="s2">"default"</span><span class="p">,</span> +</span><span id="BigQuery-728"><a href="#BigQuery-728"><span class="linenos">728</span></a> <span class="s2">"define"</span><span class="p">,</span> +</span><span id="BigQuery-729"><a href="#BigQuery-729"><span class="linenos">729</span></a> <span class="s2">"desc"</span><span class="p">,</span> +</span><span id="BigQuery-730"><a href="#BigQuery-730"><span class="linenos">730</span></a> <span class="s2">"distinct"</span><span class="p">,</span> +</span><span id="BigQuery-731"><a href="#BigQuery-731"><span class="linenos">731</span></a> <span class="s2">"else"</span><span class="p">,</span> +</span><span id="BigQuery-732"><a href="#BigQuery-732"><span class="linenos">732</span></a> <span class="s2">"end"</span><span class="p">,</span> +</span><span id="BigQuery-733"><a href="#BigQuery-733"><span class="linenos">733</span></a> <span class="s2">"enum"</span><span class="p">,</span> +</span><span id="BigQuery-734"><a href="#BigQuery-734"><span class="linenos">734</span></a> <span class="s2">"escape"</span><span class="p">,</span> +</span><span id="BigQuery-735"><a href="#BigQuery-735"><span class="linenos">735</span></a> <span class="s2">"except"</span><span class="p">,</span> +</span><span id="BigQuery-736"><a href="#BigQuery-736"><span class="linenos">736</span></a> <span class="s2">"exclude"</span><span class="p">,</span> +</span><span id="BigQuery-737"><a href="#BigQuery-737"><span class="linenos">737</span></a> <span class="s2">"exists"</span><span class="p">,</span> +</span><span id="BigQuery-738"><a href="#BigQuery-738"><span class="linenos">738</span></a> <span class="s2">"extract"</span><span class="p">,</span> +</span><span id="BigQuery-739"><a href="#BigQuery-739"><span class="linenos">739</span></a> <span class="s2">"false"</span><span class="p">,</span> +</span><span id="BigQuery-740"><a href="#BigQuery-740"><span class="linenos">740</span></a> <span class="s2">"fetch"</span><span class="p">,</span> +</span><span id="BigQuery-741"><a href="#BigQuery-741"><span class="linenos">741</span></a> <span class="s2">"following"</span><span class="p">,</span> +</span><span id="BigQuery-742"><a href="#BigQuery-742"><span class="linenos">742</span></a> <span class="s2">"for"</span><span class="p">,</span> +</span><span id="BigQuery-743"><a href="#BigQuery-743"><span class="linenos">743</span></a> <span class="s2">"from"</span><span class="p">,</span> +</span><span id="BigQuery-744"><a href="#BigQuery-744"><span class="linenos">744</span></a> <span class="s2">"full"</span><span class="p">,</span> +</span><span id="BigQuery-745"><a href="#BigQuery-745"><span class="linenos">745</span></a> <span class="s2">"group"</span><span class="p">,</span> +</span><span id="BigQuery-746"><a href="#BigQuery-746"><span class="linenos">746</span></a> <span class="s2">"grouping"</span><span class="p">,</span> +</span><span id="BigQuery-747"><a href="#BigQuery-747"><span class="linenos">747</span></a> <span class="s2">"groups"</span><span class="p">,</span> +</span><span id="BigQuery-748"><a href="#BigQuery-748"><span class="linenos">748</span></a> <span class="s2">"hash"</span><span class="p">,</span> +</span><span id="BigQuery-749"><a href="#BigQuery-749"><span class="linenos">749</span></a> <span class="s2">"having"</span><span class="p">,</span> +</span><span id="BigQuery-750"><a href="#BigQuery-750"><span class="linenos">750</span></a> <span class="s2">"if"</span><span class="p">,</span> +</span><span id="BigQuery-751"><a href="#BigQuery-751"><span class="linenos">751</span></a> <span class="s2">"ignore"</span><span class="p">,</span> +</span><span id="BigQuery-752"><a href="#BigQuery-752"><span class="linenos">752</span></a> <span class="s2">"in"</span><span class="p">,</span> +</span><span id="BigQuery-753"><a href="#BigQuery-753"><span class="linenos">753</span></a> <span class="s2">"inner"</span><span class="p">,</span> +</span><span id="BigQuery-754"><a href="#BigQuery-754"><span class="linenos">754</span></a> <span class="s2">"intersect"</span><span class="p">,</span> +</span><span id="BigQuery-755"><a href="#BigQuery-755"><span class="linenos">755</span></a> <span class="s2">"interval"</span><span class="p">,</span> +</span><span id="BigQuery-756"><a href="#BigQuery-756"><span class="linenos">756</span></a> <span class="s2">"into"</span><span class="p">,</span> +</span><span id="BigQuery-757"><a href="#BigQuery-757"><span class="linenos">757</span></a> <span class="s2">"is"</span><span class="p">,</span> +</span><span id="BigQuery-758"><a href="#BigQuery-758"><span class="linenos">758</span></a> <span class="s2">"join"</span><span class="p">,</span> +</span><span id="BigQuery-759"><a href="#BigQuery-759"><span class="linenos">759</span></a> <span class="s2">"lateral"</span><span class="p">,</span> +</span><span id="BigQuery-760"><a href="#BigQuery-760"><span class="linenos">760</span></a> <span class="s2">"left"</span><span class="p">,</span> +</span><span id="BigQuery-761"><a href="#BigQuery-761"><span class="linenos">761</span></a> <span class="s2">"like"</span><span class="p">,</span> +</span><span id="BigQuery-762"><a href="#BigQuery-762"><span class="linenos">762</span></a> <span class="s2">"limit"</span><span class="p">,</span> +</span><span id="BigQuery-763"><a href="#BigQuery-763"><span class="linenos">763</span></a> <span class="s2">"lookup"</span><span class="p">,</span> +</span><span id="BigQuery-764"><a href="#BigQuery-764"><span class="linenos">764</span></a> <span class="s2">"merge"</span><span class="p">,</span> +</span><span id="BigQuery-765"><a href="#BigQuery-765"><span class="linenos">765</span></a> <span class="s2">"natural"</span><span class="p">,</span> +</span><span id="BigQuery-766"><a href="#BigQuery-766"><span class="linenos">766</span></a> <span class="s2">"new"</span><span class="p">,</span> +</span><span id="BigQuery-767"><a href="#BigQuery-767"><span class="linenos">767</span></a> <span class="s2">"no"</span><span class="p">,</span> +</span><span id="BigQuery-768"><a href="#BigQuery-768"><span class="linenos">768</span></a> <span class="s2">"not"</span><span class="p">,</span> +</span><span id="BigQuery-769"><a href="#BigQuery-769"><span class="linenos">769</span></a> <span class="s2">"null"</span><span class="p">,</span> +</span><span id="BigQuery-770"><a href="#BigQuery-770"><span class="linenos">770</span></a> <span class="s2">"nulls"</span><span class="p">,</span> +</span><span id="BigQuery-771"><a href="#BigQuery-771"><span class="linenos">771</span></a> <span class="s2">"of"</span><span class="p">,</span> +</span><span id="BigQuery-772"><a href="#BigQuery-772"><span class="linenos">772</span></a> <span class="s2">"on"</span><span class="p">,</span> +</span><span id="BigQuery-773"><a href="#BigQuery-773"><span class="linenos">773</span></a> <span class="s2">"or"</span><span class="p">,</span> +</span><span id="BigQuery-774"><a href="#BigQuery-774"><span class="linenos">774</span></a> <span class="s2">"order"</span><span class="p">,</span> +</span><span id="BigQuery-775"><a href="#BigQuery-775"><span class="linenos">775</span></a> <span class="s2">"outer"</span><span class="p">,</span> +</span><span id="BigQuery-776"><a href="#BigQuery-776"><span class="linenos">776</span></a> <span class="s2">"over"</span><span class="p">,</span> +</span><span id="BigQuery-777"><a href="#BigQuery-777"><span class="linenos">777</span></a> <span class="s2">"partition"</span><span class="p">,</span> +</span><span id="BigQuery-778"><a href="#BigQuery-778"><span class="linenos">778</span></a> <span class="s2">"preceding"</span><span class="p">,</span> +</span><span id="BigQuery-779"><a href="#BigQuery-779"><span class="linenos">779</span></a> <span class="s2">"proto"</span><span class="p">,</span> +</span><span id="BigQuery-780"><a href="#BigQuery-780"><span class="linenos">780</span></a> <span class="s2">"qualify"</span><span class="p">,</span> +</span><span id="BigQuery-781"><a href="#BigQuery-781"><span class="linenos">781</span></a> <span class="s2">"range"</span><span class="p">,</span> +</span><span id="BigQuery-782"><a href="#BigQuery-782"><span class="linenos">782</span></a> <span class="s2">"recursive"</span><span class="p">,</span> +</span><span id="BigQuery-783"><a href="#BigQuery-783"><span class="linenos">783</span></a> <span class="s2">"respect"</span><span class="p">,</span> +</span><span id="BigQuery-784"><a href="#BigQuery-784"><span class="linenos">784</span></a> <span class="s2">"right"</span><span class="p">,</span> +</span><span id="BigQuery-785"><a href="#BigQuery-785"><span class="linenos">785</span></a> <span class="s2">"rollup"</span><span class="p">,</span> +</span><span id="BigQuery-786"><a href="#BigQuery-786"><span class="linenos">786</span></a> <span class="s2">"rows"</span><span class="p">,</span> +</span><span id="BigQuery-787"><a href="#BigQuery-787"><span class="linenos">787</span></a> <span class="s2">"select"</span><span class="p">,</span> +</span><span id="BigQuery-788"><a href="#BigQuery-788"><span class="linenos">788</span></a> <span class="s2">"set"</span><span class="p">,</span> +</span><span id="BigQuery-789"><a href="#BigQuery-789"><span class="linenos">789</span></a> <span class="s2">"some"</span><span class="p">,</span> +</span><span id="BigQuery-790"><a href="#BigQuery-790"><span class="linenos">790</span></a> <span class="s2">"struct"</span><span class="p">,</span> +</span><span id="BigQuery-791"><a href="#BigQuery-791"><span class="linenos">791</span></a> <span class="s2">"tablesample"</span><span class="p">,</span> +</span><span id="BigQuery-792"><a href="#BigQuery-792"><span class="linenos">792</span></a> <span class="s2">"then"</span><span class="p">,</span> +</span><span id="BigQuery-793"><a href="#BigQuery-793"><span class="linenos">793</span></a> <span class="s2">"to"</span><span class="p">,</span> +</span><span id="BigQuery-794"><a href="#BigQuery-794"><span class="linenos">794</span></a> <span class="s2">"treat"</span><span class="p">,</span> +</span><span id="BigQuery-795"><a href="#BigQuery-795"><span class="linenos">795</span></a> <span class="s2">"true"</span><span class="p">,</span> +</span><span id="BigQuery-796"><a href="#BigQuery-796"><span class="linenos">796</span></a> <span class="s2">"unbounded"</span><span class="p">,</span> +</span><span id="BigQuery-797"><a href="#BigQuery-797"><span class="linenos">797</span></a> <span class="s2">"union"</span><span class="p">,</span> +</span><span id="BigQuery-798"><a href="#BigQuery-798"><span class="linenos">798</span></a> <span class="s2">"unnest"</span><span class="p">,</span> +</span><span id="BigQuery-799"><a href="#BigQuery-799"><span class="linenos">799</span></a> <span class="s2">"using"</span><span class="p">,</span> +</span><span id="BigQuery-800"><a href="#BigQuery-800"><span class="linenos">800</span></a> <span class="s2">"when"</span><span class="p">,</span> +</span><span id="BigQuery-801"><a href="#BigQuery-801"><span class="linenos">801</span></a> <span class="s2">"where"</span><span class="p">,</span> +</span><span id="BigQuery-802"><a href="#BigQuery-802"><span class="linenos">802</span></a> <span class="s2">"window"</span><span class="p">,</span> +</span><span id="BigQuery-803"><a href="#BigQuery-803"><span class="linenos">803</span></a> <span class="s2">"with"</span><span class="p">,</span> +</span><span id="BigQuery-804"><a href="#BigQuery-804"><span class="linenos">804</span></a> <span class="s2">"within"</span><span class="p">,</span> +</span><span id="BigQuery-805"><a href="#BigQuery-805"><span class="linenos">805</span></a> <span class="p">}</span> +</span><span id="BigQuery-806"><a href="#BigQuery-806"><span class="linenos">806</span></a> +</span><span id="BigQuery-807"><a href="#BigQuery-807"><span class="linenos">807</span></a> <span class="k">def</span> <span class="nf">mod_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Mod</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery-808"><a href="#BigQuery-808"><span class="linenos">808</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> +</span><span id="BigQuery-809"><a href="#BigQuery-809"><span class="linenos">809</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span> +</span><span id="BigQuery-810"><a href="#BigQuery-810"><span class="linenos">810</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> +</span><span id="BigQuery-811"><a href="#BigQuery-811"><span class="linenos">811</span></a> <span class="s2">"MOD"</span><span class="p">,</span> +</span><span id="BigQuery-812"><a href="#BigQuery-812"><span class="linenos">812</span></a> <span class="n">this</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">)</span> <span class="k">else</span> <span class="n">this</span><span class="p">,</span> +</span><span id="BigQuery-813"><a href="#BigQuery-813"><span class="linenos">813</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expr</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">)</span> <span class="k">else</span> <span class="n">expr</span><span class="p">,</span> +</span><span id="BigQuery-814"><a href="#BigQuery-814"><span class="linenos">814</span></a> <span class="p">)</span> +</span><span id="BigQuery-815"><a href="#BigQuery-815"><span class="linenos">815</span></a> +</span><span id="BigQuery-816"><a href="#BigQuery-816"><span class="linenos">816</span></a> <span class="k">def</span> <span class="nf">column_parts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery-817"><a href="#BigQuery-817"><span class="linenos">817</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">meta</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"quoted_column"</span><span class="p">):</span> +</span><span id="BigQuery-818"><a href="#BigQuery-818"><span class="linenos">818</span></a> <span class="c1"># If a column reference is of the form `dataset.table`.name, we need</span> +</span><span id="BigQuery-819"><a href="#BigQuery-819"><span class="linenos">819</span></a> <span class="c1"># to preserve the quoted table path, otherwise the reference breaks</span> +</span><span id="BigQuery-820"><a href="#BigQuery-820"><span class="linenos">820</span></a> <span class="n">table_parts</span> <span class="o">=</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">parts</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span> +</span><span id="BigQuery-821"><a href="#BigQuery-821"><span class="linenos">821</span></a> <span class="n">table_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">table_parts</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="BigQuery-822"><a href="#BigQuery-822"><span class="linenos">822</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">table_path</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="BigQuery-823"><a href="#BigQuery-823"><span class="linenos">823</span></a> +</span><span id="BigQuery-824"><a href="#BigQuery-824"><span class="linenos">824</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">column_parts</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="BigQuery-825"><a href="#BigQuery-825"><span class="linenos">825</span></a> +</span><span id="BigQuery-826"><a href="#BigQuery-826"><span class="linenos">826</span></a> <span class="k">def</span> <span class="nf">table_parts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery-827"><a href="#BigQuery-827"><span class="linenos">827</span></a> <span class="c1"># Depending on the context, `x.y` may not resolve to the same data source as `x`.`y`, so</span> +</span><span id="BigQuery-828"><a href="#BigQuery-828"><span class="linenos">828</span></a> <span class="c1"># we need to make sure the correct quoting is used in each case.</span> +</span><span id="BigQuery-829"><a href="#BigQuery-829"><span class="linenos">829</span></a> <span class="c1">#</span> +</span><span id="BigQuery-830"><a href="#BigQuery-830"><span class="linenos">830</span></a> <span class="c1"># For example, if there is a CTE x that clashes with a schema name, then the former will</span> +</span><span id="BigQuery-831"><a href="#BigQuery-831"><span class="linenos">831</span></a> <span class="c1"># return the table y in that schema, whereas the latter will return the CTE's y column:</span> +</span><span id="BigQuery-832"><a href="#BigQuery-832"><span class="linenos">832</span></a> <span class="c1">#</span> +</span><span id="BigQuery-833"><a href="#BigQuery-833"><span class="linenos">833</span></a> <span class="c1"># - WITH x AS (SELECT [1, 2] AS y) SELECT * FROM x, `x.y` -> cross join</span> +</span><span id="BigQuery-834"><a href="#BigQuery-834"><span class="linenos">834</span></a> <span class="c1"># - WITH x AS (SELECT [1, 2] AS y) SELECT * FROM x, `x`.`y` -> implicit unnest</span> +</span><span id="BigQuery-835"><a href="#BigQuery-835"><span class="linenos">835</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">meta</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"quoted_table"</span><span class="p">):</span> +</span><span id="BigQuery-836"><a href="#BigQuery-836"><span class="linenos">836</span></a> <span class="n">table_parts</span> <span class="o">=</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">parts</span><span class="p">)</span> +</span><span id="BigQuery-837"><a href="#BigQuery-837"><span class="linenos">837</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">table_parts</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="BigQuery-838"><a href="#BigQuery-838"><span class="linenos">838</span></a> +</span><span id="BigQuery-839"><a href="#BigQuery-839"><span class="linenos">839</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">table_parts</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="BigQuery-840"><a href="#BigQuery-840"><span class="linenos">840</span></a> +</span><span id="BigQuery-841"><a href="#BigQuery-841"><span class="linenos">841</span></a> <span class="k">def</span> <span class="nf">timetostr_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery-842"><a href="#BigQuery-842"><span class="linenos">842</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</span><span class="p">)</span> <span class="k">else</span> <span class="n">expression</span> +</span><span id="BigQuery-843"><a href="#BigQuery-843"><span class="linenos">843</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"FORMAT_DATE"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">),</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="BigQuery-844"><a href="#BigQuery-844"><span class="linenos">844</span></a> +</span><span id="BigQuery-845"><a href="#BigQuery-845"><span class="linenos">845</span></a> <span class="k">def</span> <span class="nf">eq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery-846"><a href="#BigQuery-846"><span class="linenos">846</span></a> <span class="c1"># Operands of = cannot be NULL in BigQuery</span> +</span><span id="BigQuery-847"><a href="#BigQuery-847"><span class="linenos">847</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">left</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">right</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">):</span> +</span><span id="BigQuery-848"><a href="#BigQuery-848"><span class="linenos">848</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">):</span> +</span><span id="BigQuery-849"><a href="#BigQuery-849"><span class="linenos">849</span></a> <span class="k">return</span> <span class="s2">"NULL"</span> +</span><span id="BigQuery-850"><a href="#BigQuery-850"><span class="linenos">850</span></a> +</span><span id="BigQuery-851"><a href="#BigQuery-851"><span class="linenos">851</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"="</span><span class="p">)</span> +</span><span id="BigQuery-852"><a href="#BigQuery-852"><span class="linenos">852</span></a> +</span><span id="BigQuery-853"><a href="#BigQuery-853"><span class="linenos">853</span></a> <span class="k">def</span> <span class="nf">attimezone_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery-854"><a href="#BigQuery-854"><span class="linenos">854</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">parent</span> +</span><span id="BigQuery-855"><a href="#BigQuery-855"><span class="linenos">855</span></a> +</span><span id="BigQuery-856"><a href="#BigQuery-856"><span class="linenos">856</span></a> <span class="c1"># BigQuery allows CAST(.. AS {STRING|TIMESTAMP} [FORMAT <fmt> [AT TIME ZONE <tz>]]).</span> +</span><span id="BigQuery-857"><a href="#BigQuery-857"><span class="linenos">857</span></a> <span class="c1"># Only the TIMESTAMP one should use the below conversion, when AT TIME ZONE is included.</span> +</span><span id="BigQuery-858"><a href="#BigQuery-858"><span class="linenos">858</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">parent</span><span class="o">.</span><span class="n">to</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"text"</span><span class="p">):</span> +</span><span id="BigQuery-859"><a href="#BigQuery-859"><span class="linenos">859</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> +</span><span id="BigQuery-860"><a href="#BigQuery-860"><span class="linenos">860</span></a> <span class="s2">"TIMESTAMP"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"DATETIME"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"zone"</span><span class="p">))</span> +</span><span id="BigQuery-861"><a href="#BigQuery-861"><span class="linenos">861</span></a> <span class="p">)</span> +</span><span id="BigQuery-862"><a href="#BigQuery-862"><span class="linenos">862</span></a> +</span><span id="BigQuery-863"><a href="#BigQuery-863"><span class="linenos">863</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">attimezone_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="BigQuery-864"><a href="#BigQuery-864"><span class="linenos">864</span></a> +</span><span id="BigQuery-865"><a href="#BigQuery-865"><span class="linenos">865</span></a> <span class="k">def</span> <span class="nf">trycast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery-866"><a href="#BigQuery-866"><span class="linenos">866</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">safe_prefix</span><span class="o">=</span><span class="s2">"SAFE_"</span><span class="p">)</span> +</span><span id="BigQuery-867"><a href="#BigQuery-867"><span class="linenos">867</span></a> +</span><span id="BigQuery-868"><a href="#BigQuery-868"><span class="linenos">868</span></a> <span class="k">def</span> <span class="nf">bracket_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Bracket</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery-869"><a href="#BigQuery-869"><span class="linenos">869</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> +</span><span id="BigQuery-870"><a href="#BigQuery-870"><span class="linenos">870</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="BigQuery-871"><a href="#BigQuery-871"><span class="linenos">871</span></a> +</span><span id="BigQuery-872"><a href="#BigQuery-872"><span class="linenos">872</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">and</span> <span class="n">this</span> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">STRUCT</span><span class="p">):</span> +</span><span id="BigQuery-873"><a href="#BigQuery-873"><span class="linenos">873</span></a> <span class="n">arg</span> <span class="o">=</span> <span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> +</span><span id="BigQuery-874"><a href="#BigQuery-874"><span class="linenos">874</span></a> <span class="k">if</span> <span class="n">arg</span><span class="o">.</span><span class="n">type</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="BigQuery-875"><a href="#BigQuery-875"><span class="linenos">875</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span> +</span><span id="BigQuery-876"><a href="#BigQuery-876"><span class="linenos">876</span></a> +</span><span id="BigQuery-877"><a href="#BigQuery-877"><span class="linenos">877</span></a> <span class="n">arg</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> +</span><span id="BigQuery-878"><a href="#BigQuery-878"><span class="linenos">878</span></a> +</span><span id="BigQuery-879"><a href="#BigQuery-879"><span class="linenos">879</span></a> <span class="k">if</span> <span class="n">arg</span><span class="o">.</span><span class="n">type</span> <span class="ow">and</span> <span class="n">arg</span><span class="o">.</span><span class="n">type</span><span class="o">.</span><span class="n">this</span> <span class="ow">in</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">TEXT_TYPES</span><span class="p">:</span> +</span><span id="BigQuery-880"><a href="#BigQuery-880"><span class="linenos">880</span></a> <span class="c1"># BQ doesn't support bracket syntax with string values for structs</span> +</span><span id="BigQuery-881"><a href="#BigQuery-881"><span class="linenos">881</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">arg</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> +</span><span id="BigQuery-882"><a href="#BigQuery-882"><span class="linenos">882</span></a> +</span><span id="BigQuery-883"><a href="#BigQuery-883"><span class="linenos">883</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="BigQuery-884"><a href="#BigQuery-884"><span class="linenos">884</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"offset"</span><span class="p">)</span> +</span><span id="BigQuery-885"><a href="#BigQuery-885"><span class="linenos">885</span></a> +</span><span id="BigQuery-886"><a href="#BigQuery-886"><span class="linenos">886</span></a> <span class="k">if</span> <span class="n">offset</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> +</span><span id="BigQuery-887"><a href="#BigQuery-887"><span class="linenos">887</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"OFFSET(</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="BigQuery-888"><a href="#BigQuery-888"><span class="linenos">888</span></a> <span class="k">elif</span> <span class="n">offset</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="BigQuery-889"><a href="#BigQuery-889"><span class="linenos">889</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"ORDINAL(</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="BigQuery-890"><a href="#BigQuery-890"><span class="linenos">890</span></a> <span class="k">elif</span> <span class="n">offset</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="BigQuery-891"><a href="#BigQuery-891"><span class="linenos">891</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported array offset: </span><span class="si">{</span><span class="n">offset</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="BigQuery-892"><a href="#BigQuery-892"><span class="linenos">892</span></a> +</span><span id="BigQuery-893"><a href="#BigQuery-893"><span class="linenos">893</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"safe"</span><span class="p">):</span> +</span><span id="BigQuery-894"><a href="#BigQuery-894"><span class="linenos">894</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"SAFE_</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="BigQuery-895"><a href="#BigQuery-895"><span class="linenos">895</span></a> +</span><span id="BigQuery-896"><a href="#BigQuery-896"><span class="linenos">896</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">]"</span> +</span><span id="BigQuery-897"><a href="#BigQuery-897"><span class="linenos">897</span></a> +</span><span id="BigQuery-898"><a href="#BigQuery-898"><span class="linenos">898</span></a> <span class="k">def</span> <span class="nf">in_unnest_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery-899"><a href="#BigQuery-899"><span class="linenos">899</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="BigQuery-900"><a href="#BigQuery-900"><span class="linenos">900</span></a> +</span><span id="BigQuery-901"><a href="#BigQuery-901"><span class="linenos">901</span></a> <span class="k">def</span> <span class="nf">except_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Except</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery-902"><a href="#BigQuery-902"><span class="linenos">902</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"distinct"</span><span class="p">):</span> +</span><span id="BigQuery-903"><a href="#BigQuery-903"><span class="linenos">903</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"EXCEPT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> +</span><span id="BigQuery-904"><a href="#BigQuery-904"><span class="linenos">904</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXCEPT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> +</span><span id="BigQuery-905"><a href="#BigQuery-905"><span class="linenos">905</span></a> +</span><span id="BigQuery-906"><a href="#BigQuery-906"><span class="linenos">906</span></a> <span class="k">def</span> <span class="nf">intersect_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Intersect</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery-907"><a href="#BigQuery-907"><span class="linenos">907</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"distinct"</span><span class="p">):</span> +</span><span id="BigQuery-908"><a href="#BigQuery-908"><span class="linenos">908</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"INTERSECT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> +</span><span id="BigQuery-909"><a href="#BigQuery-909"><span class="linenos">909</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"INTERSECT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> +</span><span id="BigQuery-910"><a href="#BigQuery-910"><span class="linenos">910</span></a> +</span><span id="BigQuery-911"><a href="#BigQuery-911"><span class="linenos">911</span></a> <span class="k">def</span> <span class="nf">version_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Version</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery-912"><a href="#BigQuery-912"><span class="linenos">912</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"TIMESTAMP"</span><span class="p">:</span> +</span><span id="BigQuery-913"><a href="#BigQuery-913"><span class="linenos">913</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="s2">"SYSTEM_TIME"</span><span class="p">)</span> +</span><span id="BigQuery-914"><a href="#BigQuery-914"><span class="linenos">914</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">version_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -2180,7 +2178,7 @@ If empty, the corresponding trie will be constructed off of <code><a href="#BigQ <div id="BigQuery.PSEUDOCOLUMNS" class="classattr"> <div class="attr variable"> <span class="name">PSEUDOCOLUMNS</span><span class="annotation">: Set[str]</span> = -<span class="default_value">{'_PARTITIONDATE', '_PARTITIONTIME'}</span> +<span class="default_value">{'_PARTITIONTIME', '_PARTITIONDATE'}</span> </div> @@ -3038,7 +3036,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">FUNCTIONS</span> = <input id="BigQuery.Parser.FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="BigQuery.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <function _build_date>, 'DATE_ADD': <function build_date_delta_with_interval.<locals>._builder>, 'DATEDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <function build_date_delta_with_interval.<locals>._builder>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'DATETIME_ADD': <function build_date_delta_with_interval.<locals>._builder>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <function build_date_delta_with_interval.<locals>._builder>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <function build_date_delta_with_interval.<locals>._builder>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <function build_date_delta_with_interval.<locals>._builder>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <function _build_timestamp>, 'TIMESTAMP_ADD': <function build_date_delta_with_interval.<locals>._builder>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <function build_date_delta_with_interval.<locals>._builder>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function _build_to_hex>, 'DIV': <function binary_from_function.<locals>.<lambda>>, 'FORMAT_DATE': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'GENERATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'PARSE_DATE': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'PARSE_TIMESTAMP': <function _build_parse_timestamp>, 'REGEXP_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'SHA256': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'SHA512': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'TIME': <function _build_time>, 'TIMESTAMP_MICROS': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'TIMESTAMP_MILLIS': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'TIMESTAMP_SECONDS': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'TO_JSON_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>}</span> + <label class="view-value-button pdoc-button" for="BigQuery.Parser.FUNCTIONS-view-value"></label><span class="default_value">{'ABS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>'>>, 'ADD_MONTHS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AddMonths">sqlglot.expressions.AddMonths</a>'>>, 'ANONYMOUS_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnonymousAggFunc">sqlglot.expressions.AnonymousAggFunc</a>'>>, 'ANY_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>'>>, 'APPROX_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_COUNT_DISTINCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>'>>, 'APPROX_QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>'>>, 'APPROX_TOP_K': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ApproxTopK">sqlglot.expressions.ApproxTopK</a>'>>, 'ARG_MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARGMAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'MAX_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMax">sqlglot.expressions.ArgMax</a>'>>, 'ARG_MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARGMIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'MIN_BY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArgMin">sqlglot.expressions.ArgMin</a>'>>, 'ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Array">sqlglot.expressions.Array</a>'>>, 'ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>'>>, 'ARRAY_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>'>>, 'ARRAY_ANY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>'>>, 'ARRAY_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>'>>, 'ARRAY_CONSTRUCT_COMPACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayConstructCompact">sqlglot.expressions.ArrayConstructCompact</a>'>>, 'ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_HAS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>'>>, 'ARRAY_CONTAINS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'ARRAY_HAS_ALL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayContainsAll">sqlglot.expressions.ArrayContainsAll</a>'>>, 'FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_FILTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>'>>, 'ARRAY_OVERLAPS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayOverlaps">sqlglot.expressions.ArrayOverlaps</a>'>>, 'ARRAY_SIZE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>'>>, 'ARRAY_SORT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>'>>, 'ARRAY_SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>'>>, 'ARRAY_TO_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_JOIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayToString">sqlglot.expressions.ArrayToString</a>'>>, 'ARRAY_UNION_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>'>>, 'ARRAY_UNIQUE_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ArrayUniqueAgg">sqlglot.expressions.ArrayUniqueAgg</a>'>>, 'AVG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>'>>, 'CASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Case">sqlglot.expressions.Case</a>'>>, 'CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>'>>, 'CAST_TO_STR_TYPE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>'>>, 'CBRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Cbrt">sqlglot.expressions.Cbrt</a>'>>, 'CEIL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CEILING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>'>>, 'CHR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Chr">sqlglot.expressions.Chr</a>'>>, 'COALESCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'IFNULL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'NVL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>'>>, 'COLLATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Collate">sqlglot.expressions.Collate</a>'>>, 'COMBINED_AGG_FUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedAggFunc">sqlglot.expressions.CombinedAggFunc</a>'>>, 'COMBINED_PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CombinedParameterizedAgg">sqlglot.expressions.CombinedParameterizedAgg</a>'>>, 'CONCAT': <function Parser.<lambda>>, 'CONCAT_WS': <function Parser.<lambda>>, 'CONNECT_BY_ROOT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ConnectByRoot">sqlglot.expressions.ConnectByRoot</a>'>>, 'CONVERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Convert">sqlglot.expressions.Convert</a>'>>, 'CORR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Corr">sqlglot.expressions.Corr</a>'>>, 'COUNT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Count">sqlglot.expressions.Count</a>'>>, 'COUNT_IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COUNTIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>'>>, 'COVAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarPop">sqlglot.expressions.CovarPop</a>'>>, 'COVAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CovarSamp">sqlglot.expressions.CovarSamp</a>'>>, 'CURRENT_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>'>>, 'CURRENT_DATETIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>'>>, 'CURRENT_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>'>>, 'CURRENT_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>'>>, 'CURRENT_USER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>'>>, 'DATE': <function _build_date>, 'DATE_ADD': <function build_date_delta_with_interval.<locals>._builder>, 'DATEDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>'>>, 'DATE_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>'>>, 'DATE_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>'>>, 'DATE_SUB': <function build_date_delta_with_interval.<locals>._builder>, 'DATE_TO_DATE_STR': <function Parser.<lambda>>, 'DATE_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>'>>, 'DATE_TRUNC': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'DATETIME_ADD': <function build_date_delta_with_interval.<locals>._builder>, 'DATETIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>'>>, 'DATETIME_SUB': <function build_date_delta_with_interval.<locals>._builder>, 'DATETIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>'>>, 'DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Day">sqlglot.expressions.Day</a>'>>, 'DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAYOFMONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>'>>, 'DAY_OF_WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAYOFWEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>'>>, 'DAY_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DAYOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>'>>, 'DECODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>'>>, 'DI_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>'>>, 'ENCODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>'>>, 'EXP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>'>>, 'EXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>'>>, 'EXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ExplodeOuter">sqlglot.expressions.ExplodeOuter</a>'>>, 'EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>'>>, 'FIRST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#First">sqlglot.expressions.First</a>'>>, 'FIRST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FirstValue">sqlglot.expressions.FirstValue</a>'>>, 'FLATTEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Flatten">sqlglot.expressions.Flatten</a>'>>, 'FLOOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>'>>, 'FROM_BASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>'>>, 'FROM_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>'>>, 'GAP_FILL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GapFill">sqlglot.expressions.GapFill</a>'>>, 'GENERATE_DATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateDateArray">sqlglot.expressions.GenerateDateArray</a>'>>, 'GENERATE_SERIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'GREATEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>'>>, 'GROUP_CONCAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>'>>, 'HEX': <function build_hex>, 'HLL': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>'>>, 'IF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'IIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#If">sqlglot.expressions.If</a>'>>, 'INITCAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>'>>, 'IS_INF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'ISINF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsInf">sqlglot.expressions.IsInf</a>'>>, 'IS_NAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'ISNAN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#IsNan">sqlglot.expressions.IsNan</a>'>>, 'J_S_O_N_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArray">sqlglot.expressions.JSONArray</a>'>>, 'J_S_O_N_ARRAY_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayAgg">sqlglot.expressions.JSONArrayAgg</a>'>>, 'JSON_ARRAY_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>'>>, 'JSONB_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>'>>, 'JSONB_EXTRACT_SCALAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>'>>, 'JSON_EXTRACT': <function build_extract_json_with_path.<locals>._builder>, 'JSON_EXTRACT_SCALAR': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'JSON_FORMAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>, 'J_S_O_N_OBJECT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>'>>, 'J_S_O_N_OBJECT_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONObjectAgg">sqlglot.expressions.JSONObjectAgg</a>'>>, 'J_S_O_N_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONTable">sqlglot.expressions.JSONTable</a>'>>, 'LAG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lag">sqlglot.expressions.Lag</a>'>>, 'LAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Last">sqlglot.expressions.Last</a>'>>, 'LAST_DAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_DAY_OF_MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastDay">sqlglot.expressions.LastDay</a>'>>, 'LAST_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LastValue">sqlglot.expressions.LastValue</a>'>>, 'LEAD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lead">sqlglot.expressions.Lead</a>'>>, 'LEAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Least">sqlglot.expressions.Least</a>'>>, 'LEFT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Left">sqlglot.expressions.Left</a>'>>, 'LENGTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Length">sqlglot.expressions.Length</a>'>>, 'LEVENSHTEIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>'>>, 'LN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>'>>, 'LOG': <function build_logarithm>, 'LOGICAL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOL_AND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'BOOLAND_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>'>>, 'LOGICAL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOL_OR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'BOOLOR_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>'>>, 'LOWER': <function build_lower>, 'LCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>'>>, 'LOWER_HEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#LowerHex">sqlglot.expressions.LowerHex</a>'>>, 'MD5': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MD5_DIGEST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MD5Digest">sqlglot.expressions.MD5Digest</a>'>>, 'MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Map">sqlglot.expressions.Map</a>'>>, 'MAP_FROM_ENTRIES': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>'>>, 'MATCH_AGAINST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>'>>, 'MAX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Max">sqlglot.expressions.Max</a>'>>, 'MIN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Min">sqlglot.expressions.Min</a>'>>, 'MONTH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Month">sqlglot.expressions.Month</a>'>>, 'MONTHS_BETWEEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#MonthsBetween">sqlglot.expressions.MonthsBetween</a>'>>, 'NEXT_VALUE_FOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>'>>, 'NTH_VALUE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NthValue">sqlglot.expressions.NthValue</a>'>>, 'NULLIF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nullif">sqlglot.expressions.Nullif</a>'>>, 'NUMBER_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>'>>, 'NVL2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>'>>, 'OPEN_J_S_O_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>'>>, 'PARAMETERIZED_AGG': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>'>>, 'PARSE_JSON': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'JSON_PARSE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ParseJSON">sqlglot.expressions.ParseJSON</a>'>>, 'PERCENTILE_CONT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>'>>, 'PERCENTILE_DISC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>'>>, 'POSEXPLODE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>'>>, 'POSEXPLODE_OUTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#PosexplodeOuter">sqlglot.expressions.PosexplodeOuter</a>'>>, 'POWER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'POW': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>'>>, 'PREDICT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Predict">sqlglot.expressions.Predict</a>'>>, 'QUANTILE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>'>>, 'QUARTER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Quarter">sqlglot.expressions.Quarter</a>'>>, 'RAND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDOM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Rand">sqlglot.expressions.Rand</a>'>>, 'RANDN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Randn">sqlglot.expressions.Randn</a>'>>, 'RANGE_N': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>'>>, 'READ_CSV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>'>>, 'REDUCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>'>>, 'REGEXP_EXTRACT': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'REGEXP_I_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>'>>, 'REGEXP_LIKE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'REGEXP_REPLACE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpReplace">sqlglot.expressions.RegexpReplace</a>'>>, 'REGEXP_SPLIT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>'>>, 'REPEAT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>'>>, 'RIGHT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Right">sqlglot.expressions.Right</a>'>>, 'ROUND': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Round">sqlglot.expressions.Round</a>'>>, 'ROW_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>'>>, 'SHA': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA1': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>'>>, 'SHA2': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>'>>, 'SAFE_DIVIDE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>'>>, 'SIGN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SIGNUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sign">sqlglot.expressions.Sign</a>'>>, 'SORT_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>'>>, 'SPLIT': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'SQRT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>'>>, 'STANDARD_HASH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>'>>, 'STAR_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>'>>, 'STARTS_WITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STARTSWITH': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StartsWith">sqlglot.expressions.StartsWith</a>'>>, 'STDDEV': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>'>>, 'STDDEV_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>'>>, 'STDDEV_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>'>>, 'STR_POSITION': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>'>>, 'STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>'>>, 'STR_TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToMap">sqlglot.expressions.StrToMap</a>'>>, 'STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>'>>, 'STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>'>>, 'STRING_TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'SPLIT_BY_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StringToArray">sqlglot.expressions.StringToArray</a>'>>, 'STRUCT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>'>>, 'STRUCT_EXTRACT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>'>>, 'STUFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'INSERT': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Stuff">sqlglot.expressions.Stuff</a>'>>, 'SUBSTRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>'>>, 'SUM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>'>>, 'TIME_ADD': <function build_date_delta_with_interval.<locals>._builder>, 'TIME_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>'>>, 'TIME_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIMEFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeFromParts">sqlglot.expressions.TimeFromParts</a>'>>, 'TIME_STR_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>'>>, 'TIME_STR_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>'>>, 'TIME_STR_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>'>>, 'TIME_SUB': <function build_date_delta_with_interval.<locals>._builder>, 'TIME_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>'>>, 'TIME_TO_TIME_STR': <function Parser.<lambda>>, 'TIME_TO_UNIX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>'>>, 'TIME_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>'>>, 'TIMESTAMP': <function _build_timestamp>, 'TIMESTAMP_ADD': <function build_date_delta_with_interval.<locals>._builder>, 'TIMESTAMPDIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>'>>, 'TIMESTAMP_FROM_PARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMPFROMPARTS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampFromParts">sqlglot.expressions.TimestampFromParts</a>'>>, 'TIMESTAMP_SUB': <function build_date_delta_with_interval.<locals>._builder>, 'TIMESTAMP_TRUNC': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>'>>, 'TO_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToArray">sqlglot.expressions.ToArray</a>'>>, 'TO_BASE64': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>'>>, 'TO_CHAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToChar">sqlglot.expressions.ToChar</a>'>>, 'TO_DAYS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToDays">sqlglot.expressions.ToDays</a>'>>, 'TO_MAP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToMap">sqlglot.expressions.ToMap</a>'>>, 'TO_NUMBER': <bound method Func.from_arg_list of <class '<a href="../expressions.html#ToNumber">sqlglot.expressions.ToNumber</a>'>>, 'TRANSFORM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Transform">sqlglot.expressions.Transform</a>'>>, 'TRIM': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>'>>, 'TRY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Try">sqlglot.expressions.Try</a>'>>, 'TRY_CAST': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>'>>, 'TS_OR_DI_TO_DI': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>'>>, 'TS_OR_DS_ADD': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>'>>, 'TS_OR_DS_DIFF': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsDiff">sqlglot.expressions.TsOrDsDiff</a>'>>, 'TS_OR_DS_TO_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>'>>, 'TS_OR_DS_TO_DATE_STR': <function Parser.<lambda>>, 'TS_OR_DS_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTime">sqlglot.expressions.TsOrDsToTime</a>'>>, 'TS_OR_DS_TO_TIMESTAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#TsOrDsToTimestamp">sqlglot.expressions.TsOrDsToTimestamp</a>'>>, 'UNHEX': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>'>>, 'UNIX_DATE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixDate">sqlglot.expressions.UnixDate</a>'>>, 'UNIX_TO_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>'>>, 'UNIX_TO_TIME': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>'>>, 'UNIX_TO_TIME_STR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>'>>, 'UPPER': <function build_upper>, 'UCASE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>'>>, 'VAR_MAP': <function build_var_map>, 'VARIANCE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VAR_SAMP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>'>>, 'VARIANCE_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'VAR_POP': <bound method Func.from_arg_list of <class '<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>'>>, 'WEEK': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Week">sqlglot.expressions.Week</a>'>>, 'WEEK_OF_YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WEEKOFYEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>'>>, 'WHEN': <bound method Func.from_arg_list of <class '<a href="../expressions.html#When">sqlglot.expressions.When</a>'>>, 'X_M_L_TABLE': <bound method Func.from_arg_list of <class '<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>'>>, 'XOR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Xor">sqlglot.expressions.Xor</a>'>>, 'YEAR': <bound method Func.from_arg_list of <class '<a href="../expressions.html#Year">sqlglot.expressions.Year</a>'>>, 'GLOB': <function Parser.<lambda>>, 'JSON_EXTRACT_PATH_TEXT': <function build_extract_json_with_path.<locals>._builder>, 'LIKE': <function build_like>, 'LOG2': <function Parser.<lambda>>, 'LOG10': <function Parser.<lambda>>, 'MOD': <function build_mod>, 'TO_HEX': <function _build_to_hex>, 'DIV': <function binary_from_function.<locals>.<lambda>>, 'FORMAT_DATE': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'GENERATE_ARRAY': <bound method Func.from_arg_list of <class '<a href="../expressions.html#GenerateSeries">sqlglot.expressions.GenerateSeries</a>'>>, 'PARSE_DATE': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'PARSE_TIMESTAMP': <function _build_parse_timestamp>, 'REGEXP_CONTAINS': <bound method Func.from_arg_list of <class '<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>'>>, 'SHA256': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'SHA512': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'TIME': <function _build_time>, 'TIMESTAMP_MICROS': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'TIMESTAMP_MILLIS': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'TIMESTAMP_SECONDS': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>, 'TO_JSON_STRING': <bound method Func.from_arg_list of <class '<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>'>>}</span> </div> @@ -3051,7 +3049,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">FUNCTION_PARSERS</span> = <input id="BigQuery.Parser.FUNCTION_PARSERS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="BigQuery.Parser.FUNCTION_PARSERS-view-value"></label><span class="default_value">{'CAST': <function Parser.<lambda>>, 'CONVERT': <function Parser.<lambda>>, 'DECODE': <function Parser.<lambda>>, 'EXTRACT': <function Parser.<lambda>>, 'JSON_OBJECT': <function Parser.<lambda>>, 'JSON_OBJECTAGG': <function Parser.<lambda>>, 'JSON_TABLE': <function Parser.<lambda>>, 'MATCH': <function Parser.<lambda>>, 'OPENJSON': <function Parser.<lambda>>, 'POSITION': <function Parser.<lambda>>, 'PREDICT': <function Parser.<lambda>>, 'SAFE_CAST': <function Parser.<lambda>>, 'STRING_AGG': <function Parser.<lambda>>, 'SUBSTRING': <function Parser.<lambda>>, 'TRY_CAST': <function Parser.<lambda>>, 'TRY_CONVERT': <function Parser.<lambda>>, 'ARRAY': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>}</span> + <label class="view-value-button pdoc-button" for="BigQuery.Parser.FUNCTION_PARSERS-view-value"></label><span class="default_value">{'CAST': <function Parser.<lambda>>, 'CONVERT': <function Parser.<lambda>>, 'DECODE': <function Parser.<lambda>>, 'EXTRACT': <function Parser.<lambda>>, 'GAP_FILL': <function Parser.<lambda>>, 'JSON_OBJECT': <function Parser.<lambda>>, 'JSON_OBJECTAGG': <function Parser.<lambda>>, 'JSON_TABLE': <function Parser.<lambda>>, 'MATCH': <function Parser.<lambda>>, 'OPENJSON': <function Parser.<lambda>>, 'POSITION': <function Parser.<lambda>>, 'PREDICT': <function Parser.<lambda>>, 'SAFE_CAST': <function Parser.<lambda>>, 'STRING_AGG': <function Parser.<lambda>>, 'SUBSTRING': <function Parser.<lambda>>, 'TRY_CAST': <function Parser.<lambda>>, 'TRY_CONVERT': <function Parser.<lambda>>, 'ARRAY': <function <a href="#BigQuery.Parser">BigQuery.Parser</a>.<lambda>>}</span> </div> @@ -3077,7 +3075,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">NESTED_TYPE_TOKENS</span> = <input id="BigQuery.Parser.NESTED_TYPE_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="BigQuery.Parser.NESTED_TYPE_TOKENS-view-value"></label><span class="default_value">{<TokenType.NESTED: 'NESTED'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.MAP: 'MAP'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.TABLE: 'TABLE'>}</span> + <label class="view-value-button pdoc-button" for="BigQuery.Parser.NESTED_TYPE_TOKENS-view-value"></label><span class="default_value">{<TokenType.MAP: 'MAP'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.NULLABLE: 'NULLABLE'>}</span> </div> @@ -3166,7 +3164,7 @@ Default: 3</li> <div class="attr variable"> <span class="name">TABLE_ALIAS_TOKENS</span> = <input id="BigQuery.Parser.TABLE_ALIAS_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="BigQuery.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.DATETIME64: 'DATETIME64'>, <TokenType.CASE: 'CASE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.FILTER: 'FILTER'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.ANY: 'ANY'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.IS: 'IS'>, <TokenType.SUPER: 'SUPER'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.FIRST: 'FIRST'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.DESC: 'DESC'>, <TokenType.UINT: 'UINT'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.IPV4: 'IPV4'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.MONEY: 'MONEY'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.SHOW: 'SHOW'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.TABLE: 'TABLE'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.USE: 'USE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.XML: 'XML'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.MAP: 'MAP'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.INT256: 'INT256'>, <TokenType.VIEW: 'VIEW'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.JSON: 'JSON'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.COPY: 'COPY'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.NEXT: 'NEXT'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TOP: 'TOP'>, <TokenType.LOAD: 'LOAD'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.BIT: 'BIT'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BINARY: 'BINARY'>, <TokenType.DATE32: 'DATE32'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.ALL: 'ALL'>, <TokenType.RANGE: 'RANGE'>, <TokenType.INT128: 'INT128'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.YEAR: 'YEAR'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.ROW: 'ROW'>, <TokenType.UINT256: 'UINT256'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.JSONB: 'JSONB'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.MODEL: 'MODEL'>, <TokenType.DEFAULT: 'DEFAULT'>, <TokenType.INDEX: 'INDEX'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.TRUE: 'TRUE'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.CHAR: 'CHAR'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.TAG: 'TAG'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.SET: 'SET'>, <TokenType.ROWS: 'ROWS'>, <TokenType.TEXT: 'TEXT'>, <TokenType.SEMI: 'SEMI'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.FINAL: 'FINAL'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.END: 'END'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.MERGE: 'MERGE'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.FALSE: 'FALSE'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.NULL: 'NULL'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.UUID: 'UUID'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.UINT128: 'UINT128'>, <TokenType.NAME: 'NAME'>, <TokenType.ASC: 'ASC'>, <TokenType.INT: 'INT'>, <TokenType.KEEP: 'KEEP'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.KILL: 'KILL'>, <TokenType.FLOAT: 'FLOAT'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.DATE: 'DATE'>, <TokenType.SOME: 'SOME'>, <TokenType.DELETE: 'DELETE'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.DIV: 'DIV'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.TIME: 'TIME'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.IPV6: 'IPV6'>, <TokenType.VAR: 'VAR'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.ANTI: 'ANTI'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.INET: 'INET'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.CACHE: 'CACHE'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.INT4RANGE: 'INT4RANGE'>}</span> + <label class="view-value-button pdoc-button" for="BigQuery.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{<TokenType.DEFAULT: 'DEFAULT'>, <TokenType.AUTO_INCREMENT: 'AUTO_INCREMENT'>, <TokenType.SHOW: 'SHOW'>, <TokenType.IMAGE: 'IMAGE'>, <TokenType.NESTED: 'NESTED'>, <TokenType.SEMI: 'SEMI'>, <TokenType.CHAR: 'CHAR'>, <TokenType.IPPREFIX: 'IPPREFIX'>, <TokenType.DIV: 'DIV'>, <TokenType.BEGIN: 'BEGIN'>, <TokenType.IPADDRESS: 'IPADDRESS'>, <TokenType.PERCENT: 'PERCENT'>, <TokenType.NCHAR: 'NCHAR'>, <TokenType.EXECUTE: 'EXECUTE'>, <TokenType.ANTI: 'ANTI'>, <TokenType.VOLATILE: 'VOLATILE'>, <TokenType.UNNEST: 'UNNEST'>, <TokenType.PSEUDO_TYPE: 'PSEUDO_TYPE'>, <TokenType.SUPER: 'SUPER'>, <TokenType.MONEY: 'MONEY'>, <TokenType.TRUE: 'TRUE'>, <TokenType.IPV6: 'IPV6'>, <TokenType.UPDATE: 'UPDATE'>, <TokenType.SEQUENCE: 'SEQUENCE'>, <TokenType.ENUM8: 'ENUM8'>, <TokenType.MODEL: 'MODEL'>, <TokenType.ASC: 'ASC'>, <TokenType.FALSE: 'FALSE'>, <TokenType.INET: 'INET'>, <TokenType.MEDIUMTEXT: 'MEDIUMTEXT'>, <TokenType.BIGSERIAL: 'BIGSERIAL'>, <TokenType.HLLSKETCH: 'HLLSKETCH'>, <TokenType.TIME: 'TIME'>, <TokenType.MAP: 'MAP'>, <TokenType.TIMESTAMP_MS: 'TIMESTAMP_MS'>, <TokenType.DECIMAL: 'DECIMAL'>, <TokenType.FOREIGN_KEY: 'FOREIGN_KEY'>, <TokenType.OBJECT_IDENTIFIER: 'OBJECT_IDENTIFIER'>, <TokenType.SOME: 'SOME'>, <TokenType.INT8RANGE: 'INT8RANGE'>, <TokenType.GEOGRAPHY: 'GEOGRAPHY'>, <TokenType.VARBINARY: 'VARBINARY'>, <TokenType.TIMESTAMPLTZ: 'TIMESTAMPLTZ'>, <TokenType.CURRENT_DATETIME: 'CURRENT_DATETIME'>, <TokenType.COLLATE: 'COLLATE'>, <TokenType.PROCEDURE: 'PROCEDURE'>, <TokenType.TSRANGE: 'TSRANGE'>, <TokenType.ENUM16: 'ENUM16'>, <TokenType.TIMESTAMPTZ: 'TIMESTAMPTZ'>, <TokenType.CASE: 'CASE'>, <TokenType.INT4MULTIRANGE: 'INT4MULTIRANGE'>, <TokenType.TSMULTIRANGE: 'TSMULTIRANGE'>, <TokenType.CURRENT_TIMESTAMP: 'CURRENT_TIMESTAMP'>, <TokenType.BINARY: 'BINARY'>, <TokenType.COMMIT: 'COMMIT'>, <TokenType.TIMESTAMP_S: 'TIMESTAMP_S'>, <TokenType.DICTIONARY: 'DICTIONARY'>, <TokenType.SMALLMONEY: 'SMALLMONEY'>, <TokenType.TIMESTAMP_NS: 'TIMESTAMP_NS'>, <TokenType.UINT: 'UINT'>, <TokenType.NUMMULTIRANGE: 'NUMMULTIRANGE'>, <TokenType.ALL: 'ALL'>, <TokenType.NVARCHAR: 'NVARCHAR'>, <TokenType.TINYTEXT: 'TINYTEXT'>, <TokenType.ENUM: 'ENUM'>, <TokenType.FILTER: 'FILTER'>, <TokenType.SCHEMA: 'SCHEMA'>, <TokenType.DOUBLE: 'DOUBLE'>, <TokenType.PIVOT: 'PIVOT'>, <TokenType.EXISTS: 'EXISTS'>, <TokenType.UDECIMAL: 'UDECIMAL'>, <TokenType.SMALLSERIAL: 'SMALLSERIAL'>, <TokenType.DATE: 'DATE'>, <TokenType.BOOLEAN: 'BOOLEAN'>, <TokenType.BPCHAR: 'BPCHAR'>, <TokenType.OVERWRITE: 'OVERWRITE'>, <TokenType.FORMAT: 'FORMAT'>, <TokenType.NULLABLE: 'NULLABLE'>, <TokenType.WAREHOUSE: 'WAREHOUSE'>, <TokenType.MEDIUMINT: 'MEDIUMINT'>, <TokenType.PARTITION: 'PARTITION'>, <TokenType.INT256: 'INT256'>, <TokenType.LOWCARDINALITY: 'LOWCARDINALITY'>, <TokenType.ESCAPE: 'ESCAPE'>, <TokenType.TINYBLOB: 'TINYBLOB'>, <TokenType.OPERATOR: 'OPERATOR'>, <TokenType.UINT256: 'UINT256'>, <TokenType.OVERLAPS: 'OVERLAPS'>, <TokenType.ISNULL: 'ISNULL'>, <TokenType.TOP: 'TOP'>, <TokenType.INT4RANGE: 'INT4RANGE'>, <TokenType.VARIANT: 'VARIANT'>, <TokenType.VAR: 'VAR'>, <TokenType.VIEW: 'VIEW'>, <TokenType.OBJECT: 'OBJECT'>, <TokenType.STORAGE_INTEGRATION: 'STORAGE_INTEGRATION'>, <TokenType.FIRST: 'FIRST'>, <TokenType.LONGTEXT: 'LONGTEXT'>, <TokenType.TSTZRANGE: 'TSTZRANGE'>, <TokenType.AGGREGATEFUNCTION: 'AGGREGATEFUNCTION'>, <TokenType.BIGINT: 'BIGINT'>, <TokenType.ARRAY: 'ARRAY'>, <TokenType.LOAD: 'LOAD'>, <TokenType.INDEX: 'INDEX'>, <TokenType.STRUCT: 'STRUCT'>, <TokenType.YEAR: 'YEAR'>, <TokenType.INTERVAL: 'INTERVAL'>, <TokenType.HSTORE: 'HSTORE'>, <TokenType.NAME: 'NAME'>, <TokenType.DATETIME: 'DATETIME'>, <TokenType.ANY: 'ANY'>, <TokenType.SERIAL: 'SERIAL'>, <TokenType.LONGBLOB: 'LONGBLOB'>, <TokenType.COLUMN: 'COLUMN'>, <TokenType.JSONB: 'JSONB'>, <TokenType.KEEP: 'KEEP'>, <TokenType.DESC: 'DESC'>, <TokenType.TEXT: 'TEXT'>, <TokenType.USERDEFINED: 'USERDEFINED'>, <TokenType.SETTINGS: 'SETTINGS'>, <TokenType.ROLLUP: 'ROLLUP'>, <TokenType.INT8MULTIRANGE: 'INT8MULTIRANGE'>, <TokenType.TDIGEST: 'TDIGEST'>, <TokenType.RECURSIVE: 'RECURSIVE'>, <TokenType.CURRENT_TIME: 'CURRENT_TIME'>, <TokenType.ORDINALITY: 'ORDINALITY'>, <TokenType.DESCRIBE: 'DESCRIBE'>, <TokenType.TINYINT: 'TINYINT'>, <TokenType.MEDIUMBLOB: 'MEDIUMBLOB'>, <TokenType.SIMPLEAGGREGATEFUNCTION: 'SIMPLEAGGREGATEFUNCTION'>, <TokenType.CACHE: 'CACHE'>, <TokenType.USE: 'USE'>, <TokenType.DATERANGE: 'DATERANGE'>, <TokenType.UBIGINT: 'UBIGINT'>, <TokenType.COPY: 'COPY'>, <TokenType.TIMESTAMP: 'TIMESTAMP'>, <TokenType.BIGDECIMAL: 'BIGDECIMAL'>, <TokenType.CONSTRAINT: 'CONSTRAINT'>, <TokenType.TSTZMULTIRANGE: 'TSTZMULTIRANGE'>, <TokenType.NEXT: 'NEXT'>, <TokenType.KILL: 'KILL'>, <TokenType.DATEMULTIRANGE: 'DATEMULTIRANGE'>, <TokenType.CURRENT_DATE: 'CURRENT_DATE'>, <TokenType.COMMENT: 'COMMENT'>, <TokenType.ROWS: 'ROWS'>, <TokenType.VARCHAR: 'VARCHAR'>, <TokenType.DATE32: 'DATE32'>, <TokenType.FIXEDSTRING: 'FIXEDSTRING'>, <TokenType.UNPIVOT: 'UNPIVOT'>, <TokenType.IDENTIFIER: 'IDENTIFIER'>, <TokenType.DATETIME64: 'DATETIME64'>, <TokenType.JSON: 'JSON'>, <TokenType.USMALLINT: 'USMALLINT'>, <TokenType.BIT: 'BIT'>, <TokenType.SET: 'SET'>, <TokenType.SMALLINT: 'SMALLINT'>, <TokenType.UINT128: 'UINT128'>, <TokenType.END: 'END'>, <TokenType.REPLACE: 'REPLACE'>, <TokenType.STREAMLIT: 'STREAMLIT'>, <TokenType.UNIQUE: 'UNIQUE'>, <TokenType.FUNCTION: 'FUNCTION'>, <TokenType.PRAGMA: 'PRAGMA'>, <TokenType.TIMETZ: 'TIMETZ'>, <TokenType.UNKNOWN: 'UNKNOWN'>, <TokenType.XML: 'XML'>, <TokenType.CURRENT_USER: 'CURRENT_USER'>, <TokenType.UUID: 'UUID'>, <TokenType.TRUNCATE: 'TRUNCATE'>, <TokenType.IPV4: 'IPV4'>, <TokenType.MERGE: 'MERGE'>, <TokenType.DELETE: 'DELETE'>, <TokenType.TABLE: 'TABLE'>, <TokenType.NUMRANGE: 'NUMRANGE'>, <TokenType.FINAL: 'FINAL'>, <TokenType.ROWVERSION: 'ROWVERSION'>, <TokenType.REFERENCES: 'REFERENCES'>, <TokenType.NULL: 'NULL'>, <TokenType.INT: 'INT'>, <TokenType.TEMPORARY: 'TEMPORARY'>, <TokenType.RANGE: 'RANGE'>, <TokenType.ROW: 'ROW'>, <TokenType.DATABASE: 'DATABASE'>, <TokenType.UTINYINT: 'UTINYINT'>, <TokenType.REFRESH: 'REFRESH'>, <TokenType.GEOMETRY: 'GEOMETRY'>, <TokenType.INT128: 'INT128'>, <TokenType.UMEDIUMINT: 'UMEDIUMINT'>, <TokenType.TAG: 'TAG'>, <TokenType.COMMAND: 'COMMAND'>, <TokenType.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'>, <TokenType.TIMESTAMPNTZ: 'TIMESTAMPNTZ'>, <TokenType.IS: 'IS'>, <TokenType.FLOAT: 'FLOAT'>}</span> </div> @@ -3221,6 +3219,8 @@ Default: 3</li> <dd id="BigQuery.Parser.TRIM_TYPES" class="variable"><a href="../parser.html#Parser.TRIM_TYPES">TRIM_TYPES</a></dd> <dd id="BigQuery.Parser.FUNC_TOKENS" class="variable"><a href="../parser.html#Parser.FUNC_TOKENS">FUNC_TOKENS</a></dd> <dd id="BigQuery.Parser.CONJUNCTION" class="variable"><a href="../parser.html#Parser.CONJUNCTION">CONJUNCTION</a></dd> + <dd id="BigQuery.Parser.ASSIGNMENT" class="variable"><a href="../parser.html#Parser.ASSIGNMENT">ASSIGNMENT</a></dd> + <dd id="BigQuery.Parser.DISJUNCTION" class="variable"><a href="../parser.html#Parser.DISJUNCTION">DISJUNCTION</a></dd> <dd id="BigQuery.Parser.EQUALITY" class="variable"><a href="../parser.html#Parser.EQUALITY">EQUALITY</a></dd> <dd id="BigQuery.Parser.COMPARISON" class="variable"><a href="../parser.html#Parser.COMPARISON">COMPARISON</a></dd> <dd id="BigQuery.Parser.BITWISE" class="variable"><a href="../parser.html#Parser.BITWISE">BITWISE</a></dd> @@ -3279,6 +3279,7 @@ Default: 3</li> <dd id="BigQuery.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd> <dd id="BigQuery.Parser.UNNEST_OFFSET_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UNNEST_OFFSET_ALIAS_TOKENS">UNNEST_OFFSET_ALIAS_TOKENS</a></dd> <dd id="BigQuery.Parser.SELECT_START_TOKENS" class="variable"><a href="../parser.html#Parser.SELECT_START_TOKENS">SELECT_START_TOKENS</a></dd> + <dd id="BigQuery.Parser.COPY_INTO_VARLEN_OPTIONS" class="variable"><a href="../parser.html#Parser.COPY_INTO_VARLEN_OPTIONS">COPY_INTO_VARLEN_OPTIONS</a></dd> <dd id="BigQuery.Parser.STRICT_CAST" class="variable"><a href="../parser.html#Parser.STRICT_CAST">STRICT_CAST</a></dd> <dd id="BigQuery.Parser.IDENTIFY_PIVOT_STRINGS" class="variable"><a href="../parser.html#Parser.IDENTIFY_PIVOT_STRINGS">IDENTIFY_PIVOT_STRINGS</a></dd> <dd id="BigQuery.Parser.ALTER_TABLE_ADD_REQUIRED_FOR_EACH_COLUMN" class="variable"><a href="../parser.html#Parser.ALTER_TABLE_ADD_REQUIRED_FOR_EACH_COLUMN">ALTER_TABLE_ADD_REQUIRED_FOR_EACH_COLUMN</a></dd> @@ -3481,213 +3482,212 @@ Default: 3</li> </span><span id="BigQuery.Generator-706"><a href="#BigQuery.Generator-706"><span class="linenos">706</span></a> </span><span id="BigQuery.Generator-707"><a href="#BigQuery.Generator-707"><span class="linenos">707</span></a> <span class="c1"># from: https://cloud.google.com/bigquery/docs/reference/standard-sql/lexical#reserved_keywords</span> </span><span id="BigQuery.Generator-708"><a href="#BigQuery.Generator-708"><span class="linenos">708</span></a> <span class="n">RESERVED_KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="BigQuery.Generator-709"><a href="#BigQuery.Generator-709"><span class="linenos">709</span></a> <span class="o">*</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">RESERVED_KEYWORDS</span><span class="p">,</span> -</span><span id="BigQuery.Generator-710"><a href="#BigQuery.Generator-710"><span class="linenos">710</span></a> <span class="s2">"all"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-711"><a href="#BigQuery.Generator-711"><span class="linenos">711</span></a> <span class="s2">"and"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-712"><a href="#BigQuery.Generator-712"><span class="linenos">712</span></a> <span class="s2">"any"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-713"><a href="#BigQuery.Generator-713"><span class="linenos">713</span></a> <span class="s2">"array"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-714"><a href="#BigQuery.Generator-714"><span class="linenos">714</span></a> <span class="s2">"as"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-715"><a href="#BigQuery.Generator-715"><span class="linenos">715</span></a> <span class="s2">"asc"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-716"><a href="#BigQuery.Generator-716"><span class="linenos">716</span></a> <span class="s2">"assert_rows_modified"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-717"><a href="#BigQuery.Generator-717"><span class="linenos">717</span></a> <span class="s2">"at"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-718"><a href="#BigQuery.Generator-718"><span class="linenos">718</span></a> <span class="s2">"between"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-719"><a href="#BigQuery.Generator-719"><span class="linenos">719</span></a> <span class="s2">"by"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-720"><a href="#BigQuery.Generator-720"><span class="linenos">720</span></a> <span class="s2">"case"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-721"><a href="#BigQuery.Generator-721"><span class="linenos">721</span></a> <span class="s2">"cast"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-722"><a href="#BigQuery.Generator-722"><span class="linenos">722</span></a> <span class="s2">"collate"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-723"><a href="#BigQuery.Generator-723"><span class="linenos">723</span></a> <span class="s2">"contains"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-724"><a href="#BigQuery.Generator-724"><span class="linenos">724</span></a> <span class="s2">"create"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-725"><a href="#BigQuery.Generator-725"><span class="linenos">725</span></a> <span class="s2">"cross"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-726"><a href="#BigQuery.Generator-726"><span class="linenos">726</span></a> <span class="s2">"cube"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-727"><a href="#BigQuery.Generator-727"><span class="linenos">727</span></a> <span class="s2">"current"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-728"><a href="#BigQuery.Generator-728"><span class="linenos">728</span></a> <span class="s2">"default"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-729"><a href="#BigQuery.Generator-729"><span class="linenos">729</span></a> <span class="s2">"define"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-730"><a href="#BigQuery.Generator-730"><span class="linenos">730</span></a> <span class="s2">"desc"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-731"><a href="#BigQuery.Generator-731"><span class="linenos">731</span></a> <span class="s2">"distinct"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-732"><a href="#BigQuery.Generator-732"><span class="linenos">732</span></a> <span class="s2">"else"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-733"><a href="#BigQuery.Generator-733"><span class="linenos">733</span></a> <span class="s2">"end"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-734"><a href="#BigQuery.Generator-734"><span class="linenos">734</span></a> <span class="s2">"enum"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-735"><a href="#BigQuery.Generator-735"><span class="linenos">735</span></a> <span class="s2">"escape"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-736"><a href="#BigQuery.Generator-736"><span class="linenos">736</span></a> <span class="s2">"except"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-737"><a href="#BigQuery.Generator-737"><span class="linenos">737</span></a> <span class="s2">"exclude"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-738"><a href="#BigQuery.Generator-738"><span class="linenos">738</span></a> <span class="s2">"exists"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-739"><a href="#BigQuery.Generator-739"><span class="linenos">739</span></a> <span class="s2">"extract"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-740"><a href="#BigQuery.Generator-740"><span class="linenos">740</span></a> <span class="s2">"false"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-741"><a href="#BigQuery.Generator-741"><span class="linenos">741</span></a> <span class="s2">"fetch"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-742"><a href="#BigQuery.Generator-742"><span class="linenos">742</span></a> <span class="s2">"following"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-743"><a href="#BigQuery.Generator-743"><span class="linenos">743</span></a> <span class="s2">"for"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-744"><a href="#BigQuery.Generator-744"><span class="linenos">744</span></a> <span class="s2">"from"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-745"><a href="#BigQuery.Generator-745"><span class="linenos">745</span></a> <span class="s2">"full"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-746"><a href="#BigQuery.Generator-746"><span class="linenos">746</span></a> <span class="s2">"group"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-747"><a href="#BigQuery.Generator-747"><span class="linenos">747</span></a> <span class="s2">"grouping"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-748"><a href="#BigQuery.Generator-748"><span class="linenos">748</span></a> <span class="s2">"groups"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-749"><a href="#BigQuery.Generator-749"><span class="linenos">749</span></a> <span class="s2">"hash"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-750"><a href="#BigQuery.Generator-750"><span class="linenos">750</span></a> <span class="s2">"having"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-751"><a href="#BigQuery.Generator-751"><span class="linenos">751</span></a> <span class="s2">"if"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-752"><a href="#BigQuery.Generator-752"><span class="linenos">752</span></a> <span class="s2">"ignore"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-753"><a href="#BigQuery.Generator-753"><span class="linenos">753</span></a> <span class="s2">"in"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-754"><a href="#BigQuery.Generator-754"><span class="linenos">754</span></a> <span class="s2">"inner"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-755"><a href="#BigQuery.Generator-755"><span class="linenos">755</span></a> <span class="s2">"intersect"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-756"><a href="#BigQuery.Generator-756"><span class="linenos">756</span></a> <span class="s2">"interval"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-757"><a href="#BigQuery.Generator-757"><span class="linenos">757</span></a> <span class="s2">"into"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-758"><a href="#BigQuery.Generator-758"><span class="linenos">758</span></a> <span class="s2">"is"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-759"><a href="#BigQuery.Generator-759"><span class="linenos">759</span></a> <span class="s2">"join"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-760"><a href="#BigQuery.Generator-760"><span class="linenos">760</span></a> <span class="s2">"lateral"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-761"><a href="#BigQuery.Generator-761"><span class="linenos">761</span></a> <span class="s2">"left"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-762"><a href="#BigQuery.Generator-762"><span class="linenos">762</span></a> <span class="s2">"like"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-763"><a href="#BigQuery.Generator-763"><span class="linenos">763</span></a> <span class="s2">"limit"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-764"><a href="#BigQuery.Generator-764"><span class="linenos">764</span></a> <span class="s2">"lookup"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-765"><a href="#BigQuery.Generator-765"><span class="linenos">765</span></a> <span class="s2">"merge"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-766"><a href="#BigQuery.Generator-766"><span class="linenos">766</span></a> <span class="s2">"natural"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-767"><a href="#BigQuery.Generator-767"><span class="linenos">767</span></a> <span class="s2">"new"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-768"><a href="#BigQuery.Generator-768"><span class="linenos">768</span></a> <span class="s2">"no"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-769"><a href="#BigQuery.Generator-769"><span class="linenos">769</span></a> <span class="s2">"not"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-770"><a href="#BigQuery.Generator-770"><span class="linenos">770</span></a> <span class="s2">"null"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-771"><a href="#BigQuery.Generator-771"><span class="linenos">771</span></a> <span class="s2">"nulls"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-772"><a href="#BigQuery.Generator-772"><span class="linenos">772</span></a> <span class="s2">"of"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-773"><a href="#BigQuery.Generator-773"><span class="linenos">773</span></a> <span class="s2">"on"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-774"><a href="#BigQuery.Generator-774"><span class="linenos">774</span></a> <span class="s2">"or"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-775"><a href="#BigQuery.Generator-775"><span class="linenos">775</span></a> <span class="s2">"order"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-776"><a href="#BigQuery.Generator-776"><span class="linenos">776</span></a> <span class="s2">"outer"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-777"><a href="#BigQuery.Generator-777"><span class="linenos">777</span></a> <span class="s2">"over"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-778"><a href="#BigQuery.Generator-778"><span class="linenos">778</span></a> <span class="s2">"partition"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-779"><a href="#BigQuery.Generator-779"><span class="linenos">779</span></a> <span class="s2">"preceding"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-780"><a href="#BigQuery.Generator-780"><span class="linenos">780</span></a> <span class="s2">"proto"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-781"><a href="#BigQuery.Generator-781"><span class="linenos">781</span></a> <span class="s2">"qualify"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-782"><a href="#BigQuery.Generator-782"><span class="linenos">782</span></a> <span class="s2">"range"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-783"><a href="#BigQuery.Generator-783"><span class="linenos">783</span></a> <span class="s2">"recursive"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-784"><a href="#BigQuery.Generator-784"><span class="linenos">784</span></a> <span class="s2">"respect"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-785"><a href="#BigQuery.Generator-785"><span class="linenos">785</span></a> <span class="s2">"right"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-786"><a href="#BigQuery.Generator-786"><span class="linenos">786</span></a> <span class="s2">"rollup"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-787"><a href="#BigQuery.Generator-787"><span class="linenos">787</span></a> <span class="s2">"rows"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-788"><a href="#BigQuery.Generator-788"><span class="linenos">788</span></a> <span class="s2">"select"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-789"><a href="#BigQuery.Generator-789"><span class="linenos">789</span></a> <span class="s2">"set"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-790"><a href="#BigQuery.Generator-790"><span class="linenos">790</span></a> <span class="s2">"some"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-791"><a href="#BigQuery.Generator-791"><span class="linenos">791</span></a> <span class="s2">"struct"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-792"><a href="#BigQuery.Generator-792"><span class="linenos">792</span></a> <span class="s2">"tablesample"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-793"><a href="#BigQuery.Generator-793"><span class="linenos">793</span></a> <span class="s2">"then"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-794"><a href="#BigQuery.Generator-794"><span class="linenos">794</span></a> <span class="s2">"to"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-795"><a href="#BigQuery.Generator-795"><span class="linenos">795</span></a> <span class="s2">"treat"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-796"><a href="#BigQuery.Generator-796"><span class="linenos">796</span></a> <span class="s2">"true"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-797"><a href="#BigQuery.Generator-797"><span class="linenos">797</span></a> <span class="s2">"unbounded"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-798"><a href="#BigQuery.Generator-798"><span class="linenos">798</span></a> <span class="s2">"union"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-799"><a href="#BigQuery.Generator-799"><span class="linenos">799</span></a> <span class="s2">"unnest"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-800"><a href="#BigQuery.Generator-800"><span class="linenos">800</span></a> <span class="s2">"using"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-801"><a href="#BigQuery.Generator-801"><span class="linenos">801</span></a> <span class="s2">"when"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-802"><a href="#BigQuery.Generator-802"><span class="linenos">802</span></a> <span class="s2">"where"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-803"><a href="#BigQuery.Generator-803"><span class="linenos">803</span></a> <span class="s2">"window"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-804"><a href="#BigQuery.Generator-804"><span class="linenos">804</span></a> <span class="s2">"with"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-805"><a href="#BigQuery.Generator-805"><span class="linenos">805</span></a> <span class="s2">"within"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-806"><a href="#BigQuery.Generator-806"><span class="linenos">806</span></a> <span class="p">}</span> -</span><span id="BigQuery.Generator-807"><a href="#BigQuery.Generator-807"><span class="linenos">807</span></a> -</span><span id="BigQuery.Generator-808"><a href="#BigQuery.Generator-808"><span class="linenos">808</span></a> <span class="k">def</span> <span class="nf">mod_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Mod</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator-809"><a href="#BigQuery.Generator-809"><span class="linenos">809</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> -</span><span id="BigQuery.Generator-810"><a href="#BigQuery.Generator-810"><span class="linenos">810</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span> -</span><span id="BigQuery.Generator-811"><a href="#BigQuery.Generator-811"><span class="linenos">811</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> -</span><span id="BigQuery.Generator-812"><a href="#BigQuery.Generator-812"><span class="linenos">812</span></a> <span class="s2">"MOD"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-813"><a href="#BigQuery.Generator-813"><span class="linenos">813</span></a> <span class="n">this</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">)</span> <span class="k">else</span> <span class="n">this</span><span class="p">,</span> -</span><span id="BigQuery.Generator-814"><a href="#BigQuery.Generator-814"><span class="linenos">814</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expr</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">)</span> <span class="k">else</span> <span class="n">expr</span><span class="p">,</span> -</span><span id="BigQuery.Generator-815"><a href="#BigQuery.Generator-815"><span class="linenos">815</span></a> <span class="p">)</span> -</span><span id="BigQuery.Generator-816"><a href="#BigQuery.Generator-816"><span class="linenos">816</span></a> -</span><span id="BigQuery.Generator-817"><a href="#BigQuery.Generator-817"><span class="linenos">817</span></a> <span class="k">def</span> <span class="nf">column_parts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator-818"><a href="#BigQuery.Generator-818"><span class="linenos">818</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">meta</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"quoted_column"</span><span class="p">):</span> -</span><span id="BigQuery.Generator-819"><a href="#BigQuery.Generator-819"><span class="linenos">819</span></a> <span class="c1"># If a column reference is of the form `dataset.table`.name, we need</span> -</span><span id="BigQuery.Generator-820"><a href="#BigQuery.Generator-820"><span class="linenos">820</span></a> <span class="c1"># to preserve the quoted table path, otherwise the reference breaks</span> -</span><span id="BigQuery.Generator-821"><a href="#BigQuery.Generator-821"><span class="linenos">821</span></a> <span class="n">table_parts</span> <span class="o">=</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">parts</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span> -</span><span id="BigQuery.Generator-822"><a href="#BigQuery.Generator-822"><span class="linenos">822</span></a> <span class="n">table_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">table_parts</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="BigQuery.Generator-823"><a href="#BigQuery.Generator-823"><span class="linenos">823</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">table_path</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="BigQuery.Generator-824"><a href="#BigQuery.Generator-824"><span class="linenos">824</span></a> -</span><span id="BigQuery.Generator-825"><a href="#BigQuery.Generator-825"><span class="linenos">825</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">column_parts</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="BigQuery.Generator-826"><a href="#BigQuery.Generator-826"><span class="linenos">826</span></a> -</span><span id="BigQuery.Generator-827"><a href="#BigQuery.Generator-827"><span class="linenos">827</span></a> <span class="k">def</span> <span class="nf">table_parts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator-828"><a href="#BigQuery.Generator-828"><span class="linenos">828</span></a> <span class="c1"># Depending on the context, `x.y` may not resolve to the same data source as `x`.`y`, so</span> -</span><span id="BigQuery.Generator-829"><a href="#BigQuery.Generator-829"><span class="linenos">829</span></a> <span class="c1"># we need to make sure the correct quoting is used in each case.</span> -</span><span id="BigQuery.Generator-830"><a href="#BigQuery.Generator-830"><span class="linenos">830</span></a> <span class="c1">#</span> -</span><span id="BigQuery.Generator-831"><a href="#BigQuery.Generator-831"><span class="linenos">831</span></a> <span class="c1"># For example, if there is a CTE x that clashes with a schema name, then the former will</span> -</span><span id="BigQuery.Generator-832"><a href="#BigQuery.Generator-832"><span class="linenos">832</span></a> <span class="c1"># return the table y in that schema, whereas the latter will return the CTE's y column:</span> -</span><span id="BigQuery.Generator-833"><a href="#BigQuery.Generator-833"><span class="linenos">833</span></a> <span class="c1">#</span> -</span><span id="BigQuery.Generator-834"><a href="#BigQuery.Generator-834"><span class="linenos">834</span></a> <span class="c1"># - WITH x AS (SELECT [1, 2] AS y) SELECT * FROM x, `x.y` -> cross join</span> -</span><span id="BigQuery.Generator-835"><a href="#BigQuery.Generator-835"><span class="linenos">835</span></a> <span class="c1"># - WITH x AS (SELECT [1, 2] AS y) SELECT * FROM x, `x`.`y` -> implicit unnest</span> -</span><span id="BigQuery.Generator-836"><a href="#BigQuery.Generator-836"><span class="linenos">836</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">meta</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"quoted_table"</span><span class="p">):</span> -</span><span id="BigQuery.Generator-837"><a href="#BigQuery.Generator-837"><span class="linenos">837</span></a> <span class="n">table_parts</span> <span class="o">=</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">parts</span><span class="p">)</span> -</span><span id="BigQuery.Generator-838"><a href="#BigQuery.Generator-838"><span class="linenos">838</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">table_parts</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="BigQuery.Generator-839"><a href="#BigQuery.Generator-839"><span class="linenos">839</span></a> -</span><span id="BigQuery.Generator-840"><a href="#BigQuery.Generator-840"><span class="linenos">840</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">table_parts</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="BigQuery.Generator-841"><a href="#BigQuery.Generator-841"><span class="linenos">841</span></a> -</span><span id="BigQuery.Generator-842"><a href="#BigQuery.Generator-842"><span class="linenos">842</span></a> <span class="k">def</span> <span class="nf">timetostr_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator-843"><a href="#BigQuery.Generator-843"><span class="linenos">843</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</span><span class="p">)</span> <span class="k">else</span> <span class="n">expression</span> -</span><span id="BigQuery.Generator-844"><a href="#BigQuery.Generator-844"><span class="linenos">844</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"FORMAT_DATE"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">),</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="BigQuery.Generator-845"><a href="#BigQuery.Generator-845"><span class="linenos">845</span></a> -</span><span id="BigQuery.Generator-846"><a href="#BigQuery.Generator-846"><span class="linenos">846</span></a> <span class="k">def</span> <span class="nf">eq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator-847"><a href="#BigQuery.Generator-847"><span class="linenos">847</span></a> <span class="c1"># Operands of = cannot be NULL in BigQuery</span> -</span><span id="BigQuery.Generator-848"><a href="#BigQuery.Generator-848"><span class="linenos">848</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">left</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">right</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">):</span> -</span><span id="BigQuery.Generator-849"><a href="#BigQuery.Generator-849"><span class="linenos">849</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">):</span> -</span><span id="BigQuery.Generator-850"><a href="#BigQuery.Generator-850"><span class="linenos">850</span></a> <span class="k">return</span> <span class="s2">"NULL"</span> -</span><span id="BigQuery.Generator-851"><a href="#BigQuery.Generator-851"><span class="linenos">851</span></a> -</span><span id="BigQuery.Generator-852"><a href="#BigQuery.Generator-852"><span class="linenos">852</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"="</span><span class="p">)</span> -</span><span id="BigQuery.Generator-853"><a href="#BigQuery.Generator-853"><span class="linenos">853</span></a> -</span><span id="BigQuery.Generator-854"><a href="#BigQuery.Generator-854"><span class="linenos">854</span></a> <span class="k">def</span> <span class="nf">attimezone_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator-855"><a href="#BigQuery.Generator-855"><span class="linenos">855</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">parent</span> -</span><span id="BigQuery.Generator-856"><a href="#BigQuery.Generator-856"><span class="linenos">856</span></a> -</span><span id="BigQuery.Generator-857"><a href="#BigQuery.Generator-857"><span class="linenos">857</span></a> <span class="c1"># BigQuery allows CAST(.. AS {STRING|TIMESTAMP} [FORMAT <fmt> [AT TIME ZONE <tz>]]).</span> -</span><span id="BigQuery.Generator-858"><a href="#BigQuery.Generator-858"><span class="linenos">858</span></a> <span class="c1"># Only the TIMESTAMP one should use the below conversion, when AT TIME ZONE is included.</span> -</span><span id="BigQuery.Generator-859"><a href="#BigQuery.Generator-859"><span class="linenos">859</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">parent</span><span class="o">.</span><span class="n">to</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"text"</span><span class="p">):</span> -</span><span id="BigQuery.Generator-860"><a href="#BigQuery.Generator-860"><span class="linenos">860</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> -</span><span id="BigQuery.Generator-861"><a href="#BigQuery.Generator-861"><span class="linenos">861</span></a> <span class="s2">"TIMESTAMP"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"DATETIME"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"zone"</span><span class="p">))</span> -</span><span id="BigQuery.Generator-862"><a href="#BigQuery.Generator-862"><span class="linenos">862</span></a> <span class="p">)</span> -</span><span id="BigQuery.Generator-863"><a href="#BigQuery.Generator-863"><span class="linenos">863</span></a> -</span><span id="BigQuery.Generator-864"><a href="#BigQuery.Generator-864"><span class="linenos">864</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">attimezone_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="BigQuery.Generator-865"><a href="#BigQuery.Generator-865"><span class="linenos">865</span></a> -</span><span id="BigQuery.Generator-866"><a href="#BigQuery.Generator-866"><span class="linenos">866</span></a> <span class="k">def</span> <span class="nf">trycast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator-867"><a href="#BigQuery.Generator-867"><span class="linenos">867</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">safe_prefix</span><span class="o">=</span><span class="s2">"SAFE_"</span><span class="p">)</span> -</span><span id="BigQuery.Generator-868"><a href="#BigQuery.Generator-868"><span class="linenos">868</span></a> -</span><span id="BigQuery.Generator-869"><a href="#BigQuery.Generator-869"><span class="linenos">869</span></a> <span class="k">def</span> <span class="nf">bracket_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Bracket</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator-870"><a href="#BigQuery.Generator-870"><span class="linenos">870</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> -</span><span id="BigQuery.Generator-871"><a href="#BigQuery.Generator-871"><span class="linenos">871</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> -</span><span id="BigQuery.Generator-872"><a href="#BigQuery.Generator-872"><span class="linenos">872</span></a> -</span><span id="BigQuery.Generator-873"><a href="#BigQuery.Generator-873"><span class="linenos">873</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">and</span> <span class="n">this</span> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">STRUCT</span><span class="p">):</span> -</span><span id="BigQuery.Generator-874"><a href="#BigQuery.Generator-874"><span class="linenos">874</span></a> <span class="n">arg</span> <span class="o">=</span> <span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> -</span><span id="BigQuery.Generator-875"><a href="#BigQuery.Generator-875"><span class="linenos">875</span></a> <span class="k">if</span> <span class="n">arg</span><span class="o">.</span><span class="n">type</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="BigQuery.Generator-876"><a href="#BigQuery.Generator-876"><span class="linenos">876</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span> -</span><span id="BigQuery.Generator-877"><a href="#BigQuery.Generator-877"><span class="linenos">877</span></a> -</span><span id="BigQuery.Generator-878"><a href="#BigQuery.Generator-878"><span class="linenos">878</span></a> <span class="n">arg</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> -</span><span id="BigQuery.Generator-879"><a href="#BigQuery.Generator-879"><span class="linenos">879</span></a> -</span><span id="BigQuery.Generator-880"><a href="#BigQuery.Generator-880"><span class="linenos">880</span></a> <span class="k">if</span> <span class="n">arg</span><span class="o">.</span><span class="n">type</span> <span class="ow">and</span> <span class="n">arg</span><span class="o">.</span><span class="n">type</span><span class="o">.</span><span class="n">this</span> <span class="ow">in</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">TEXT_TYPES</span><span class="p">:</span> -</span><span id="BigQuery.Generator-881"><a href="#BigQuery.Generator-881"><span class="linenos">881</span></a> <span class="c1"># BQ doesn't support bracket syntax with string values for structs</span> -</span><span id="BigQuery.Generator-882"><a href="#BigQuery.Generator-882"><span class="linenos">882</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">arg</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> -</span><span id="BigQuery.Generator-883"><a href="#BigQuery.Generator-883"><span class="linenos">883</span></a> -</span><span id="BigQuery.Generator-884"><a href="#BigQuery.Generator-884"><span class="linenos">884</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="BigQuery.Generator-885"><a href="#BigQuery.Generator-885"><span class="linenos">885</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"offset"</span><span class="p">)</span> -</span><span id="BigQuery.Generator-886"><a href="#BigQuery.Generator-886"><span class="linenos">886</span></a> -</span><span id="BigQuery.Generator-887"><a href="#BigQuery.Generator-887"><span class="linenos">887</span></a> <span class="k">if</span> <span class="n">offset</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> -</span><span id="BigQuery.Generator-888"><a href="#BigQuery.Generator-888"><span class="linenos">888</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"OFFSET(</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="BigQuery.Generator-889"><a href="#BigQuery.Generator-889"><span class="linenos">889</span></a> <span class="k">elif</span> <span class="n">offset</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="BigQuery.Generator-890"><a href="#BigQuery.Generator-890"><span class="linenos">890</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"ORDINAL(</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="BigQuery.Generator-891"><a href="#BigQuery.Generator-891"><span class="linenos">891</span></a> <span class="k">elif</span> <span class="n">offset</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="BigQuery.Generator-892"><a href="#BigQuery.Generator-892"><span class="linenos">892</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported array offset: </span><span class="si">{</span><span class="n">offset</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="BigQuery.Generator-893"><a href="#BigQuery.Generator-893"><span class="linenos">893</span></a> -</span><span id="BigQuery.Generator-894"><a href="#BigQuery.Generator-894"><span class="linenos">894</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"safe"</span><span class="p">):</span> -</span><span id="BigQuery.Generator-895"><a href="#BigQuery.Generator-895"><span class="linenos">895</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"SAFE_</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="BigQuery.Generator-896"><a href="#BigQuery.Generator-896"><span class="linenos">896</span></a> -</span><span id="BigQuery.Generator-897"><a href="#BigQuery.Generator-897"><span class="linenos">897</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">]"</span> -</span><span id="BigQuery.Generator-898"><a href="#BigQuery.Generator-898"><span class="linenos">898</span></a> -</span><span id="BigQuery.Generator-899"><a href="#BigQuery.Generator-899"><span class="linenos">899</span></a> <span class="k">def</span> <span class="nf">in_unnest_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator-900"><a href="#BigQuery.Generator-900"><span class="linenos">900</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="BigQuery.Generator-901"><a href="#BigQuery.Generator-901"><span class="linenos">901</span></a> -</span><span id="BigQuery.Generator-902"><a href="#BigQuery.Generator-902"><span class="linenos">902</span></a> <span class="k">def</span> <span class="nf">except_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Except</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator-903"><a href="#BigQuery.Generator-903"><span class="linenos">903</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"distinct"</span><span class="p">):</span> -</span><span id="BigQuery.Generator-904"><a href="#BigQuery.Generator-904"><span class="linenos">904</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"EXCEPT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> -</span><span id="BigQuery.Generator-905"><a href="#BigQuery.Generator-905"><span class="linenos">905</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXCEPT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> -</span><span id="BigQuery.Generator-906"><a href="#BigQuery.Generator-906"><span class="linenos">906</span></a> -</span><span id="BigQuery.Generator-907"><a href="#BigQuery.Generator-907"><span class="linenos">907</span></a> <span class="k">def</span> <span class="nf">intersect_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Intersect</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator-908"><a href="#BigQuery.Generator-908"><span class="linenos">908</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"distinct"</span><span class="p">):</span> -</span><span id="BigQuery.Generator-909"><a href="#BigQuery.Generator-909"><span class="linenos">909</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"INTERSECT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> -</span><span id="BigQuery.Generator-910"><a href="#BigQuery.Generator-910"><span class="linenos">910</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"INTERSECT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> -</span><span id="BigQuery.Generator-911"><a href="#BigQuery.Generator-911"><span class="linenos">911</span></a> -</span><span id="BigQuery.Generator-912"><a href="#BigQuery.Generator-912"><span class="linenos">912</span></a> <span class="k">def</span> <span class="nf">version_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Version</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator-913"><a href="#BigQuery.Generator-913"><span class="linenos">913</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"TIMESTAMP"</span><span class="p">:</span> -</span><span id="BigQuery.Generator-914"><a href="#BigQuery.Generator-914"><span class="linenos">914</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="s2">"SYSTEM_TIME"</span><span class="p">)</span> -</span><span id="BigQuery.Generator-915"><a href="#BigQuery.Generator-915"><span class="linenos">915</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">version_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="BigQuery.Generator-709"><a href="#BigQuery.Generator-709"><span class="linenos">709</span></a> <span class="s2">"all"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-710"><a href="#BigQuery.Generator-710"><span class="linenos">710</span></a> <span class="s2">"and"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-711"><a href="#BigQuery.Generator-711"><span class="linenos">711</span></a> <span class="s2">"any"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-712"><a href="#BigQuery.Generator-712"><span class="linenos">712</span></a> <span class="s2">"array"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-713"><a href="#BigQuery.Generator-713"><span class="linenos">713</span></a> <span class="s2">"as"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-714"><a href="#BigQuery.Generator-714"><span class="linenos">714</span></a> <span class="s2">"asc"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-715"><a href="#BigQuery.Generator-715"><span class="linenos">715</span></a> <span class="s2">"assert_rows_modified"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-716"><a href="#BigQuery.Generator-716"><span class="linenos">716</span></a> <span class="s2">"at"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-717"><a href="#BigQuery.Generator-717"><span class="linenos">717</span></a> <span class="s2">"between"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-718"><a href="#BigQuery.Generator-718"><span class="linenos">718</span></a> <span class="s2">"by"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-719"><a href="#BigQuery.Generator-719"><span class="linenos">719</span></a> <span class="s2">"case"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-720"><a href="#BigQuery.Generator-720"><span class="linenos">720</span></a> <span class="s2">"cast"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-721"><a href="#BigQuery.Generator-721"><span class="linenos">721</span></a> <span class="s2">"collate"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-722"><a href="#BigQuery.Generator-722"><span class="linenos">722</span></a> <span class="s2">"contains"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-723"><a href="#BigQuery.Generator-723"><span class="linenos">723</span></a> <span class="s2">"create"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-724"><a href="#BigQuery.Generator-724"><span class="linenos">724</span></a> <span class="s2">"cross"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-725"><a href="#BigQuery.Generator-725"><span class="linenos">725</span></a> <span class="s2">"cube"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-726"><a href="#BigQuery.Generator-726"><span class="linenos">726</span></a> <span class="s2">"current"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-727"><a href="#BigQuery.Generator-727"><span class="linenos">727</span></a> <span class="s2">"default"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-728"><a href="#BigQuery.Generator-728"><span class="linenos">728</span></a> <span class="s2">"define"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-729"><a href="#BigQuery.Generator-729"><span class="linenos">729</span></a> <span class="s2">"desc"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-730"><a href="#BigQuery.Generator-730"><span class="linenos">730</span></a> <span class="s2">"distinct"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-731"><a href="#BigQuery.Generator-731"><span class="linenos">731</span></a> <span class="s2">"else"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-732"><a href="#BigQuery.Generator-732"><span class="linenos">732</span></a> <span class="s2">"end"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-733"><a href="#BigQuery.Generator-733"><span class="linenos">733</span></a> <span class="s2">"enum"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-734"><a href="#BigQuery.Generator-734"><span class="linenos">734</span></a> <span class="s2">"escape"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-735"><a href="#BigQuery.Generator-735"><span class="linenos">735</span></a> <span class="s2">"except"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-736"><a href="#BigQuery.Generator-736"><span class="linenos">736</span></a> <span class="s2">"exclude"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-737"><a href="#BigQuery.Generator-737"><span class="linenos">737</span></a> <span class="s2">"exists"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-738"><a href="#BigQuery.Generator-738"><span class="linenos">738</span></a> <span class="s2">"extract"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-739"><a href="#BigQuery.Generator-739"><span class="linenos">739</span></a> <span class="s2">"false"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-740"><a href="#BigQuery.Generator-740"><span class="linenos">740</span></a> <span class="s2">"fetch"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-741"><a href="#BigQuery.Generator-741"><span class="linenos">741</span></a> <span class="s2">"following"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-742"><a href="#BigQuery.Generator-742"><span class="linenos">742</span></a> <span class="s2">"for"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-743"><a href="#BigQuery.Generator-743"><span class="linenos">743</span></a> <span class="s2">"from"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-744"><a href="#BigQuery.Generator-744"><span class="linenos">744</span></a> <span class="s2">"full"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-745"><a href="#BigQuery.Generator-745"><span class="linenos">745</span></a> <span class="s2">"group"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-746"><a href="#BigQuery.Generator-746"><span class="linenos">746</span></a> <span class="s2">"grouping"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-747"><a href="#BigQuery.Generator-747"><span class="linenos">747</span></a> <span class="s2">"groups"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-748"><a href="#BigQuery.Generator-748"><span class="linenos">748</span></a> <span class="s2">"hash"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-749"><a href="#BigQuery.Generator-749"><span class="linenos">749</span></a> <span class="s2">"having"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-750"><a href="#BigQuery.Generator-750"><span class="linenos">750</span></a> <span class="s2">"if"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-751"><a href="#BigQuery.Generator-751"><span class="linenos">751</span></a> <span class="s2">"ignore"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-752"><a href="#BigQuery.Generator-752"><span class="linenos">752</span></a> <span class="s2">"in"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-753"><a href="#BigQuery.Generator-753"><span class="linenos">753</span></a> <span class="s2">"inner"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-754"><a href="#BigQuery.Generator-754"><span class="linenos">754</span></a> <span class="s2">"intersect"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-755"><a href="#BigQuery.Generator-755"><span class="linenos">755</span></a> <span class="s2">"interval"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-756"><a href="#BigQuery.Generator-756"><span class="linenos">756</span></a> <span class="s2">"into"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-757"><a href="#BigQuery.Generator-757"><span class="linenos">757</span></a> <span class="s2">"is"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-758"><a href="#BigQuery.Generator-758"><span class="linenos">758</span></a> <span class="s2">"join"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-759"><a href="#BigQuery.Generator-759"><span class="linenos">759</span></a> <span class="s2">"lateral"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-760"><a href="#BigQuery.Generator-760"><span class="linenos">760</span></a> <span class="s2">"left"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-761"><a href="#BigQuery.Generator-761"><span class="linenos">761</span></a> <span class="s2">"like"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-762"><a href="#BigQuery.Generator-762"><span class="linenos">762</span></a> <span class="s2">"limit"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-763"><a href="#BigQuery.Generator-763"><span class="linenos">763</span></a> <span class="s2">"lookup"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-764"><a href="#BigQuery.Generator-764"><span class="linenos">764</span></a> <span class="s2">"merge"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-765"><a href="#BigQuery.Generator-765"><span class="linenos">765</span></a> <span class="s2">"natural"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-766"><a href="#BigQuery.Generator-766"><span class="linenos">766</span></a> <span class="s2">"new"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-767"><a href="#BigQuery.Generator-767"><span class="linenos">767</span></a> <span class="s2">"no"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-768"><a href="#BigQuery.Generator-768"><span class="linenos">768</span></a> <span class="s2">"not"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-769"><a href="#BigQuery.Generator-769"><span class="linenos">769</span></a> <span class="s2">"null"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-770"><a href="#BigQuery.Generator-770"><span class="linenos">770</span></a> <span class="s2">"nulls"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-771"><a href="#BigQuery.Generator-771"><span class="linenos">771</span></a> <span class="s2">"of"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-772"><a href="#BigQuery.Generator-772"><span class="linenos">772</span></a> <span class="s2">"on"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-773"><a href="#BigQuery.Generator-773"><span class="linenos">773</span></a> <span class="s2">"or"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-774"><a href="#BigQuery.Generator-774"><span class="linenos">774</span></a> <span class="s2">"order"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-775"><a href="#BigQuery.Generator-775"><span class="linenos">775</span></a> <span class="s2">"outer"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-776"><a href="#BigQuery.Generator-776"><span class="linenos">776</span></a> <span class="s2">"over"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-777"><a href="#BigQuery.Generator-777"><span class="linenos">777</span></a> <span class="s2">"partition"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-778"><a href="#BigQuery.Generator-778"><span class="linenos">778</span></a> <span class="s2">"preceding"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-779"><a href="#BigQuery.Generator-779"><span class="linenos">779</span></a> <span class="s2">"proto"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-780"><a href="#BigQuery.Generator-780"><span class="linenos">780</span></a> <span class="s2">"qualify"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-781"><a href="#BigQuery.Generator-781"><span class="linenos">781</span></a> <span class="s2">"range"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-782"><a href="#BigQuery.Generator-782"><span class="linenos">782</span></a> <span class="s2">"recursive"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-783"><a href="#BigQuery.Generator-783"><span class="linenos">783</span></a> <span class="s2">"respect"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-784"><a href="#BigQuery.Generator-784"><span class="linenos">784</span></a> <span class="s2">"right"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-785"><a href="#BigQuery.Generator-785"><span class="linenos">785</span></a> <span class="s2">"rollup"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-786"><a href="#BigQuery.Generator-786"><span class="linenos">786</span></a> <span class="s2">"rows"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-787"><a href="#BigQuery.Generator-787"><span class="linenos">787</span></a> <span class="s2">"select"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-788"><a href="#BigQuery.Generator-788"><span class="linenos">788</span></a> <span class="s2">"set"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-789"><a href="#BigQuery.Generator-789"><span class="linenos">789</span></a> <span class="s2">"some"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-790"><a href="#BigQuery.Generator-790"><span class="linenos">790</span></a> <span class="s2">"struct"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-791"><a href="#BigQuery.Generator-791"><span class="linenos">791</span></a> <span class="s2">"tablesample"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-792"><a href="#BigQuery.Generator-792"><span class="linenos">792</span></a> <span class="s2">"then"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-793"><a href="#BigQuery.Generator-793"><span class="linenos">793</span></a> <span class="s2">"to"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-794"><a href="#BigQuery.Generator-794"><span class="linenos">794</span></a> <span class="s2">"treat"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-795"><a href="#BigQuery.Generator-795"><span class="linenos">795</span></a> <span class="s2">"true"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-796"><a href="#BigQuery.Generator-796"><span class="linenos">796</span></a> <span class="s2">"unbounded"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-797"><a href="#BigQuery.Generator-797"><span class="linenos">797</span></a> <span class="s2">"union"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-798"><a href="#BigQuery.Generator-798"><span class="linenos">798</span></a> <span class="s2">"unnest"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-799"><a href="#BigQuery.Generator-799"><span class="linenos">799</span></a> <span class="s2">"using"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-800"><a href="#BigQuery.Generator-800"><span class="linenos">800</span></a> <span class="s2">"when"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-801"><a href="#BigQuery.Generator-801"><span class="linenos">801</span></a> <span class="s2">"where"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-802"><a href="#BigQuery.Generator-802"><span class="linenos">802</span></a> <span class="s2">"window"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-803"><a href="#BigQuery.Generator-803"><span class="linenos">803</span></a> <span class="s2">"with"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-804"><a href="#BigQuery.Generator-804"><span class="linenos">804</span></a> <span class="s2">"within"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-805"><a href="#BigQuery.Generator-805"><span class="linenos">805</span></a> <span class="p">}</span> +</span><span id="BigQuery.Generator-806"><a href="#BigQuery.Generator-806"><span class="linenos">806</span></a> +</span><span id="BigQuery.Generator-807"><a href="#BigQuery.Generator-807"><span class="linenos">807</span></a> <span class="k">def</span> <span class="nf">mod_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Mod</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator-808"><a href="#BigQuery.Generator-808"><span class="linenos">808</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> +</span><span id="BigQuery.Generator-809"><a href="#BigQuery.Generator-809"><span class="linenos">809</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span> +</span><span id="BigQuery.Generator-810"><a href="#BigQuery.Generator-810"><span class="linenos">810</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> +</span><span id="BigQuery.Generator-811"><a href="#BigQuery.Generator-811"><span class="linenos">811</span></a> <span class="s2">"MOD"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-812"><a href="#BigQuery.Generator-812"><span class="linenos">812</span></a> <span class="n">this</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">)</span> <span class="k">else</span> <span class="n">this</span><span class="p">,</span> +</span><span id="BigQuery.Generator-813"><a href="#BigQuery.Generator-813"><span class="linenos">813</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expr</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">)</span> <span class="k">else</span> <span class="n">expr</span><span class="p">,</span> +</span><span id="BigQuery.Generator-814"><a href="#BigQuery.Generator-814"><span class="linenos">814</span></a> <span class="p">)</span> +</span><span id="BigQuery.Generator-815"><a href="#BigQuery.Generator-815"><span class="linenos">815</span></a> +</span><span id="BigQuery.Generator-816"><a href="#BigQuery.Generator-816"><span class="linenos">816</span></a> <span class="k">def</span> <span class="nf">column_parts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator-817"><a href="#BigQuery.Generator-817"><span class="linenos">817</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">meta</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"quoted_column"</span><span class="p">):</span> +</span><span id="BigQuery.Generator-818"><a href="#BigQuery.Generator-818"><span class="linenos">818</span></a> <span class="c1"># If a column reference is of the form `dataset.table`.name, we need</span> +</span><span id="BigQuery.Generator-819"><a href="#BigQuery.Generator-819"><span class="linenos">819</span></a> <span class="c1"># to preserve the quoted table path, otherwise the reference breaks</span> +</span><span id="BigQuery.Generator-820"><a href="#BigQuery.Generator-820"><span class="linenos">820</span></a> <span class="n">table_parts</span> <span class="o">=</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">parts</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span> +</span><span id="BigQuery.Generator-821"><a href="#BigQuery.Generator-821"><span class="linenos">821</span></a> <span class="n">table_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">table_parts</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="BigQuery.Generator-822"><a href="#BigQuery.Generator-822"><span class="linenos">822</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">table_path</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="BigQuery.Generator-823"><a href="#BigQuery.Generator-823"><span class="linenos">823</span></a> +</span><span id="BigQuery.Generator-824"><a href="#BigQuery.Generator-824"><span class="linenos">824</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">column_parts</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="BigQuery.Generator-825"><a href="#BigQuery.Generator-825"><span class="linenos">825</span></a> +</span><span id="BigQuery.Generator-826"><a href="#BigQuery.Generator-826"><span class="linenos">826</span></a> <span class="k">def</span> <span class="nf">table_parts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator-827"><a href="#BigQuery.Generator-827"><span class="linenos">827</span></a> <span class="c1"># Depending on the context, `x.y` may not resolve to the same data source as `x`.`y`, so</span> +</span><span id="BigQuery.Generator-828"><a href="#BigQuery.Generator-828"><span class="linenos">828</span></a> <span class="c1"># we need to make sure the correct quoting is used in each case.</span> +</span><span id="BigQuery.Generator-829"><a href="#BigQuery.Generator-829"><span class="linenos">829</span></a> <span class="c1">#</span> +</span><span id="BigQuery.Generator-830"><a href="#BigQuery.Generator-830"><span class="linenos">830</span></a> <span class="c1"># For example, if there is a CTE x that clashes with a schema name, then the former will</span> +</span><span id="BigQuery.Generator-831"><a href="#BigQuery.Generator-831"><span class="linenos">831</span></a> <span class="c1"># return the table y in that schema, whereas the latter will return the CTE's y column:</span> +</span><span id="BigQuery.Generator-832"><a href="#BigQuery.Generator-832"><span class="linenos">832</span></a> <span class="c1">#</span> +</span><span id="BigQuery.Generator-833"><a href="#BigQuery.Generator-833"><span class="linenos">833</span></a> <span class="c1"># - WITH x AS (SELECT [1, 2] AS y) SELECT * FROM x, `x.y` -> cross join</span> +</span><span id="BigQuery.Generator-834"><a href="#BigQuery.Generator-834"><span class="linenos">834</span></a> <span class="c1"># - WITH x AS (SELECT [1, 2] AS y) SELECT * FROM x, `x`.`y` -> implicit unnest</span> +</span><span id="BigQuery.Generator-835"><a href="#BigQuery.Generator-835"><span class="linenos">835</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">meta</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"quoted_table"</span><span class="p">):</span> +</span><span id="BigQuery.Generator-836"><a href="#BigQuery.Generator-836"><span class="linenos">836</span></a> <span class="n">table_parts</span> <span class="o">=</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">parts</span><span class="p">)</span> +</span><span id="BigQuery.Generator-837"><a href="#BigQuery.Generator-837"><span class="linenos">837</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">table_parts</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="BigQuery.Generator-838"><a href="#BigQuery.Generator-838"><span class="linenos">838</span></a> +</span><span id="BigQuery.Generator-839"><a href="#BigQuery.Generator-839"><span class="linenos">839</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">table_parts</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="BigQuery.Generator-840"><a href="#BigQuery.Generator-840"><span class="linenos">840</span></a> +</span><span id="BigQuery.Generator-841"><a href="#BigQuery.Generator-841"><span class="linenos">841</span></a> <span class="k">def</span> <span class="nf">timetostr_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator-842"><a href="#BigQuery.Generator-842"><span class="linenos">842</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</span><span class="p">)</span> <span class="k">else</span> <span class="n">expression</span> +</span><span id="BigQuery.Generator-843"><a href="#BigQuery.Generator-843"><span class="linenos">843</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"FORMAT_DATE"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">),</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="BigQuery.Generator-844"><a href="#BigQuery.Generator-844"><span class="linenos">844</span></a> +</span><span id="BigQuery.Generator-845"><a href="#BigQuery.Generator-845"><span class="linenos">845</span></a> <span class="k">def</span> <span class="nf">eq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator-846"><a href="#BigQuery.Generator-846"><span class="linenos">846</span></a> <span class="c1"># Operands of = cannot be NULL in BigQuery</span> +</span><span id="BigQuery.Generator-847"><a href="#BigQuery.Generator-847"><span class="linenos">847</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">left</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">right</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">):</span> +</span><span id="BigQuery.Generator-848"><a href="#BigQuery.Generator-848"><span class="linenos">848</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">):</span> +</span><span id="BigQuery.Generator-849"><a href="#BigQuery.Generator-849"><span class="linenos">849</span></a> <span class="k">return</span> <span class="s2">"NULL"</span> +</span><span id="BigQuery.Generator-850"><a href="#BigQuery.Generator-850"><span class="linenos">850</span></a> +</span><span id="BigQuery.Generator-851"><a href="#BigQuery.Generator-851"><span class="linenos">851</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"="</span><span class="p">)</span> +</span><span id="BigQuery.Generator-852"><a href="#BigQuery.Generator-852"><span class="linenos">852</span></a> +</span><span id="BigQuery.Generator-853"><a href="#BigQuery.Generator-853"><span class="linenos">853</span></a> <span class="k">def</span> <span class="nf">attimezone_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator-854"><a href="#BigQuery.Generator-854"><span class="linenos">854</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">parent</span> +</span><span id="BigQuery.Generator-855"><a href="#BigQuery.Generator-855"><span class="linenos">855</span></a> +</span><span id="BigQuery.Generator-856"><a href="#BigQuery.Generator-856"><span class="linenos">856</span></a> <span class="c1"># BigQuery allows CAST(.. AS {STRING|TIMESTAMP} [FORMAT <fmt> [AT TIME ZONE <tz>]]).</span> +</span><span id="BigQuery.Generator-857"><a href="#BigQuery.Generator-857"><span class="linenos">857</span></a> <span class="c1"># Only the TIMESTAMP one should use the below conversion, when AT TIME ZONE is included.</span> +</span><span id="BigQuery.Generator-858"><a href="#BigQuery.Generator-858"><span class="linenos">858</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">parent</span><span class="o">.</span><span class="n">to</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"text"</span><span class="p">):</span> +</span><span id="BigQuery.Generator-859"><a href="#BigQuery.Generator-859"><span class="linenos">859</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> +</span><span id="BigQuery.Generator-860"><a href="#BigQuery.Generator-860"><span class="linenos">860</span></a> <span class="s2">"TIMESTAMP"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"DATETIME"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"zone"</span><span class="p">))</span> +</span><span id="BigQuery.Generator-861"><a href="#BigQuery.Generator-861"><span class="linenos">861</span></a> <span class="p">)</span> +</span><span id="BigQuery.Generator-862"><a href="#BigQuery.Generator-862"><span class="linenos">862</span></a> +</span><span id="BigQuery.Generator-863"><a href="#BigQuery.Generator-863"><span class="linenos">863</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">attimezone_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="BigQuery.Generator-864"><a href="#BigQuery.Generator-864"><span class="linenos">864</span></a> +</span><span id="BigQuery.Generator-865"><a href="#BigQuery.Generator-865"><span class="linenos">865</span></a> <span class="k">def</span> <span class="nf">trycast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator-866"><a href="#BigQuery.Generator-866"><span class="linenos">866</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">safe_prefix</span><span class="o">=</span><span class="s2">"SAFE_"</span><span class="p">)</span> +</span><span id="BigQuery.Generator-867"><a href="#BigQuery.Generator-867"><span class="linenos">867</span></a> +</span><span id="BigQuery.Generator-868"><a href="#BigQuery.Generator-868"><span class="linenos">868</span></a> <span class="k">def</span> <span class="nf">bracket_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Bracket</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator-869"><a href="#BigQuery.Generator-869"><span class="linenos">869</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> +</span><span id="BigQuery.Generator-870"><a href="#BigQuery.Generator-870"><span class="linenos">870</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="BigQuery.Generator-871"><a href="#BigQuery.Generator-871"><span class="linenos">871</span></a> +</span><span id="BigQuery.Generator-872"><a href="#BigQuery.Generator-872"><span class="linenos">872</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">and</span> <span class="n">this</span> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">STRUCT</span><span class="p">):</span> +</span><span id="BigQuery.Generator-873"><a href="#BigQuery.Generator-873"><span class="linenos">873</span></a> <span class="n">arg</span> <span class="o">=</span> <span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> +</span><span id="BigQuery.Generator-874"><a href="#BigQuery.Generator-874"><span class="linenos">874</span></a> <span class="k">if</span> <span class="n">arg</span><span class="o">.</span><span class="n">type</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="BigQuery.Generator-875"><a href="#BigQuery.Generator-875"><span class="linenos">875</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span> +</span><span id="BigQuery.Generator-876"><a href="#BigQuery.Generator-876"><span class="linenos">876</span></a> +</span><span id="BigQuery.Generator-877"><a href="#BigQuery.Generator-877"><span class="linenos">877</span></a> <span class="n">arg</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> +</span><span id="BigQuery.Generator-878"><a href="#BigQuery.Generator-878"><span class="linenos">878</span></a> +</span><span id="BigQuery.Generator-879"><a href="#BigQuery.Generator-879"><span class="linenos">879</span></a> <span class="k">if</span> <span class="n">arg</span><span class="o">.</span><span class="n">type</span> <span class="ow">and</span> <span class="n">arg</span><span class="o">.</span><span class="n">type</span><span class="o">.</span><span class="n">this</span> <span class="ow">in</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">TEXT_TYPES</span><span class="p">:</span> +</span><span id="BigQuery.Generator-880"><a href="#BigQuery.Generator-880"><span class="linenos">880</span></a> <span class="c1"># BQ doesn't support bracket syntax with string values for structs</span> +</span><span id="BigQuery.Generator-881"><a href="#BigQuery.Generator-881"><span class="linenos">881</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">arg</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> +</span><span id="BigQuery.Generator-882"><a href="#BigQuery.Generator-882"><span class="linenos">882</span></a> +</span><span id="BigQuery.Generator-883"><a href="#BigQuery.Generator-883"><span class="linenos">883</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="BigQuery.Generator-884"><a href="#BigQuery.Generator-884"><span class="linenos">884</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"offset"</span><span class="p">)</span> +</span><span id="BigQuery.Generator-885"><a href="#BigQuery.Generator-885"><span class="linenos">885</span></a> +</span><span id="BigQuery.Generator-886"><a href="#BigQuery.Generator-886"><span class="linenos">886</span></a> <span class="k">if</span> <span class="n">offset</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> +</span><span id="BigQuery.Generator-887"><a href="#BigQuery.Generator-887"><span class="linenos">887</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"OFFSET(</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="BigQuery.Generator-888"><a href="#BigQuery.Generator-888"><span class="linenos">888</span></a> <span class="k">elif</span> <span class="n">offset</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="BigQuery.Generator-889"><a href="#BigQuery.Generator-889"><span class="linenos">889</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"ORDINAL(</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="BigQuery.Generator-890"><a href="#BigQuery.Generator-890"><span class="linenos">890</span></a> <span class="k">elif</span> <span class="n">offset</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="BigQuery.Generator-891"><a href="#BigQuery.Generator-891"><span class="linenos">891</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported array offset: </span><span class="si">{</span><span class="n">offset</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="BigQuery.Generator-892"><a href="#BigQuery.Generator-892"><span class="linenos">892</span></a> +</span><span id="BigQuery.Generator-893"><a href="#BigQuery.Generator-893"><span class="linenos">893</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"safe"</span><span class="p">):</span> +</span><span id="BigQuery.Generator-894"><a href="#BigQuery.Generator-894"><span class="linenos">894</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"SAFE_</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="BigQuery.Generator-895"><a href="#BigQuery.Generator-895"><span class="linenos">895</span></a> +</span><span id="BigQuery.Generator-896"><a href="#BigQuery.Generator-896"><span class="linenos">896</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">]"</span> +</span><span id="BigQuery.Generator-897"><a href="#BigQuery.Generator-897"><span class="linenos">897</span></a> +</span><span id="BigQuery.Generator-898"><a href="#BigQuery.Generator-898"><span class="linenos">898</span></a> <span class="k">def</span> <span class="nf">in_unnest_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator-899"><a href="#BigQuery.Generator-899"><span class="linenos">899</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="BigQuery.Generator-900"><a href="#BigQuery.Generator-900"><span class="linenos">900</span></a> +</span><span id="BigQuery.Generator-901"><a href="#BigQuery.Generator-901"><span class="linenos">901</span></a> <span class="k">def</span> <span class="nf">except_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Except</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator-902"><a href="#BigQuery.Generator-902"><span class="linenos">902</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"distinct"</span><span class="p">):</span> +</span><span id="BigQuery.Generator-903"><a href="#BigQuery.Generator-903"><span class="linenos">903</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"EXCEPT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> +</span><span id="BigQuery.Generator-904"><a href="#BigQuery.Generator-904"><span class="linenos">904</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXCEPT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> +</span><span id="BigQuery.Generator-905"><a href="#BigQuery.Generator-905"><span class="linenos">905</span></a> +</span><span id="BigQuery.Generator-906"><a href="#BigQuery.Generator-906"><span class="linenos">906</span></a> <span class="k">def</span> <span class="nf">intersect_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Intersect</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator-907"><a href="#BigQuery.Generator-907"><span class="linenos">907</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"distinct"</span><span class="p">):</span> +</span><span id="BigQuery.Generator-908"><a href="#BigQuery.Generator-908"><span class="linenos">908</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"INTERSECT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> +</span><span id="BigQuery.Generator-909"><a href="#BigQuery.Generator-909"><span class="linenos">909</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"INTERSECT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> +</span><span id="BigQuery.Generator-910"><a href="#BigQuery.Generator-910"><span class="linenos">910</span></a> +</span><span id="BigQuery.Generator-911"><a href="#BigQuery.Generator-911"><span class="linenos">911</span></a> <span class="k">def</span> <span class="nf">version_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Version</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator-912"><a href="#BigQuery.Generator-912"><span class="linenos">912</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"TIMESTAMP"</span><span class="p">:</span> +</span><span id="BigQuery.Generator-913"><a href="#BigQuery.Generator-913"><span class="linenos">913</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="s2">"SYSTEM_TIME"</span><span class="p">)</span> +</span><span id="BigQuery.Generator-914"><a href="#BigQuery.Generator-914"><span class="linenos">914</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">version_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -4013,7 +4013,7 @@ Default: True</li> <div class="attr variable"> <span class="name">SUPPORTED_JSON_PATH_PARTS</span> = <input id="BigQuery.Generator.SUPPORTED_JSON_PATH_PARTS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="BigQuery.Generator.SUPPORTED_JSON_PATH_PARTS-view-value"></label><span class="default_value">{<class '<a href="../expressions.html#JSONPathRoot">sqlglot.expressions.JSONPathRoot</a>'>, <class '<a href="../expressions.html#JSONPathSubscript">sqlglot.expressions.JSONPathSubscript</a>'>, <class '<a href="../expressions.html#JSONPathKey">sqlglot.expressions.JSONPathKey</a>'>}</span> + <label class="view-value-button pdoc-button" for="BigQuery.Generator.SUPPORTED_JSON_PATH_PARTS-view-value"></label><span class="default_value">{<class '<a href="../expressions.html#JSONPathKey">sqlglot.expressions.JSONPathKey</a>'>, <class '<a href="../expressions.html#JSONPathRoot">sqlglot.expressions.JSONPathRoot</a>'>, <class '<a href="../expressions.html#JSONPathSubscript">sqlglot.expressions.JSONPathSubscript</a>'>}</span> </div> @@ -4052,7 +4052,7 @@ Default: True</li> <div class="attr variable"> <span class="name">RESERVED_KEYWORDS</span> = <input id="BigQuery.Generator.RESERVED_KEYWORDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> - <label class="view-value-button pdoc-button" for="BigQuery.Generator.RESERVED_KEYWORDS-view-value"></label><span class="default_value">{'end', 'following', 'inner', 'some', 'escape', 'contains', 'order', 'true', 'at', 'create', 'as', 'rollup', 'then', 'hash', 'union', 'where', 'any', 'on', 'unbounded', 'fetch', 'case', 'when', 'from', 'between', 'is', 'join', 'intersect', 'window', 'tablesample', 'current', 'into', 'lookup', 'respect', 'desc', 'in', 'default', 'grouping', 'using', 'with', 'assert_rows_modified', 'set', 'exists', 'limit', 'extract', 'full', 'new', 'and', 'enum', 'of', 'else', 'proto', 'if', 'having', 'range', 'collate', 'recursive', 'cross', 'select', 'over', 'struct', 'outer', 'qualify', 'groups', 'nulls', 'asc', 'to', 'cube', 'group', 'like', 'natural', 'no', 'within', 'by', 'all', 'exclude', 'treat', 'cast', 'define', 'merge', 'null', 'not', 'or', 'except', 'lateral', 'interval', 'rows', 'distinct', 'partition', 'for', 'ignore', 'unnest', 'preceding', 'array', 'false', 'left', 'right'}</span> + <label class="view-value-button pdoc-button" for="BigQuery.Generator.RESERVED_KEYWORDS-view-value"></label><span class="default_value">{'over', 'null', 'extract', 'preceding', 'rows', 'if', 'case', 'cube', 'distinct', 'outer', 'fetch', 'struct', 'groups', 'then', 'is', 'lookup', 'natural', 'recursive', 'when', 'desc', 'enum', 'select', 'end', 'respect', 'to', 'into', 'interval', 'from', 'using', 'all', 'assert_rows_modified', 'create', 'with', 'window', 'cross', 'merge', 'collate', 'exclude', 'escape', 'by', 'on', 'of', 'grouping', 'like', 'default', 'qualify', 'at', 'join', 'hash', 'define', 'else', 'order', 'nulls', 'group', 'inner', 'proto', 'as', 'current', 'no', 'not', 'contains', 'union', 'cast', 'rollup', 'exists', 'set', 'in', 'any', 'ignore', 'true', 'tablesample', 'intersect', 'and', 'array', 'within', 'or', 'for', 'lateral', 'unnest', 'treat', 'where', 'range', 'new', 'right', 'having', 'following', 'limit', 'full', 'unbounded', 'between', 'except', 'false', 'some', 'asc', 'left', 'partition'}</span> </div> @@ -4072,14 +4072,14 @@ Default: True</li> </div> <a class="headerlink" href="#BigQuery.Generator.mod_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.mod_sql-808"><a href="#BigQuery.Generator.mod_sql-808"><span class="linenos">808</span></a> <span class="k">def</span> <span class="nf">mod_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Mod</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator.mod_sql-809"><a href="#BigQuery.Generator.mod_sql-809"><span class="linenos">809</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> -</span><span id="BigQuery.Generator.mod_sql-810"><a href="#BigQuery.Generator.mod_sql-810"><span class="linenos">810</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span> -</span><span id="BigQuery.Generator.mod_sql-811"><a href="#BigQuery.Generator.mod_sql-811"><span class="linenos">811</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> -</span><span id="BigQuery.Generator.mod_sql-812"><a href="#BigQuery.Generator.mod_sql-812"><span class="linenos">812</span></a> <span class="s2">"MOD"</span><span class="p">,</span> -</span><span id="BigQuery.Generator.mod_sql-813"><a href="#BigQuery.Generator.mod_sql-813"><span class="linenos">813</span></a> <span class="n">this</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">)</span> <span class="k">else</span> <span class="n">this</span><span class="p">,</span> -</span><span id="BigQuery.Generator.mod_sql-814"><a href="#BigQuery.Generator.mod_sql-814"><span class="linenos">814</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expr</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">)</span> <span class="k">else</span> <span class="n">expr</span><span class="p">,</span> -</span><span id="BigQuery.Generator.mod_sql-815"><a href="#BigQuery.Generator.mod_sql-815"><span class="linenos">815</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.mod_sql-807"><a href="#BigQuery.Generator.mod_sql-807"><span class="linenos">807</span></a> <span class="k">def</span> <span class="nf">mod_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Mod</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator.mod_sql-808"><a href="#BigQuery.Generator.mod_sql-808"><span class="linenos">808</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> +</span><span id="BigQuery.Generator.mod_sql-809"><a href="#BigQuery.Generator.mod_sql-809"><span class="linenos">809</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span> +</span><span id="BigQuery.Generator.mod_sql-810"><a href="#BigQuery.Generator.mod_sql-810"><span class="linenos">810</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> +</span><span id="BigQuery.Generator.mod_sql-811"><a href="#BigQuery.Generator.mod_sql-811"><span class="linenos">811</span></a> <span class="s2">"MOD"</span><span class="p">,</span> +</span><span id="BigQuery.Generator.mod_sql-812"><a href="#BigQuery.Generator.mod_sql-812"><span class="linenos">812</span></a> <span class="n">this</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">)</span> <span class="k">else</span> <span class="n">this</span><span class="p">,</span> +</span><span id="BigQuery.Generator.mod_sql-813"><a href="#BigQuery.Generator.mod_sql-813"><span class="linenos">813</span></a> <span class="n">expr</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expr</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">)</span> <span class="k">else</span> <span class="n">expr</span><span class="p">,</span> +</span><span id="BigQuery.Generator.mod_sql-814"><a href="#BigQuery.Generator.mod_sql-814"><span class="linenos">814</span></a> <span class="p">)</span> </span></pre></div> @@ -4097,15 +4097,15 @@ Default: True</li> </div> <a class="headerlink" href="#BigQuery.Generator.column_parts"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.column_parts-817"><a href="#BigQuery.Generator.column_parts-817"><span class="linenos">817</span></a> <span class="k">def</span> <span class="nf">column_parts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator.column_parts-818"><a href="#BigQuery.Generator.column_parts-818"><span class="linenos">818</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">meta</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"quoted_column"</span><span class="p">):</span> -</span><span id="BigQuery.Generator.column_parts-819"><a href="#BigQuery.Generator.column_parts-819"><span class="linenos">819</span></a> <span class="c1"># If a column reference is of the form `dataset.table`.name, we need</span> -</span><span id="BigQuery.Generator.column_parts-820"><a href="#BigQuery.Generator.column_parts-820"><span class="linenos">820</span></a> <span class="c1"># to preserve the quoted table path, otherwise the reference breaks</span> -</span><span id="BigQuery.Generator.column_parts-821"><a href="#BigQuery.Generator.column_parts-821"><span class="linenos">821</span></a> <span class="n">table_parts</span> <span class="o">=</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">parts</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span> -</span><span id="BigQuery.Generator.column_parts-822"><a href="#BigQuery.Generator.column_parts-822"><span class="linenos">822</span></a> <span class="n">table_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">table_parts</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="BigQuery.Generator.column_parts-823"><a href="#BigQuery.Generator.column_parts-823"><span class="linenos">823</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">table_path</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="BigQuery.Generator.column_parts-824"><a href="#BigQuery.Generator.column_parts-824"><span class="linenos">824</span></a> -</span><span id="BigQuery.Generator.column_parts-825"><a href="#BigQuery.Generator.column_parts-825"><span class="linenos">825</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">column_parts</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.column_parts-816"><a href="#BigQuery.Generator.column_parts-816"><span class="linenos">816</span></a> <span class="k">def</span> <span class="nf">column_parts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator.column_parts-817"><a href="#BigQuery.Generator.column_parts-817"><span class="linenos">817</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">meta</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"quoted_column"</span><span class="p">):</span> +</span><span id="BigQuery.Generator.column_parts-818"><a href="#BigQuery.Generator.column_parts-818"><span class="linenos">818</span></a> <span class="c1"># If a column reference is of the form `dataset.table`.name, we need</span> +</span><span id="BigQuery.Generator.column_parts-819"><a href="#BigQuery.Generator.column_parts-819"><span class="linenos">819</span></a> <span class="c1"># to preserve the quoted table path, otherwise the reference breaks</span> +</span><span id="BigQuery.Generator.column_parts-820"><a href="#BigQuery.Generator.column_parts-820"><span class="linenos">820</span></a> <span class="n">table_parts</span> <span class="o">=</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">parts</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span> +</span><span id="BigQuery.Generator.column_parts-821"><a href="#BigQuery.Generator.column_parts-821"><span class="linenos">821</span></a> <span class="n">table_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">table_parts</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="BigQuery.Generator.column_parts-822"><a href="#BigQuery.Generator.column_parts-822"><span class="linenos">822</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">table_path</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="BigQuery.Generator.column_parts-823"><a href="#BigQuery.Generator.column_parts-823"><span class="linenos">823</span></a> +</span><span id="BigQuery.Generator.column_parts-824"><a href="#BigQuery.Generator.column_parts-824"><span class="linenos">824</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">column_parts</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -4123,20 +4123,20 @@ Default: True</li> </div> <a class="headerlink" href="#BigQuery.Generator.table_parts"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.table_parts-827"><a href="#BigQuery.Generator.table_parts-827"><span class="linenos">827</span></a> <span class="k">def</span> <span class="nf">table_parts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator.table_parts-828"><a href="#BigQuery.Generator.table_parts-828"><span class="linenos">828</span></a> <span class="c1"># Depending on the context, `x.y` may not resolve to the same data source as `x`.`y`, so</span> -</span><span id="BigQuery.Generator.table_parts-829"><a href="#BigQuery.Generator.table_parts-829"><span class="linenos">829</span></a> <span class="c1"># we need to make sure the correct quoting is used in each case.</span> -</span><span id="BigQuery.Generator.table_parts-830"><a href="#BigQuery.Generator.table_parts-830"><span class="linenos">830</span></a> <span class="c1">#</span> -</span><span id="BigQuery.Generator.table_parts-831"><a href="#BigQuery.Generator.table_parts-831"><span class="linenos">831</span></a> <span class="c1"># For example, if there is a CTE x that clashes with a schema name, then the former will</span> -</span><span id="BigQuery.Generator.table_parts-832"><a href="#BigQuery.Generator.table_parts-832"><span class="linenos">832</span></a> <span class="c1"># return the table y in that schema, whereas the latter will return the CTE's y column:</span> -</span><span id="BigQuery.Generator.table_parts-833"><a href="#BigQuery.Generator.table_parts-833"><span class="linenos">833</span></a> <span class="c1">#</span> -</span><span id="BigQuery.Generator.table_parts-834"><a href="#BigQuery.Generator.table_parts-834"><span class="linenos">834</span></a> <span class="c1"># - WITH x AS (SELECT [1, 2] AS y) SELECT * FROM x, `x.y` -> cross join</span> -</span><span id="BigQuery.Generator.table_parts-835"><a href="#BigQuery.Generator.table_parts-835"><span class="linenos">835</span></a> <span class="c1"># - WITH x AS (SELECT [1, 2] AS y) SELECT * FROM x, `x`.`y` -> implicit unnest</span> -</span><span id="BigQuery.Generator.table_parts-836"><a href="#BigQuery.Generator.table_parts-836"><span class="linenos">836</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">meta</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"quoted_table"</span><span class="p">):</span> -</span><span id="BigQuery.Generator.table_parts-837"><a href="#BigQuery.Generator.table_parts-837"><span class="linenos">837</span></a> <span class="n">table_parts</span> <span class="o">=</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">parts</span><span class="p">)</span> -</span><span id="BigQuery.Generator.table_parts-838"><a href="#BigQuery.Generator.table_parts-838"><span class="linenos">838</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">table_parts</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="BigQuery.Generator.table_parts-839"><a href="#BigQuery.Generator.table_parts-839"><span class="linenos">839</span></a> -</span><span id="BigQuery.Generator.table_parts-840"><a href="#BigQuery.Generator.table_parts-840"><span class="linenos">840</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">table_parts</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.table_parts-826"><a href="#BigQuery.Generator.table_parts-826"><span class="linenos">826</span></a> <span class="k">def</span> <span class="nf">table_parts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator.table_parts-827"><a href="#BigQuery.Generator.table_parts-827"><span class="linenos">827</span></a> <span class="c1"># Depending on the context, `x.y` may not resolve to the same data source as `x`.`y`, so</span> +</span><span id="BigQuery.Generator.table_parts-828"><a href="#BigQuery.Generator.table_parts-828"><span class="linenos">828</span></a> <span class="c1"># we need to make sure the correct quoting is used in each case.</span> +</span><span id="BigQuery.Generator.table_parts-829"><a href="#BigQuery.Generator.table_parts-829"><span class="linenos">829</span></a> <span class="c1">#</span> +</span><span id="BigQuery.Generator.table_parts-830"><a href="#BigQuery.Generator.table_parts-830"><span class="linenos">830</span></a> <span class="c1"># For example, if there is a CTE x that clashes with a schema name, then the former will</span> +</span><span id="BigQuery.Generator.table_parts-831"><a href="#BigQuery.Generator.table_parts-831"><span class="linenos">831</span></a> <span class="c1"># return the table y in that schema, whereas the latter will return the CTE's y column:</span> +</span><span id="BigQuery.Generator.table_parts-832"><a href="#BigQuery.Generator.table_parts-832"><span class="linenos">832</span></a> <span class="c1">#</span> +</span><span id="BigQuery.Generator.table_parts-833"><a href="#BigQuery.Generator.table_parts-833"><span class="linenos">833</span></a> <span class="c1"># - WITH x AS (SELECT [1, 2] AS y) SELECT * FROM x, `x.y` -> cross join</span> +</span><span id="BigQuery.Generator.table_parts-834"><a href="#BigQuery.Generator.table_parts-834"><span class="linenos">834</span></a> <span class="c1"># - WITH x AS (SELECT [1, 2] AS y) SELECT * FROM x, `x`.`y` -> implicit unnest</span> +</span><span id="BigQuery.Generator.table_parts-835"><a href="#BigQuery.Generator.table_parts-835"><span class="linenos">835</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">meta</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"quoted_table"</span><span class="p">):</span> +</span><span id="BigQuery.Generator.table_parts-836"><a href="#BigQuery.Generator.table_parts-836"><span class="linenos">836</span></a> <span class="n">table_parts</span> <span class="o">=</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">parts</span><span class="p">)</span> +</span><span id="BigQuery.Generator.table_parts-837"><a href="#BigQuery.Generator.table_parts-837"><span class="linenos">837</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">table_parts</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="BigQuery.Generator.table_parts-838"><a href="#BigQuery.Generator.table_parts-838"><span class="linenos">838</span></a> +</span><span id="BigQuery.Generator.table_parts-839"><a href="#BigQuery.Generator.table_parts-839"><span class="linenos">839</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">table_parts</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -4154,9 +4154,9 @@ Default: True</li> </div> <a class="headerlink" href="#BigQuery.Generator.timetostr_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.timetostr_sql-842"><a href="#BigQuery.Generator.timetostr_sql-842"><span class="linenos">842</span></a> <span class="k">def</span> <span class="nf">timetostr_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator.timetostr_sql-843"><a href="#BigQuery.Generator.timetostr_sql-843"><span class="linenos">843</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</span><span class="p">)</span> <span class="k">else</span> <span class="n">expression</span> -</span><span id="BigQuery.Generator.timetostr_sql-844"><a href="#BigQuery.Generator.timetostr_sql-844"><span class="linenos">844</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"FORMAT_DATE"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">),</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.timetostr_sql-841"><a href="#BigQuery.Generator.timetostr_sql-841"><span class="linenos">841</span></a> <span class="k">def</span> <span class="nf">timetostr_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator.timetostr_sql-842"><a href="#BigQuery.Generator.timetostr_sql-842"><span class="linenos">842</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</span><span class="p">)</span> <span class="k">else</span> <span class="n">expression</span> +</span><span id="BigQuery.Generator.timetostr_sql-843"><a href="#BigQuery.Generator.timetostr_sql-843"><span class="linenos">843</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"FORMAT_DATE"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">),</span> <span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> </span></pre></div> @@ -4174,13 +4174,13 @@ Default: True</li> </div> <a class="headerlink" href="#BigQuery.Generator.eq_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.eq_sql-846"><a href="#BigQuery.Generator.eq_sql-846"><span class="linenos">846</span></a> <span class="k">def</span> <span class="nf">eq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator.eq_sql-847"><a href="#BigQuery.Generator.eq_sql-847"><span class="linenos">847</span></a> <span class="c1"># Operands of = cannot be NULL in BigQuery</span> -</span><span id="BigQuery.Generator.eq_sql-848"><a href="#BigQuery.Generator.eq_sql-848"><span class="linenos">848</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">left</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">right</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">):</span> -</span><span id="BigQuery.Generator.eq_sql-849"><a href="#BigQuery.Generator.eq_sql-849"><span class="linenos">849</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">):</span> -</span><span id="BigQuery.Generator.eq_sql-850"><a href="#BigQuery.Generator.eq_sql-850"><span class="linenos">850</span></a> <span class="k">return</span> <span class="s2">"NULL"</span> -</span><span id="BigQuery.Generator.eq_sql-851"><a href="#BigQuery.Generator.eq_sql-851"><span class="linenos">851</span></a> -</span><span id="BigQuery.Generator.eq_sql-852"><a href="#BigQuery.Generator.eq_sql-852"><span class="linenos">852</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"="</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.eq_sql-845"><a href="#BigQuery.Generator.eq_sql-845"><span class="linenos">845</span></a> <span class="k">def</span> <span class="nf">eq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator.eq_sql-846"><a href="#BigQuery.Generator.eq_sql-846"><span class="linenos">846</span></a> <span class="c1"># Operands of = cannot be NULL in BigQuery</span> +</span><span id="BigQuery.Generator.eq_sql-847"><a href="#BigQuery.Generator.eq_sql-847"><span class="linenos">847</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">left</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">right</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">):</span> +</span><span id="BigQuery.Generator.eq_sql-848"><a href="#BigQuery.Generator.eq_sql-848"><span class="linenos">848</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">):</span> +</span><span id="BigQuery.Generator.eq_sql-849"><a href="#BigQuery.Generator.eq_sql-849"><span class="linenos">849</span></a> <span class="k">return</span> <span class="s2">"NULL"</span> +</span><span id="BigQuery.Generator.eq_sql-850"><a href="#BigQuery.Generator.eq_sql-850"><span class="linenos">850</span></a> +</span><span id="BigQuery.Generator.eq_sql-851"><a href="#BigQuery.Generator.eq_sql-851"><span class="linenos">851</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"="</span><span class="p">)</span> </span></pre></div> @@ -4198,17 +4198,17 @@ Default: True</li> </div> <a class="headerlink" href="#BigQuery.Generator.attimezone_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.attimezone_sql-854"><a href="#BigQuery.Generator.attimezone_sql-854"><span class="linenos">854</span></a> <span class="k">def</span> <span class="nf">attimezone_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator.attimezone_sql-855"><a href="#BigQuery.Generator.attimezone_sql-855"><span class="linenos">855</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">parent</span> -</span><span id="BigQuery.Generator.attimezone_sql-856"><a href="#BigQuery.Generator.attimezone_sql-856"><span class="linenos">856</span></a> -</span><span id="BigQuery.Generator.attimezone_sql-857"><a href="#BigQuery.Generator.attimezone_sql-857"><span class="linenos">857</span></a> <span class="c1"># BigQuery allows CAST(.. AS {STRING|TIMESTAMP} [FORMAT <fmt> [AT TIME ZONE <tz>]]).</span> -</span><span id="BigQuery.Generator.attimezone_sql-858"><a href="#BigQuery.Generator.attimezone_sql-858"><span class="linenos">858</span></a> <span class="c1"># Only the TIMESTAMP one should use the below conversion, when AT TIME ZONE is included.</span> -</span><span id="BigQuery.Generator.attimezone_sql-859"><a href="#BigQuery.Generator.attimezone_sql-859"><span class="linenos">859</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">parent</span><span class="o">.</span><span class="n">to</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"text"</span><span class="p">):</span> -</span><span id="BigQuery.Generator.attimezone_sql-860"><a href="#BigQuery.Generator.attimezone_sql-860"><span class="linenos">860</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> -</span><span id="BigQuery.Generator.attimezone_sql-861"><a href="#BigQuery.Generator.attimezone_sql-861"><span class="linenos">861</span></a> <span class="s2">"TIMESTAMP"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"DATETIME"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"zone"</span><span class="p">))</span> -</span><span id="BigQuery.Generator.attimezone_sql-862"><a href="#BigQuery.Generator.attimezone_sql-862"><span class="linenos">862</span></a> <span class="p">)</span> -</span><span id="BigQuery.Generator.attimezone_sql-863"><a href="#BigQuery.Generator.attimezone_sql-863"><span class="linenos">863</span></a> -</span><span id="BigQuery.Generator.attimezone_sql-864"><a href="#BigQuery.Generator.attimezone_sql-864"><span class="linenos">864</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">attimezone_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.attimezone_sql-853"><a href="#BigQuery.Generator.attimezone_sql-853"><span class="linenos">853</span></a> <span class="k">def</span> <span class="nf">attimezone_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator.attimezone_sql-854"><a href="#BigQuery.Generator.attimezone_sql-854"><span class="linenos">854</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">parent</span> +</span><span id="BigQuery.Generator.attimezone_sql-855"><a href="#BigQuery.Generator.attimezone_sql-855"><span class="linenos">855</span></a> +</span><span id="BigQuery.Generator.attimezone_sql-856"><a href="#BigQuery.Generator.attimezone_sql-856"><span class="linenos">856</span></a> <span class="c1"># BigQuery allows CAST(.. AS {STRING|TIMESTAMP} [FORMAT <fmt> [AT TIME ZONE <tz>]]).</span> +</span><span id="BigQuery.Generator.attimezone_sql-857"><a href="#BigQuery.Generator.attimezone_sql-857"><span class="linenos">857</span></a> <span class="c1"># Only the TIMESTAMP one should use the below conversion, when AT TIME ZONE is included.</span> +</span><span id="BigQuery.Generator.attimezone_sql-858"><a href="#BigQuery.Generator.attimezone_sql-858"><span class="linenos">858</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">parent</span><span class="o">.</span><span class="n">to</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"text"</span><span class="p">):</span> +</span><span id="BigQuery.Generator.attimezone_sql-859"><a href="#BigQuery.Generator.attimezone_sql-859"><span class="linenos">859</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> +</span><span id="BigQuery.Generator.attimezone_sql-860"><a href="#BigQuery.Generator.attimezone_sql-860"><span class="linenos">860</span></a> <span class="s2">"TIMESTAMP"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"DATETIME"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"zone"</span><span class="p">))</span> +</span><span id="BigQuery.Generator.attimezone_sql-861"><a href="#BigQuery.Generator.attimezone_sql-861"><span class="linenos">861</span></a> <span class="p">)</span> +</span><span id="BigQuery.Generator.attimezone_sql-862"><a href="#BigQuery.Generator.attimezone_sql-862"><span class="linenos">862</span></a> +</span><span id="BigQuery.Generator.attimezone_sql-863"><a href="#BigQuery.Generator.attimezone_sql-863"><span class="linenos">863</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">attimezone_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -4226,8 +4226,8 @@ Default: True</li> </div> <a class="headerlink" href="#BigQuery.Generator.trycast_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.trycast_sql-866"><a href="#BigQuery.Generator.trycast_sql-866"><span class="linenos">866</span></a> <span class="k">def</span> <span class="nf">trycast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator.trycast_sql-867"><a href="#BigQuery.Generator.trycast_sql-867"><span class="linenos">867</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">safe_prefix</span><span class="o">=</span><span class="s2">"SAFE_"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.trycast_sql-865"><a href="#BigQuery.Generator.trycast_sql-865"><span class="linenos">865</span></a> <span class="k">def</span> <span class="nf">trycast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator.trycast_sql-866"><a href="#BigQuery.Generator.trycast_sql-866"><span class="linenos">866</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">safe_prefix</span><span class="o">=</span><span class="s2">"SAFE_"</span><span class="p">)</span> </span></pre></div> @@ -4245,35 +4245,35 @@ Default: True</li> </div> <a class="headerlink" href="#BigQuery.Generator.bracket_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.bracket_sql-869"><a href="#BigQuery.Generator.bracket_sql-869"><span class="linenos">869</span></a> <span class="k">def</span> <span class="nf">bracket_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Bracket</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator.bracket_sql-870"><a href="#BigQuery.Generator.bracket_sql-870"><span class="linenos">870</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> -</span><span id="BigQuery.Generator.bracket_sql-871"><a href="#BigQuery.Generator.bracket_sql-871"><span class="linenos">871</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> -</span><span id="BigQuery.Generator.bracket_sql-872"><a href="#BigQuery.Generator.bracket_sql-872"><span class="linenos">872</span></a> -</span><span id="BigQuery.Generator.bracket_sql-873"><a href="#BigQuery.Generator.bracket_sql-873"><span class="linenos">873</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">and</span> <span class="n">this</span> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">STRUCT</span><span class="p">):</span> -</span><span id="BigQuery.Generator.bracket_sql-874"><a href="#BigQuery.Generator.bracket_sql-874"><span class="linenos">874</span></a> <span class="n">arg</span> <span class="o">=</span> <span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> -</span><span id="BigQuery.Generator.bracket_sql-875"><a href="#BigQuery.Generator.bracket_sql-875"><span class="linenos">875</span></a> <span class="k">if</span> <span class="n">arg</span><span class="o">.</span><span class="n">type</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="BigQuery.Generator.bracket_sql-876"><a href="#BigQuery.Generator.bracket_sql-876"><span class="linenos">876</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span> -</span><span id="BigQuery.Generator.bracket_sql-877"><a href="#BigQuery.Generator.bracket_sql-877"><span class="linenos">877</span></a> -</span><span id="BigQuery.Generator.bracket_sql-878"><a href="#BigQuery.Generator.bracket_sql-878"><span class="linenos">878</span></a> <span class="n">arg</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> -</span><span id="BigQuery.Generator.bracket_sql-879"><a href="#BigQuery.Generator.bracket_sql-879"><span class="linenos">879</span></a> -</span><span id="BigQuery.Generator.bracket_sql-880"><a href="#BigQuery.Generator.bracket_sql-880"><span class="linenos">880</span></a> <span class="k">if</span> <span class="n">arg</span><span class="o">.</span><span class="n">type</span> <span class="ow">and</span> <span class="n">arg</span><span class="o">.</span><span class="n">type</span><span class="o">.</span><span class="n">this</span> <span class="ow">in</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">TEXT_TYPES</span><span class="p">:</span> -</span><span id="BigQuery.Generator.bracket_sql-881"><a href="#BigQuery.Generator.bracket_sql-881"><span class="linenos">881</span></a> <span class="c1"># BQ doesn't support bracket syntax with string values for structs</span> -</span><span id="BigQuery.Generator.bracket_sql-882"><a href="#BigQuery.Generator.bracket_sql-882"><span class="linenos">882</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">arg</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> -</span><span id="BigQuery.Generator.bracket_sql-883"><a href="#BigQuery.Generator.bracket_sql-883"><span class="linenos">883</span></a> -</span><span id="BigQuery.Generator.bracket_sql-884"><a href="#BigQuery.Generator.bracket_sql-884"><span class="linenos">884</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="BigQuery.Generator.bracket_sql-885"><a href="#BigQuery.Generator.bracket_sql-885"><span class="linenos">885</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"offset"</span><span class="p">)</span> -</span><span id="BigQuery.Generator.bracket_sql-886"><a href="#BigQuery.Generator.bracket_sql-886"><span class="linenos">886</span></a> -</span><span id="BigQuery.Generator.bracket_sql-887"><a href="#BigQuery.Generator.bracket_sql-887"><span class="linenos">887</span></a> <span class="k">if</span> <span class="n">offset</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> -</span><span id="BigQuery.Generator.bracket_sql-888"><a href="#BigQuery.Generator.bracket_sql-888"><span class="linenos">888</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"OFFSET(</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="BigQuery.Generator.bracket_sql-889"><a href="#BigQuery.Generator.bracket_sql-889"><span class="linenos">889</span></a> <span class="k">elif</span> <span class="n">offset</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="BigQuery.Generator.bracket_sql-890"><a href="#BigQuery.Generator.bracket_sql-890"><span class="linenos">890</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"ORDINAL(</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="BigQuery.Generator.bracket_sql-891"><a href="#BigQuery.Generator.bracket_sql-891"><span class="linenos">891</span></a> <span class="k">elif</span> <span class="n">offset</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="BigQuery.Generator.bracket_sql-892"><a href="#BigQuery.Generator.bracket_sql-892"><span class="linenos">892</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported array offset: </span><span class="si">{</span><span class="n">offset</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="BigQuery.Generator.bracket_sql-893"><a href="#BigQuery.Generator.bracket_sql-893"><span class="linenos">893</span></a> -</span><span id="BigQuery.Generator.bracket_sql-894"><a href="#BigQuery.Generator.bracket_sql-894"><span class="linenos">894</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"safe"</span><span class="p">):</span> -</span><span id="BigQuery.Generator.bracket_sql-895"><a href="#BigQuery.Generator.bracket_sql-895"><span class="linenos">895</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"SAFE_</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="BigQuery.Generator.bracket_sql-896"><a href="#BigQuery.Generator.bracket_sql-896"><span class="linenos">896</span></a> -</span><span id="BigQuery.Generator.bracket_sql-897"><a href="#BigQuery.Generator.bracket_sql-897"><span class="linenos">897</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">]"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.bracket_sql-868"><a href="#BigQuery.Generator.bracket_sql-868"><span class="linenos">868</span></a> <span class="k">def</span> <span class="nf">bracket_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Bracket</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator.bracket_sql-869"><a href="#BigQuery.Generator.bracket_sql-869"><span class="linenos">869</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> +</span><span id="BigQuery.Generator.bracket_sql-870"><a href="#BigQuery.Generator.bracket_sql-870"><span class="linenos">870</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="BigQuery.Generator.bracket_sql-871"><a href="#BigQuery.Generator.bracket_sql-871"><span class="linenos">871</span></a> +</span><span id="BigQuery.Generator.bracket_sql-872"><a href="#BigQuery.Generator.bracket_sql-872"><span class="linenos">872</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">and</span> <span class="n">this</span> <span class="ow">and</span> <span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">STRUCT</span><span class="p">):</span> +</span><span id="BigQuery.Generator.bracket_sql-873"><a href="#BigQuery.Generator.bracket_sql-873"><span class="linenos">873</span></a> <span class="n">arg</span> <span class="o">=</span> <span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> +</span><span id="BigQuery.Generator.bracket_sql-874"><a href="#BigQuery.Generator.bracket_sql-874"><span class="linenos">874</span></a> <span class="k">if</span> <span class="n">arg</span><span class="o">.</span><span class="n">type</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="BigQuery.Generator.bracket_sql-875"><a href="#BigQuery.Generator.bracket_sql-875"><span class="linenos">875</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span> +</span><span id="BigQuery.Generator.bracket_sql-876"><a href="#BigQuery.Generator.bracket_sql-876"><span class="linenos">876</span></a> +</span><span id="BigQuery.Generator.bracket_sql-877"><a href="#BigQuery.Generator.bracket_sql-877"><span class="linenos">877</span></a> <span class="n">arg</span> <span class="o">=</span> <span class="n">annotate_types</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> +</span><span id="BigQuery.Generator.bracket_sql-878"><a href="#BigQuery.Generator.bracket_sql-878"><span class="linenos">878</span></a> +</span><span id="BigQuery.Generator.bracket_sql-879"><a href="#BigQuery.Generator.bracket_sql-879"><span class="linenos">879</span></a> <span class="k">if</span> <span class="n">arg</span><span class="o">.</span><span class="n">type</span> <span class="ow">and</span> <span class="n">arg</span><span class="o">.</span><span class="n">type</span><span class="o">.</span><span class="n">this</span> <span class="ow">in</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">TEXT_TYPES</span><span class="p">:</span> +</span><span id="BigQuery.Generator.bracket_sql-880"><a href="#BigQuery.Generator.bracket_sql-880"><span class="linenos">880</span></a> <span class="c1"># BQ doesn't support bracket syntax with string values for structs</span> +</span><span id="BigQuery.Generator.bracket_sql-881"><a href="#BigQuery.Generator.bracket_sql-881"><span class="linenos">881</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">arg</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> +</span><span id="BigQuery.Generator.bracket_sql-882"><a href="#BigQuery.Generator.bracket_sql-882"><span class="linenos">882</span></a> +</span><span id="BigQuery.Generator.bracket_sql-883"><a href="#BigQuery.Generator.bracket_sql-883"><span class="linenos">883</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="BigQuery.Generator.bracket_sql-884"><a href="#BigQuery.Generator.bracket_sql-884"><span class="linenos">884</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"offset"</span><span class="p">)</span> +</span><span id="BigQuery.Generator.bracket_sql-885"><a href="#BigQuery.Generator.bracket_sql-885"><span class="linenos">885</span></a> +</span><span id="BigQuery.Generator.bracket_sql-886"><a href="#BigQuery.Generator.bracket_sql-886"><span class="linenos">886</span></a> <span class="k">if</span> <span class="n">offset</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> +</span><span id="BigQuery.Generator.bracket_sql-887"><a href="#BigQuery.Generator.bracket_sql-887"><span class="linenos">887</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"OFFSET(</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="BigQuery.Generator.bracket_sql-888"><a href="#BigQuery.Generator.bracket_sql-888"><span class="linenos">888</span></a> <span class="k">elif</span> <span class="n">offset</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="BigQuery.Generator.bracket_sql-889"><a href="#BigQuery.Generator.bracket_sql-889"><span class="linenos">889</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"ORDINAL(</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="BigQuery.Generator.bracket_sql-890"><a href="#BigQuery.Generator.bracket_sql-890"><span class="linenos">890</span></a> <span class="k">elif</span> <span class="n">offset</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="BigQuery.Generator.bracket_sql-891"><a href="#BigQuery.Generator.bracket_sql-891"><span class="linenos">891</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported array offset: </span><span class="si">{</span><span class="n">offset</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="BigQuery.Generator.bracket_sql-892"><a href="#BigQuery.Generator.bracket_sql-892"><span class="linenos">892</span></a> +</span><span id="BigQuery.Generator.bracket_sql-893"><a href="#BigQuery.Generator.bracket_sql-893"><span class="linenos">893</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"safe"</span><span class="p">):</span> +</span><span id="BigQuery.Generator.bracket_sql-894"><a href="#BigQuery.Generator.bracket_sql-894"><span class="linenos">894</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"SAFE_</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="BigQuery.Generator.bracket_sql-895"><a href="#BigQuery.Generator.bracket_sql-895"><span class="linenos">895</span></a> +</span><span id="BigQuery.Generator.bracket_sql-896"><a href="#BigQuery.Generator.bracket_sql-896"><span class="linenos">896</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">]"</span> </span></pre></div> @@ -4291,8 +4291,8 @@ Default: True</li> </div> <a class="headerlink" href="#BigQuery.Generator.in_unnest_op"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.in_unnest_op-899"><a href="#BigQuery.Generator.in_unnest_op-899"><span class="linenos">899</span></a> <span class="k">def</span> <span class="nf">in_unnest_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator.in_unnest_op-900"><a href="#BigQuery.Generator.in_unnest_op-900"><span class="linenos">900</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.in_unnest_op-898"><a href="#BigQuery.Generator.in_unnest_op-898"><span class="linenos">898</span></a> <span class="k">def</span> <span class="nf">in_unnest_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator.in_unnest_op-899"><a href="#BigQuery.Generator.in_unnest_op-899"><span class="linenos">899</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -4310,10 +4310,10 @@ Default: True</li> </div> <a class="headerlink" href="#BigQuery.Generator.except_op"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.except_op-902"><a href="#BigQuery.Generator.except_op-902"><span class="linenos">902</span></a> <span class="k">def</span> <span class="nf">except_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Except</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator.except_op-903"><a href="#BigQuery.Generator.except_op-903"><span class="linenos">903</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"distinct"</span><span class="p">):</span> -</span><span id="BigQuery.Generator.except_op-904"><a href="#BigQuery.Generator.except_op-904"><span class="linenos">904</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"EXCEPT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> -</span><span id="BigQuery.Generator.except_op-905"><a href="#BigQuery.Generator.except_op-905"><span class="linenos">905</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXCEPT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.except_op-901"><a href="#BigQuery.Generator.except_op-901"><span class="linenos">901</span></a> <span class="k">def</span> <span class="nf">except_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Except</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator.except_op-902"><a href="#BigQuery.Generator.except_op-902"><span class="linenos">902</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"distinct"</span><span class="p">):</span> +</span><span id="BigQuery.Generator.except_op-903"><a href="#BigQuery.Generator.except_op-903"><span class="linenos">903</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"EXCEPT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> +</span><span id="BigQuery.Generator.except_op-904"><a href="#BigQuery.Generator.except_op-904"><span class="linenos">904</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXCEPT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -4331,10 +4331,10 @@ Default: True</li> </div> <a class="headerlink" href="#BigQuery.Generator.intersect_op"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.intersect_op-907"><a href="#BigQuery.Generator.intersect_op-907"><span class="linenos">907</span></a> <span class="k">def</span> <span class="nf">intersect_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Intersect</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator.intersect_op-908"><a href="#BigQuery.Generator.intersect_op-908"><span class="linenos">908</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"distinct"</span><span class="p">):</span> -</span><span id="BigQuery.Generator.intersect_op-909"><a href="#BigQuery.Generator.intersect_op-909"><span class="linenos">909</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"INTERSECT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> -</span><span id="BigQuery.Generator.intersect_op-910"><a href="#BigQuery.Generator.intersect_op-910"><span class="linenos">910</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"INTERSECT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.intersect_op-906"><a href="#BigQuery.Generator.intersect_op-906"><span class="linenos">906</span></a> <span class="k">def</span> <span class="nf">intersect_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Intersect</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator.intersect_op-907"><a href="#BigQuery.Generator.intersect_op-907"><span class="linenos">907</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"distinct"</span><span class="p">):</span> +</span><span id="BigQuery.Generator.intersect_op-908"><a href="#BigQuery.Generator.intersect_op-908"><span class="linenos">908</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"INTERSECT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> +</span><span id="BigQuery.Generator.intersect_op-909"><a href="#BigQuery.Generator.intersect_op-909"><span class="linenos">909</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"INTERSECT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -4352,10 +4352,10 @@ Default: True</li> </div> <a class="headerlink" href="#BigQuery.Generator.version_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.version_sql-912"><a href="#BigQuery.Generator.version_sql-912"><span class="linenos">912</span></a> <span class="k">def</span> <span class="nf">version_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Version</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator.version_sql-913"><a href="#BigQuery.Generator.version_sql-913"><span class="linenos">913</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"TIMESTAMP"</span><span class="p">:</span> -</span><span id="BigQuery.Generator.version_sql-914"><a href="#BigQuery.Generator.version_sql-914"><span class="linenos">914</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="s2">"SYSTEM_TIME"</span><span class="p">)</span> -</span><span id="BigQuery.Generator.version_sql-915"><a href="#BigQuery.Generator.version_sql-915"><span class="linenos">915</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">version_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.version_sql-911"><a href="#BigQuery.Generator.version_sql-911"><span class="linenos">911</span></a> <span class="k">def</span> <span class="nf">version_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Version</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator.version_sql-912"><a href="#BigQuery.Generator.version_sql-912"><span class="linenos">912</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"TIMESTAMP"</span><span class="p">:</span> +</span><span id="BigQuery.Generator.version_sql-913"><a href="#BigQuery.Generator.version_sql-913"><span class="linenos">913</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="s2">"SYSTEM_TIME"</span><span class="p">)</span> +</span><span id="BigQuery.Generator.version_sql-914"><a href="#BigQuery.Generator.version_sql-914"><span class="linenos">914</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">version_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -4774,6 +4774,7 @@ Default: True</li> <dd id="BigQuery.Generator.semicolon_sql" class="function"><a href="../generator.html#Generator.semicolon_sql">semicolon_sql</a></dd> <dd id="BigQuery.Generator.datadeletionproperty_sql" class="function"><a href="../generator.html#Generator.datadeletionproperty_sql">datadeletionproperty_sql</a></dd> <dd id="BigQuery.Generator.maskingpolicycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.maskingpolicycolumnconstraint_sql">maskingpolicycolumnconstraint_sql</a></dd> + <dd id="BigQuery.Generator.gapfill_sql" class="function"><a href="../generator.html#Generator.gapfill_sql">gapfill_sql</a></dd> </div> </dl> |