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

Python to construct CASE WHEN update SQL statement #970

Closed
elad2109 opened this issue Sep 14, 2021 · 5 comments · Fixed by #974
Closed

Python to construct CASE WHEN update SQL statement #970

elad2109 opened this issue Sep 14, 2021 · 5 comments · Fixed by #974
Assignees
Labels
api: bigquery Issues related to the googleapis/python-bigquery API. priority: p1 Important issue which blocks shipping the next release. Will be fixed prior to next release. type: bug Error or flaw in code with unintended results or allowing sub-optimal usage patterns.

Comments

@elad2109
Copy link

I try to update 2K rows in BQ

def update_bq_ads_status_failed(self, update_ads):
        affected_rows = 0
        for update_ads_chunk in split(update_ads, _UPDATE_CHUNK_SIZE):
            ad_ids = [item["ad_id"] for item in update_ads_chunk]
            removal_errors = [item["removal_error"] for item in update_ads_chunk]

            update_removal_error = ""
            for ad_id, removal_error in zip(ad_ids, removal_errors):
                update_removal_error = update_removal_error + \
                                       f''' WHEN ad_id = '{ad_id}' Then '{removal_error}' '''
            affected_rows += self.update_bq_ads_status(f"""
                            UPDATE '{table_full_name}' 
                            SET status = 'Failed Removing'  
                SET removal_error = CASE {update_removal_error} END 
                WHERE ad_id IN {str(ad_ids)}
                """)
        return affected_rows

I'm getting this error. I know it's too vague and not possible to debug like this.

timeout=300.0, headers={'X-Server-Timeout': '300.0',
'Accept-Encoding': 'gzip', 'Content-Type': 'application/json',
'X-Goog-API-Client': 'gl-python/3.8.10 grpc/1.39.0 gax/2.0.0
gapic/2.26.0 gccl/2.26.0', 'User-Agent': 'gl-python/3.8.10 grpc/1.39.0
gax/2.0.0 gapic/2.26.0 gccl/2.26.0'})), last exception: ('Connection
aborted.', RemoteDisconnected('Remote end closed connection without
response'))

I'm trying to eliminate errors. Is my BQ update syntactically correct?

What's the BQ update timeout?

@JustinBeckwith JustinBeckwith transferred this issue from googleapis/google-cloud-node Sep 14, 2021
@busunkim96
Copy link
Contributor

It looks like the library version in x-goog-api-client is 2.26.0, which is the latest version of [google-cloud-bigquery](https://pypi.org/project/google-cloud-bigquery/. The latest release of google-api-python-client is 2.20.0.

@elad2109 Could you confirm which library you are using (google-api-python-client or google-cloud-bigquery?

@busunkim96 busunkim96 transferred this issue from googleapis/google-api-python-client Sep 14, 2021
@product-auto-label product-auto-label bot added the api: bigquery Issues related to the googleapis/python-bigquery API. label Sep 14, 2021
@elad2109
Copy link
Author

It looks like the library version in x-goog-api-client is 2.26.0, which is the latest version of [google-cloud-bigquery](https://pypi.org/project/google-cloud-bigquery/. The latest release of google-api-python-client is 2.20.0.

@elad2109 Could you confirm which library you are using (google-api-python-client or google-cloud-bigquery?

Sorry for asking, is there any easy way cmd to run to verify?

@busunkim96
Copy link
Contributor

@elad2109 Ah no worries, a pip freeze (assuming you're using pip) will show the packages you currently have installed.

Alternatively, you can check the imports in your code:
from google.cloud import bigquery for google-cloud-bigquery

from googleapiclient import discovery for google-api-python-client

@elad2109
Copy link
Author

My code has from google.cloud import bigquery

@meredithslota meredithslota added the type: question Request for information or clarification. Not an issue. label Sep 16, 2021
@tswast tswast added priority: p1 Important issue which blocks shipping the next release. Will be fixed prior to next release. type: bug Error or flaw in code with unintended results or allowing sub-optimal usage patterns. and removed type: question Request for information or clarification. Not an issue. labels Sep 17, 2021
@tswast tswast self-assigned this Sep 17, 2021
@tswast
Copy link
Contributor

tswast commented Sep 17, 2021

It looks like the default timeout of 5 minutes (60 * 5 seconds) might not be long enough. The default timeout was added in #896 in response to a request from the backend engineering folks.

It seems to me we should remove the default timeout, though the logic to add the X-Server-Timeout header if a timeout is explicitly set should remain.

@tswast tswast mentioned this issue Sep 17, 2021
4 tasks
gcf-merge-on-green bot pushed a commit that referenced this issue Sep 21, 2021
Internal folks, see: go/microgenerator-retries

> "Methods will **not** hedge by default." (emphasis mine)

Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly:
- [ ] Make sure to open an issue as a [bug/issue](https://github.com/googleapis/python-bigquery/issues/new/choose) before writing your code!  That way we can discuss the change, evaluate designs, and agree on the general idea
- [ ] Ensure the tests and linter pass
- [ ] Code coverage does not decrease (if any source code was changed)
- [ ] Appropriate docs were updated (if necessary)

Fixes #970 🦕
abdelmegahedgoogle pushed a commit to abdelmegahedgoogle/python-bigquery that referenced this issue Apr 17, 2023
Internal folks, see: go/microgenerator-retries

> "Methods will **not** hedge by default." (emphasis mine)

Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly:
- [ ] Make sure to open an issue as a [bug/issue](https://github.com/googleapis/python-bigquery/issues/new/choose) before writing your code!  That way we can discuss the change, evaluate designs, and agree on the general idea
- [ ] Ensure the tests and linter pass
- [ ] Code coverage does not decrease (if any source code was changed)
- [ ] Appropriate docs were updated (if necessary)

Fixes googleapis#970 🦕
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api: bigquery Issues related to the googleapis/python-bigquery API. priority: p1 Important issue which blocks shipping the next release. Will be fixed prior to next release. type: bug Error or flaw in code with unintended results or allowing sub-optimal usage patterns.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants