From 2e9543076a2f9b1c854476577a7812499b25844c Mon Sep 17 00:00:00 2001 From: Ruxandra Burtica <ruxandra.burtica@gmail.com> Date: Thu, 25 Aug 2016 15:58:08 +0300 Subject: [PATCH 1/7] Added possibility of querying from multiple tables, using date_range. --- bigquery/query_builder.py | 44 +++++++++++++++++++++++++++++++++------ 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/bigquery/query_builder.py b/bigquery/query_builder.py index 7362148..c7864f0 100644 --- a/bigquery/query_builder.py +++ b/bigquery/query_builder.py @@ -138,7 +138,20 @@ def _render_sources(dataset, tables): dataset : str The data set to fetch log data from. tables : Union[dict, list] - The tables to fetch log data from + The tables to fetch log data from; detailed formats are described below: + list: + tables = [table1, table2, table3] + dict: + tables = { + 'date_range': True, + 'include_intraday': True/False, + 'table': 'ga_sessions_', + 'from_date': '2016-08-01', + 'to_date': '2016-08-24' + } + + Note! that when setting include_intraday to True, it is probable + that incomplete data is returned. Returns ------- @@ -149,11 +162,20 @@ def _render_sources(dataset, tables): if isinstance(tables, dict): if tables.get('date_range', False): try: - dataset_table = '.'.join([dataset, tables['table']]) - return "FROM (TABLE_DATE_RANGE([{}], TIMESTAMP('{}'),"\ - " TIMESTAMP('{}'))) ".format(dataset_table, - tables['from_date'], - tables['to_date']) + table_list = tables['table'] + if isinstance(table_list, basestring): + table_list = [table_list] + + from_list = [] + for single_table in table_list: + from_string = _render_single_source( + dataset, single_table, + tables['from_date'], tables['to_date']) + from_list.append(from_string) + from_strings = ', '.join(from_list) + + return "FROM {}".format(from_strings) + except KeyError as exp: logger.warn( 'Missing parameter %s in selecting sources' % (exp)) @@ -163,6 +185,16 @@ def _render_sources(dataset, tables): ["[%s.%s]" % (dataset, table) for table in tables]) +def _render_single_source(dataset, table, from_date, to_date): + dataset_table = '.'.join([dataset, table]) + from_string = ( + "(TABLE_DATE_RANGE([{}], " + "TIMESTAMP('{}'), TIMESTAMP('{}'))) ".format( + dataset_table, from_date, to_date) + ) + return from_string + + def _render_conditions(conditions): """Render the conditions part of a query. From 599b231e896880436eae2ba3ec9b195b5fa5c6cf Mon Sep 17 00:00:00 2001 From: Ruxandra Burtica <ruxandra.burtica@gmail.com> Date: Thu, 25 Aug 2016 16:02:48 +0300 Subject: [PATCH 2/7] Removed parameter. --- bigquery/query_builder.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/bigquery/query_builder.py b/bigquery/query_builder.py index c7864f0..5642790 100644 --- a/bigquery/query_builder.py +++ b/bigquery/query_builder.py @@ -144,15 +144,13 @@ def _render_sources(dataset, tables): dict: tables = { 'date_range': True, - 'include_intraday': True/False, 'table': 'ga_sessions_', + # OR + # 'table': ['ga_sessions_', 'ga_sessions_intraday_'], 'from_date': '2016-08-01', 'to_date': '2016-08-24' } - Note! that when setting include_intraday to True, it is probable - that incomplete data is returned. - Returns ------- str From bd78a281b42b700bf31b8c652925ef6a5a8e7ae0 Mon Sep 17 00:00:00 2001 From: Ruxandra Burtica <ruxandra.burtica@gmail.com> Date: Thu, 25 Aug 2016 16:18:34 +0300 Subject: [PATCH 3/7] Using str instead of basestring & incremented version. --- bigquery/query_builder.py | 2 +- bigquery/version.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bigquery/query_builder.py b/bigquery/query_builder.py index 5642790..235007e 100644 --- a/bigquery/query_builder.py +++ b/bigquery/query_builder.py @@ -161,7 +161,7 @@ def _render_sources(dataset, tables): if tables.get('date_range', False): try: table_list = tables['table'] - if isinstance(table_list, basestring): + if isinstance(table_list, str): table_list = [table_list] from_list = [] diff --git a/bigquery/version.py b/bigquery/version.py index b280975..e8b6b09 100644 --- a/bigquery/version.py +++ b/bigquery/version.py @@ -1 +1 @@ -__version__ = '1.8.0' +__version__ = '1.8.1' From 37ec356a9faa2d6af0f842ec35cde8e4677eccef Mon Sep 17 00:00:00 2001 From: Ruxandra Burtica <ruxandra.burtica@gmail.com> Date: Tue, 28 Nov 2017 14:48:28 +0200 Subject: [PATCH 4/7] Create requirements.txt --- requirements.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 requirements.txt diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..5b8aed8 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,3 @@ +google-api-python-client +httplib2 +python-dateutil From 43fe45daf15743873f18b709991c1b8d5cf8ee1a Mon Sep 17 00:00:00 2001 From: Ruxandra Burtica <ruxandra.burtica@gmail.com> Date: Tue, 28 Nov 2017 14:51:30 +0200 Subject: [PATCH 5/7] Rename README.md to README_TEST.md --- README_TEST.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 README_TEST.md diff --git a/README_TEST.md b/README_TEST.md new file mode 100644 index 0000000..8187010 --- /dev/null +++ b/README_TEST.md @@ -0,0 +1 @@ +New file for testing CI/CD From 57e6887b2db4f6882b88b0eca3544ed24a22c3af Mon Sep 17 00:00:00 2001 From: Ruxandra Burtica <ruxandra.burtica@gmail.com> Date: Tue, 28 Nov 2017 14:54:20 +0200 Subject: [PATCH 6/7] Breaking CI/CD --- requirements.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index 5b8aed8..d8055e0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1 @@ google-api-python-client -httplib2 -python-dateutil From 74b9e2ee4d7c467084e842004bb72ffab5edb793 Mon Sep 17 00:00:00 2001 From: Ruxandra Burtica <ruxandra.burtica@gmail.com> Date: Tue, 28 Nov 2017 15:28:35 +0200 Subject: [PATCH 7/7] Update requirements.txt --- requirements.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/requirements.txt b/requirements.txt index d8055e0..5b8aed8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,3 @@ google-api-python-client +httplib2 +python-dateutil