Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

array_agg() fails because of TypeError #22

Closed
jasonqng opened this issue Mar 22, 2017 · 3 comments
Closed

array_agg() fails because of TypeError #22

jasonqng opened this issue Mar 22, 2017 · 3 comments
Labels
help wanted We'd love to have community involvement on this issue. type: bug Error or flaw in code with unintended results or allowing sub-optimal usage patterns.

Comments

@jasonqng
Copy link
Contributor

jasonqng commented Mar 22, 2017

Version: 0.1.4

When doing array_agg() on a column of INTs, you get a TypeError. The same query works fine in Big Query UI.

q = """
SELECT a, array_agg(mean_rank) ranks, count(*) ct
FROM `table`
group by a 
"""
gbq.read_gbq(q, dialect='standard', verbose=False, project_id='project')

Another example query to reproduce:

select array_agg(a)
from
(select 1 a)

Error message:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-4-b8c08e788608> in <module>()
      5 
      6 """
----> 7 gbq.read_gbq(q, dialect='standard', verbose=False, project_id='project')
      8

/home/jasonng/anaconda2/lib/python2.7/site-packages/pandas_gbq/gbq.pyc in read_gbq(query, project_id, index_col, col_order, reauth, verbose, private_key, dialect, **kwargs)
    725     while len(pages) > 0:
    726         page = pages.pop()
--> 727         dataframe_list.append(_parse_data(schema, page))
    728 
    729     if len(dataframe_list) > 0:

/home/jasonng/anaconda2/lib/python2.7/site-packages/pandas_gbq/gbq.pyc in _parse_data(schema, rows)
    621         for col_num, field_type in enumerate(col_types):
    622             field_value = _parse_entry(entries[col_num].get('v', ''),
--> 623                                        field_type)
    624             page_array[row_num][col_num] = field_value
    625 

/home/jasonng/anaconda2/lib/python2.7/site-packages/pandas_gbq/gbq.pyc in _parse_entry(field_value, field_type)
    631         return None
    632     if field_type == 'INTEGER':
--> 633         return int(field_value)
    634     elif field_type == 'FLOAT':
    635         return float(field_value)

TypeError: int() argument must be a string or a number, not 'list'
@parthea parthea added type: bug Error or flaw in code with unintended results or allowing sub-optimal usage patterns. help wanted We'd love to have community involvement on this issue. labels Mar 22, 2017
@jasonqng
Copy link
Contributor Author

jasonqng commented Apr 7, 2017

Switching over to google-cloud-python would solve this. See comment and code here: #23 (comment)

@tswast
Copy link
Collaborator

tswast commented Dec 20, 2017

Let's add a test case for this, and include it in the changelog.

@jasonqng
Copy link
Contributor Author

PR for test here: #101

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted We'd love to have community involvement on this issue. type: bug Error or flaw in code with unintended results or allowing sub-optimal usage patterns.
Projects
None yet
Development

No branches or pull requests

3 participants