diff options
author | Michael Smedberg <msmedberg@zendesk.com> | 2019-09-27 02:28:47 -0700 |
---|---|---|
committer | Paul McGuire <ptmcg@users.noreply.github.com> | 2019-09-27 04:28:47 -0500 |
commit | eabd20f8ca330d948f740cee7699e39d519b4285 (patch) | |
tree | 68937f42044aa707ca3e61d5688ef2910ea48a45 /examples/bigquery_view_parser.py | |
parent | 3e5b2660c47d5ba50781bfbcdf291a1f829b9a88 (diff) | |
download | pyparsing-git-eabd20f8ca330d948f740cee7699e39d519b4285.tar.gz |
BigQuery View parse fails on IGNORE NULLS (#126)
Diffstat (limited to 'examples/bigquery_view_parser.py')
-rw-r--r-- | examples/bigquery_view_parser.py | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/examples/bigquery_view_parser.py b/examples/bigquery_view_parser.py index 86e01e5..f66155e 100644 --- a/examples/bigquery_view_parser.py +++ b/examples/bigquery_view_parser.py @@ -80,7 +80,7 @@ class BigQueryViewParser: COVAR_POP, COVAR_SAMP, STDDEV_POP, STDDEV_SAMP, STDDEV, VAR_POP, VAR_SAMP, VARIANCE, TIMESTAMP_ADD, TIMESTAMP_SUB, GENERATE_ARRAY, GENERATE_DATE_ARRAY, GENERATE_TIMESTAMP_ARRAY, FOR, SYSTEMTIME, AS, - OF, WINDOW + OF, WINDOW, RESPECT, IGNORE, NULLS ) = map(CaselessKeyword, """ UNION, ALL, AND, INTERSECT, EXCEPT, COLLATE, ASC, DESC, ON, USING, @@ -101,7 +101,7 @@ class BigQueryViewParser: COVAR_POP, COVAR_SAMP, STDDEV_POP, STDDEV_SAMP, STDDEV, VAR_POP, VAR_SAMP, VARIANCE, TIMESTAMP_ADD, TIMESTAMP_SUB, GENERATE_ARRAY, GENERATE_DATE_ARRAY, GENERATE_TIMESTAMP_ARRAY, FOR, SYSTEMTIME, AS, - OF, WINDOW + OF, WINDOW, RESPECT, IGNORE, NULLS """.replace(",", "").split()) keyword_nonfunctions = MatchFirst(( @@ -197,7 +197,7 @@ class BigQueryViewParser: function_arg = expr.copy()("function_arg") function_args = Optional( "*" - | Optional(DISTINCT) + delimitedList(function_arg) + | Optional(DISTINCT) + delimitedList(function_arg) + Optional((RESPECT | IGNORE) + NULLS) )("function_args") function_call = ( (function_name | keyword)("function_name") @@ -1511,6 +1511,17 @@ class BigQueryViewParser: (None, None, 'b'), (None, None, 'z') ] + ], + + [ + """ + SELECT DISTINCT + FIRST_VALUE(x IGNORE NULLS) OVER (PARTITION BY y) + FROM z + """, + [ + (None, None, 'z') + ] ] ] |