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

get_view_definition ignores schema field #539

Open
criccomini opened this issue Dec 22, 2022 · 1 comment
Open

get_view_definition ignores schema field #539

criccomini opened this issue Dec 22, 2022 · 1 comment
Labels
api: bigquery Issues related to the googleapis/python-bigquery-sqlalchemy API. type: feature request ‘Nice-to-have’ improvement, new feature or different behavior or design.

Comments

@criccomini
Copy link

Thanks for stopping by to let us know something could be better!

Environment details

  • OS type and version: Mac Ventura 13.0.1
  • Python version: Python 3.10.0
  • pip version: pip 22.3.1
  • sqlalchemy-bigquery version: 1.5.0

Steps to reproduce

  1. Create a SqlAlchemy BigQuery engine with bigquery://some-project-12345
  2. Set table = 'some_table' where some_table exists in dataset some-project-12345.some_schema
  3. Set schema = 'some_schema' where some_schema exists in project some-project-12345
  4. Call sqlalchemy.inspect(engine).get_view_definition(table, schema)

In the stack trace below, I used the table 311_service_requests in my project, under a austin_311 dataset. (NOTE: I did NOT use the sample data project. I copied the austin data table into a austin_311 dataset under my project.)

Stack trace

╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ /Users/chrisriccomini/Code/recap/recap/cli.py:39 in refresh                                      │
│                                                                                                  │
│   36 │   │   for crawler_config in crawler_config_list:                                          │
│   37 │   │   │   if not url or url == crawler_config.get('url'):                                 │
│   38 │   │   │   │   with crawlers.open(ca, **crawler_config) as cr:                             │
│ ❱ 39 │   │   │   │   │   cr.crawl()                                                              │
│   40                                                                                             │
│   41                                                                                             │
│   42 @app.command()                                                                              │
│                                                                                                  │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │                  ca = <recap.catalog.duckdb.DuckDbCatalog object at 0x116ce5a50>             │ │
│ │                  cr = <recap.crawlers.db.crawler.DatabaseCrawler object at 0x117d2ceb0>      │ │
│ │      crawler_config = <Box: {'url': 'bigquery://some-r'}>                         │ │
│ │ crawler_config_list = <BoxList: [{'url': 'bigquery://some-project-12345'}]>                   │ │
│ │        crawler_urls = set()                                                                  │ │
│ │            crawlers = <module 'recap.crawlers' from                                          │ │
│ │                       '/Users/chrisriccomini/Code/recap/recap/crawlers/__init__.py'>         │ │
│ │                 url = 'bigquery://some-project-12345'                                         │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
│                                                                                                  │
│ /Users/chrisriccomini/Code/recap/recap/crawlers/db/crawler.py:44 in crawl                        │
│                                                                                                  │
│    41 │   │   │   │   │   view=view                                                              │
│    42 │   │   │   │   )                                                                          │
│    43 │   │   │   for table in tables:                                                           │
│ ❱  44 │   │   │   │   self._write_table_or_view(                                                 │
│    45 │   │   │   │   │   schema,                                                                │
│    46 │   │   │   │   │   table=table                                                            │
│    47 │   │   │   │   )                                                                          │
│                                                                                                  │
│ ╭────────────────────────────────── locals ───────────────────────────────────╮                  │
│ │  schema = 'austin_311'                                                      │                  │
│ │ schemas = ['austin_311']                                                    │                  │
│ │    self = <recap.crawlers.db.crawler.DatabaseCrawler object at 0x117d2ceb0> │                  │
│ │   table = '311_service_requests'                                            │                  │
│ │  tables = ['311_service_requests']                                          │                  │
│ │   views = []                                                                │                  │
│ ╰─────────────────────────────────────────────────────────────────────────────╯                  │
│                                                                                                  │
│ /Users/chrisriccomini/Code/recap/recap/crawlers/db/crawler.py:128 in _write_table_or_view        │
│                                                                                                  │
│   125 │   │   )                                                                                  │
│   126 │   │                                                                                      │
│   127 │   │   table_or_view = table or view                                                      │
│ ❱ 128 │   │   analysis_dicts = self._analyze_table_or_view(schema, table_or_view) | { # pyrigh   │
│   129 │   │   │   # TODO This seems kind of hacky. Maybe it should be an analyzer?               │
│   130 │   │   │   'location': location,                                                          │
│   131 │   │   }                                                                                  │
│                                                                                                  │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │      location = {                                                                            │ │
│ │                 │   'database': 'bigquery',                                                  │ │
│ │                 │   'instance': 'some-project-12345',                                         │ │
│ │                 │   'schema': 'austin_311',                                                  │ │
│ │                 │   'table': '311_service_requests'                                          │ │
│ │                 }                                                                            │ │
│ │          path = PurePosixPath('databases/bigquery/instances/some-project-12345/schemas/austi… │ │
│ │        schema = 'austin_311'                                                                 │ │
│ │          self = <recap.crawlers.db.crawler.DatabaseCrawler object at 0x117d2ceb0>            │ │
│ │         table = '311_service_requests'                                                       │ │
│ │ table_or_view = '311_service_requests'                                                       │ │
│ │          view = None                                                                         │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
│                                                                                                  │
│ /Users/chrisriccomini/Code/recap/recap/crawlers/db/crawler.py:165 in _analyze_table_or_view      │
│                                                                                                  │
│   162 │   │   for analyzer in self.analyzers:                                                    │
│   163 │   │   │   if issubclass(type(analyzer), AbstractTableAnalyzer):                          │
│   164 │   │   │   │   print(f"{schema}.{table_or_view} :: {analyzer}")                           │
│ ❱ 165 │   │   │   │   results |= analyzer.analyze(schema, table_or_view)                         │
│   166 │   │   return results                                                                     │
│   167                                                                                            │
│                                                                                                  │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │      analyzer = <recap.crawlers.db.analyzers.ViewDefinitionAnalyzer object at 0x117d2db10>   │ │
│ │       results = {                                                                            │ │
│ │                 │   'columns': {                                                             │ │
│ │                 │   │   'unique_key': {                                                      │ │
│ │                 │   │   │   'type': 'VARCHAR',                                               │ │
│ │                 │   │   │   'nullable': True,                                                │ │
│ │                 │   │   │   'comment': 'The service request tracking number.',               │ │
│ │                 │   │   │   'default': None,                                                 │ │
│ │                 │   │   │   'precision': None,                                               │ │
│ │                 │   │   │   'scale': None,                                                   │ │
│ │                 │   │   │   'max_length': None,                                              │ │
│ │                 │   │   │   'generic_type': 'VARCHAR'                                        │ │
│ │                 │   │   },                                                                   │ │
│ │                 │   │   'complaint_description': {                                           │ │
│ │                 │   │   │   'type': 'VARCHAR',                                               │ │
│ │                 │   │   │   'nullable': True,                                                │ │
│ │                 │   │   │   'comment': 'Service request type',                               │ │
│ │                 │   │   │   'default': None,                                                 │ │
│ │                 │   │   │   'precision': None,                                               │ │
│ │                 │   │   │   'scale': None,                                                   │ │
│ │                 │   │   │   'max_length': None,                                              │ │
│ │                 │   │   │   'generic_type': 'VARCHAR'                                        │ │
│ │                 │   │   },                                                                   │ │
│ │                 │   │   'source': {                                                          │ │
│ │                 │   │   │   'type': 'VARCHAR',                                               │ │
│ │                 │   │   │   'nullable': True,                                                │ │
│ │                 │   │   │   'comment': 'Contact method Service request was received from.    │ │
│ │                 Mass entry requests are submit'+47,                                          │ │
│ │                 │   │   │   'default': None,                                                 │ │
│ │                 │   │   │   'precision': None,                                               │ │
│ │                 │   │   │   'scale': None,                                                   │ │
│ │                 │   │   │   'max_length': None,                                              │ │
│ │                 │   │   │   'generic_type': 'VARCHAR'                                        │ │
│ │                 │   │   },                                                                   │ │
│ │                 │   │   'status': {                                                          │ │
│ │                 │   │   │   'type': 'VARCHAR',                                               │ │
│ │                 │   │   │   'nullable': True,                                                │ │
│ │                 │   │   │   'comment': 'Service request status. Duplicate statuses indicate  │ │
│ │                 that issue had previously be'+21,                                            │ │
│ │                 │   │   │   'default': None,                                                 │ │
│ │                 │   │   │   'precision': None,                                               │ │
│ │                 │   │   │   'scale': None,                                                   │ │
│ │                 │   │   │   'max_length': None,                                              │ │
│ │                 │   │   │   'generic_type': 'VARCHAR'                                        │ │
│ │                 │   │   },                                                                   │ │
│ │                 │   │   'status_change_date': {                                              │ │
│ │                 │   │   │   'type': 'TIMESTAMP',                                             │ │
│ │                 │   │   │   'nullable': True,                                                │ │
│ │                 │   │   │   'comment': 'Date of last Service request status change. Status   │ │
│ │                 changes occur when service re'+73,                                           │ │
│ │                 │   │   │   'default': None,                                                 │ │
│ │                 │   │   │   'precision': None,                                               │ │
│ │                 │   │   │   'scale': None,                                                   │ │
│ │                 │   │   │   'max_length': None,                                              │ │
│ │                 │   │   │   'generic_type': 'DATETIME'                                       │ │
│ │                 │   │   },                                                                   │ │
│ │                 │   │   'created_date': {                                                    │ │
│ │                 │   │   │   'type': 'TIMESTAMP',                                             │ │
│ │                 │   │   │   'nullable': True,                                                │ │
│ │                 │   │   │   'comment': 'Date Service request was created.',                  │ │
│ │                 │   │   │   'default': None,                                                 │ │
│ │                 │   │   │   'precision': None,                                               │ │
│ │                 │   │   │   'scale': None,                                                   │ │
│ │                 │   │   │   'max_length': None,                                              │ │
│ │                 │   │   │   'generic_type': 'DATETIME'                                       │ │
│ │                 │   │   },                                                                   │ │
│ │                 │   │   'last_update_date': {                                                │ │
│ │                 │   │   │   'type': 'TIMESTAMP',                                             │ │
│ │                 │   │   │   'nullable': True,                                                │ │
│ │                 │   │   │   'comment': 'Date Service request was updated. Last date Service  │ │
│ │                 request received updates. Up'+82,                                            │ │
│ │                 │   │   │   'default': None,                                                 │ │
│ │                 │   │   │   'precision': None,                                               │ │
│ │                 │   │   │   'scale': None,                                                   │ │
│ │                 │   │   │   'max_length': None,                                              │ │
│ │                 │   │   │   'generic_type': 'DATETIME'                                       │ │
│ │                 │   │   },                                                                   │ │
│ │                 │   │   'close_date': {                                                      │ │
│ │                 │   │   │   'type': 'TIMESTAMP',                                             │ │
│ │                 │   │   │   'nullable': True,                                                │ │
│ │                 │   │   │   'comment': 'Date Service request was closed.',                   │ │
│ │                 │   │   │   'default': None,                                                 │ │
│ │                 │   │   │   'precision': None,                                               │ │
│ │                 │   │   │   'scale': None,                                                   │ │
│ │                 │   │   │   'max_length': None,                                              │ │
│ │                 │   │   │   'generic_type': 'DATETIME'                                       │ │
│ │                 │   │   },                                                                   │ │
│ │                 │   │   'incident_address': {                                                │ │
│ │                 │   │   │   'type': 'VARCHAR',                                               │ │
│ │                 │   │   │   'nullable': True,                                                │ │
│ │                 │   │   │   'comment': 'Service location of Service request.',               │ │
│ │                 │   │   │   'default': None,                                                 │ │
│ │                 │   │   │   'precision': None,                                               │ │
│ │                 │   │   │   'scale': None,                                                   │ │
│ │                 │   │   │   'max_length': None,                                              │ │
│ │                 │   │   │   'generic_type': 'VARCHAR'                                        │ │
│ │                 │   │   },                                                                   │ │
│ │                 │   │   'street_number': {                                                   │ │
│ │                 │   │   │   'type': 'VARCHAR',                                               │ │
│ │                 │   │   │   'nullable': True,                                                │ │
│ │                 │   │   │   'comment': 'Parsed location information. Street number.',        │ │
│ │                 │   │   │   'default': None,                                                 │ │
│ │                 │   │   │   'precision': None,                                               │ │
│ │                 │   │   │   'scale': None,                                                   │ │
│ │                 │   │   │   'max_length': None,                                              │ │
│ │                 │   │   │   'generic_type': 'VARCHAR'                                        │ │
│ │                 │   │   },                                                                   │ │
│ │                 │   │   ... +12                                                              │ │
│ │                 │   },                                                                       │ │
│ │                 │   'data_profile': {                                                        │ │
│ │                 │   │   'unique_key': {                                                      │ │
│ │                 │   │   │   'count': 1393024,                                                │ │
│ │                 │   │   │   'distinct': 1393024,                                             │ │
│ │                 │   │   │   'nulls': 0,                                                      │ │
│ │                 │   │   │   'min_length': 3,                                                 │ │
│ │                 │   │   │   'max_length': 11,                                                │ │
│ │                 │   │   │   'empty_strings': 0                                               │ │
│ │                 │   │   },                                                                   │ │
│ │                 │   │   'complaint_description': {                                           │ │
│ │                 │   │   │   'count': 1393024,                                                │ │
│ │                 │   │   │   'distinct': 264,                                                 │ │
│ │                 │   │   │   'nulls': 0,                                                      │ │
│ │                 │   │   │   'min_length': 9,                                                 │ │
│ │                 │   │   │   'max_length': 53,                                                │ │
│ │                 │   │   │   'empty_strings': 0                                               │ │
│ │                 │   │   },                                                                   │ │
│ │                 │   │   'source': {                                                          │ │
│ │                 │   │   │   'count': 1393024,                                                │ │
│ │                 │   │   │   'distinct': 19,                                                  │ │
│ │                 │   │   │   'nulls': 0,                                                      │ │
│ │                 │   │   │   'min_length': 3,                                                 │ │
│ │                 │   │   │   'max_length': 18,                                                │ │
│ │                 │   │   │   'empty_strings': 0                                               │ │
│ │                 │   │   },                                                                   │ │
│ │                 │   │   'status': {                                                          │ │
│ │                 │   │   │   'count': 1393024,                                                │ │
│ │                 │   │   │   'distinct': 12,                                                  │ │
│ │                 │   │   │   'nulls': 0,                                                      │ │
│ │                 │   │   │   'min_length': 3,                                                 │ │
│ │                 │   │   │   'max_length': 30,                                                │ │
│ │                 │   │   │   'empty_strings': 0                                               │ │
│ │                 │   │   },                                                                   │ │
│ │                 │   │   'status_change_date': {                                              │ │
│ │                 │   │   │   'count': 1393024,                                                │ │
│ │                 │   │   │   'min': '2014-01-01 12:36:05+00',                                 │ │
│ │                 │   │   │   'max': '2022-12-18 17:30:05+00',                                 │ │
│ │                 │   │   │   'distinct': 1303276,                                             │ │
│ │                 │   │   │   'nulls': 0,                                                      │ │
│ │                 │   │   │   'unix_epochs': 0                                                 │ │
│ │                 │   │   },                                                                   │ │
│ │                 │   │   'created_date': {                                                    │ │
│ │                 │   │   │   'count': 1393024,                                                │ │
│ │                 │   │   │   'min': '2014-01-01 01:45:50+00',                                 │ │
│ │                 │   │   │   'max': '2022-12-18 17:30:05+00',                                 │ │
│ │                 │   │   │   'distinct': 1381214,                                             │ │
│ │                 │   │   │   'nulls': 0,                                                      │ │
│ │                 │   │   │   'unix_epochs': 0                                                 │ │
│ │                 │   │   },                                                                   │ │
│ │                 │   │   'last_update_date': {                                                │ │
│ │                 │   │   │   'count': 1393024,                                                │ │
│ │                 │   │   │   'min': '2014-01-03 00:04:12+00',                                 │ │
│ │                 │   │   │   'max': '2022-12-18 17:30:23+00',                                 │ │
│ │                 │   │   │   'distinct': 1311974,                                             │ │
│ │                 │   │   │   'nulls': 0,                                                      │ │
│ │                 │   │   │   'unix_epochs': 0                                                 │ │
│ │                 │   │   },                                                                   │ │
│ │                 │   │   'close_date': {                                                      │ │
│ │                 │   │   │   'count': 1393024,                                                │ │
│ │                 │   │   │   'min': '2014-01-01 12:36:05+00',                                 │ │
│ │                 │   │   │   'max': '2022-12-18 17:21:36+00',                                 │ │
│ │                 │   │   │   'distinct': 1295867,                                             │ │
│ │                 │   │   │   'nulls': 6482,                                                   │ │
│ │                 │   │   │   'unix_epochs': 0                                                 │ │
│ │                 │   │   },                                                                   │ │
│ │                 │   │   'incident_address': {                                                │ │
│ │                 │   │   │   'count': 1393024,                                                │ │
│ │                 │   │   │   'distinct': 426250,                                              │ │
│ │                 │   │   │   'nulls': 12191,                                                  │ │
│ │                 │   │   │   'min_length': 2,                                                 │ │
│ │                 │   │   │   'max_length': 125,                                               │ │
│ │                 │   │   │   'empty_strings': 0                                               │ │
│ │                 │   │   },                                                                   │ │
│ │                 │   │   'street_number': {                                                   │ │
│ │                 │   │   │   'count': 1393024,                                                │ │
│ │                 │   │   │   'distinct': 14489,                                               │ │
│ │                 │   │   │   'nulls': 255654,                                                 │ │
│ │                 │   │   │   'min_length': 1,                                                 │ │
│ │                 │   │   │   'max_length': 9,                                                 │ │
│ │                 │   │   │   'empty_strings': 0                                               │ │
│ │                 │   │   },                                                                   │ │
│ │                 │   │   ... +12                                                              │ │
│ │                 │   },                                                                       │ │
│ │                 │   'primary_key': {'constrained_columns': []}                               │ │
│ │                 }                                                                            │ │
│ │        schema = 'austin_311'                                                                 │ │
│ │          self = <recap.crawlers.db.crawler.DatabaseCrawler object at 0x117d2ceb0>            │ │
│ │ table_or_view = '311_service_requests'                                                       │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
│                                                                                                  │
│ /Users/chrisriccomini/Code/recap/recap/crawlers/db/analyzers.py:72 in analyze                    │
│                                                                                                  │
│    69                                                                                            │
│    70 class ViewDefinitionAnalyzer(AbstractTableAnalyzer):                                       │
│    71 │   def analyze(self, schema: str, table: str) -> dict[str, Any]:                          │
│ ❱  72 │   │   def_dict = sa.inspect(self.engine).get_view_definition(table, schema)              │
│    73 │   │   return {'view_definition': def_dict} if def_dict else {}                           │
│    74                                                                                            │
│    75                                                                                            │
│                                                                                                  │
│ ╭────────────────────────────────────── locals ───────────────────────────────────────╮          │
│ │ schema = 'austin_311'                                                               │          │
│ │   self = <recap.crawlers.db.analyzers.ViewDefinitionAnalyzer object at 0x117d2db10> │          │
│ │  table = '311_service_requests'                                                     │          │
│ ╰─────────────────────────────────────────────────────────────────────────────────────╯          │
│                                                                                                  │
│ /Users/chrisriccomini/Code/recap/.venv/lib/python3.10/site-packages/sqlalchemy/engine/reflection │
│ .py:438 in get_view_definition                                                                   │
│                                                                                                  │
│    435 │   │   """                                                                               │
│    436 │   │                                                                                     │
│    437 │   │   with self._operation_context() as conn:                                           │
│ ❱  438 │   │   │   return self.dialect.get_view_definition(                                      │
│    439 │   │   │   │   conn, view_name, schema, info_cache=self.info_cache                       │
│    440 │   │   │   )                                                                             │
│    441                                                                                           │
│                                                                                                  │
│ ╭────────────────────────────────── locals ──────────────────────────────────╮                   │
│ │      conn = <sqlalchemy.engine.base.Connection object at 0x117d831f0>      │                   │
│ │    schema = 'austin_311'                                                   │                   │
│ │      self = <sqlalchemy.engine.reflection.Inspector object at 0x117d2e860> │                   │
│ │ view_name = '311_service_requests'                                         │                   │
│ ╰────────────────────────────────────────────────────────────────────────────╯                   │
│                                                                                                  │
│ /Users/chrisriccomini/Code/recap/.venv/lib/python3.10/site-packages/sqlalchemy_bigquery/base.py: │
│ 1035 in get_view_definition                                                                      │
│                                                                                                  │
│   1032 │   │   client = connection.connection._client                                            │
│   1033 │   │   if self.dataset_id:                                                               │
│   1034 │   │   │   view_name = f"{self.dataset_id}.{view_name}"                                  │
│ ❱ 1035 │   │   view = client.get_table(view_name)                                                │
│   1036 │   │   return view.view_query                                                            │
│   1037                                                                                           │
│   1038                                                                                           │
│                                                                                                  │
│ ╭─────────────────────────────────── locals ────────────────────────────────────╮                │
│ │     client = <google.cloud.bigquery.client.Client object at 0x117223b80>      │                │
│ │ connection = <sqlalchemy.engine.base.Connection object at 0x117d831f0>        │                │
│ │         kw = {'info_cache': {}}                                               │                │
│ │     schema = 'austin_311'                                                     │                │
│ │       self = <sqlalchemy_bigquery.base.BigQueryDialect object at 0x117ceffa0> │                │
│ │  view_name = '311_service_requests'                                           │                │
│ ╰───────────────────────────────────────────────────────────────────────────────╯                │
│                                                                                                  │
│ /Users/chrisriccomini/Code/recap/.venv/lib/python3.10/site-packages/google/cloud/bigquery/client │
│ .py:1038 in get_table                                                                            │
│                                                                                                  │
│   1035 │   │   │   google.cloud.bigquery.table.Table:                                            │
│   1036 │   │   │   │   A ``Table`` instance.                                                     │
│   1037 │   │   """                                                                               │
│ ❱ 1038 │   │   table_ref = _table_arg_to_table_ref(table, default_project=self.project)          │
│   1039 │   │   path = table_ref.path                                                             │
│   1040 │   │   span_attributes = {"path": path}                                                  │
│   1041 │   │   api_response = self._call_api(                                                    │
│                                                                                                  │
│ ╭─────────────────────────────── locals ────────────────────────────────╮                        │
│ │   retry = <google.api_core.retry.Retry object at 0x117c003d0>         │                        │
│ │    self = <google.cloud.bigquery.client.Client object at 0x117223b80> │                        │
│ │   table = '311_service_requests'                                      │                        │
│ │ timeout = None                                                        │                        │
│ ╰───────────────────────────────────────────────────────────────────────╯                        │
│                                                                                                  │
│ /Users/chrisriccomini/Code/recap/.venv/lib/python3.10/site-packages/google/cloud/bigquery/table. │
│ py:2762 in _table_arg_to_table_ref                                                               │
│                                                                                                  │
│   2759 │   This function keeps TableReference and other kinds of objects unchanged.              │
│   2760 │   """                                                                                   │
│   2761 │   if isinstance(value, str):                                                            │
│ ❱ 2762 │   │   value = TableReference.from_string(value, default_project=default_project)        │
│   2763 │   if isinstance(value, (Table, TableListItem)):                                         │
│   2764 │   │   value = value.reference                                                           │
│   2765 │   return value                                                                          │
│                                                                                                  │
│ ╭───────────────── locals ─────────────────╮                                                     │
│ │ default_project = 'some-project-12345'    │                                                     │
│ │           value = '311_service_requests' │                                                     │
│ ╰──────────────────────────────────────────╯                                                     │
│                                                                                                  │
│ /Users/chrisriccomini/Code/recap/.venv/lib/python3.10/site-packages/google/cloud/bigquery/table. │
│ py:251 in from_string                                                                            │
│                                                                                                  │
│    248 │   │   │   output_project_id,                                                            │
│    249 │   │   │   output_dataset_id,                                                            │
│    250 │   │   │   output_table_id,                                                              │
│ ❱  251 │   │   ) = _helpers._parse_3_part_id(                                                    │
│    252 │   │   │   table_id, default_project=default_project, property_name="table_id"           │
│    253 │   │   )                                                                                 │
│    254                                                                                           │
│                                                                                                  │
│ ╭────────────────────────────────── locals ───────────────────────────────────╮                  │
│ │              cls = <class 'google.cloud.bigquery.table.TableReference'>     │                  │
│ │ DatasetReference = <class 'google.cloud.bigquery.dataset.DatasetReference'> │                  │
│ │  default_project = 'some-project-12345'                                      │                  │
│ │         table_id = '311_service_requests'                                   │                  │
│ ╰─────────────────────────────────────────────────────────────────────────────╯                  │
│                                                                                                  │
│ /Users/chrisriccomini/Code/recap/.venv/lib/python3.10/site-packages/google/cloud/bigquery/_helpe │
│ rs.py:899 in _parse_3_part_id                                                                    │
│                                                                                                  │
│   896 │   parts = _split_id(full_id)                                                             │
│   897 │                                                                                          │
│   898 │   if len(parts) != 2 and len(parts) != 3:                                                │
│ ❱ 899 │   │   raise ValueError(                                                                  │
│   900 │   │   │   "{property_name} must be a fully-qualified ID in "                             │
│   901 │   │   │   'standard SQL format, e.g., "project.dataset.{property_name}", '               │
│   902 │   │   │   "got {}".format(full_id, property_name=property_name)                          │
│                                                                                                  │
│ ╭─────────────────── locals ────────────────────╮                                                │
│ │    default_project = 'some-project-12345'      │                                                │
│ │            full_id = '311_service_requests'   │                                                │
│ │  output_dataset_id = None                     │                                                │
│ │  output_project_id = 'some-project-12345'      │                                                │
│ │ output_resource_id = None                     │                                                │
│ │              parts = ['311_service_requests'] │                                                │
│ │      property_name = 'table_id'               │                                                │
│ ╰───────────────────────────────────────────────╯                                                │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯

@product-auto-label product-auto-label bot added the api: bigquery Issues related to the googleapis/python-bigquery-sqlalchemy API. label Dec 22, 2022
@criccomini
Copy link
Author

criccomini commented Dec 22, 2022

I'm pretty sure the code is just not paying attention to the austin_311 schema that I passed in to the get_view_definitions call.

@meredithslota meredithslota added the type: feature request ‘Nice-to-have’ improvement, new feature or different behavior or design. label Jun 13, 2023
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-sqlalchemy API. type: feature request ‘Nice-to-have’ improvement, new feature or different behavior or design.
Projects
None yet
Development

No branches or pull requests

2 participants