summaryrefslogtreecommitdiff
path: root/examples/bigquery_view_parser.py
diff options
context:
space:
mode:
authorMichael Smedberg <msmedberg@zendesk.com>2019-09-27 02:28:47 -0700
committerPaul McGuire <ptmcg@users.noreply.github.com>2019-09-27 04:28:47 -0500
commiteabd20f8ca330d948f740cee7699e39d519b4285 (patch)
tree68937f42044aa707ca3e61d5688ef2910ea48a45 /examples/bigquery_view_parser.py
parent3e5b2660c47d5ba50781bfbcdf291a1f829b9a88 (diff)
downloadpyparsing-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.py17
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')
+ ]
]
]