Google bigquery 我们可以从GoogleBigQuery中的特定表中获取列名吗?

Google bigquery 我们可以从GoogleBigQuery中的特定表中获取列名吗?,google-bigquery,Google Bigquery,我们可以从Google BigQuery中的特定表中获取列名吗 让我知道此活动的查询 我试过了,但没有结果 SELECT column_name FROM publicdata:samples.shakespeare OR SELECT schema FROM publicdata:samples.shakespeare 1.您可以使用命令行工具(): bq节目: $ bq show publicdata:samples.shakespeare tableId Last

我们可以从Google BigQuery中的特定表中获取列名吗

让我知道此活动的查询

我试过了,但没有结果

  SELECT column_name FROM publicdata:samples.shakespeare
  OR
  SELECT schema FROM publicdata:samples.shakespeare

1.您可以使用命令行工具(): bq节目:

$ bq show publicdata:samples.shakespeare
tableId      Last modified                  Schema
------------- ----------------- ------------------------------------
shakespeare   01 Sep 13:46:28   |- word: string (required)
                              |- word_count: integer (required)
                              |- corpus: string (required)
                              |- corpus_date: integer (required)
2.BigQuery浏览器工具:


3.或者使用BigQuery API:

1。您可以使用命令行工具(): bq节目:

$ bq show publicdata:samples.shakespeare
tableId      Last modified                  Schema
------------- ----------------- ------------------------------------
shakespeare   01 Sep 13:46:28   |- word: string (required)
                              |- word_count: integer (required)
                              |- corpus: string (required)
                              |- corpus_date: integer (required)
2.BigQuery浏览器工具:


3.或者使用BigQuery API:

如果我理解正确,您希望执行tables.list或tables.get而不是jobs.query

这是它在google apps脚本中的工作方式:

var results = BigQuery.Tables.list(projectId, datasetId, optionalArgs);
或通过API:

GET https://www.googleapis.com/bigquery/v2/projects/projectId/datasets/datasetId/tables


否则,您可以像这样进行查询,从[]限制0中选择*并编写一些查看列名的过程。

如果我理解正确,您希望执行tables.list或tables.get,而不是jobs.query

这是它在google apps脚本中的工作方式:

var results = BigQuery.Tables.list(projectId, datasetId, optionalArgs);
或通过API:

GET https://www.googleapis.com/bigquery/v2/projects/projectId/datasets/datasetId/tables


否则,您可以像这样查询SELECT*FROM[]limit 0并编写一些过程来查看列名。

我使用Java获得了结果:

Tables tableRequest = bigquery.tables();
Table table = tableRequest.get(projectName,datasetName,tableName).execute();
List<TableFieldSchema> fields = table.getSchema().getFields();
Tables tableRequest=bigquery.Tables();
Table Table=tableRequest.get(projectName,datasetName,tableName).execute();
列表字段=table.getSchema().getFields();

我使用Java获得了结果:

Tables tableRequest = bigquery.tables();
Table table = tableRequest.get(projectName,datasetName,tableName).execute();
List<TableFieldSchema> fields = table.getSchema().getFields();
Tables tableRequest=bigquery.Tables();
Table Table=tableRequest.get(projectName,datasetName,tableName).execute();
列表字段=table.getSchema().getFields();

在Jupyter中使用python的示例:

SERVICE_ACCOUNT = 'sa_bq.json'

!pip install google-cloud
!pip install google-api-python-client
!pip install oauth2client    

from google.cloud import bigquery

client_bq = bigquery.Client.from_service_account_json(SERVICE_ACCOUNT)
table = client_bq.get_table('bigquery-public-data.samples.shakespeare')
print(list(c.name for c in table.schema))

在Jupyter中使用python的示例:

SERVICE_ACCOUNT = 'sa_bq.json'

!pip install google-cloud
!pip install google-api-python-client
!pip install oauth2client    

from google.cloud import bigquery

client_bq = bigquery.Client.from_service_account_json(SERVICE_ACCOUNT)
table = client_bq.get_table('bigquery-public-data.samples.shakespeare')
print(list(c.name for c in table.schema))

在经典用户界面上,无需任何查询,您可以按照以下步骤进行操作:

  • 单击左侧面板上的蓝色向下箭头
  • 切换到项目,然后显示项目…
  • 在项目ID上,写下项目的名称(在您的案例中,您有
    publicdata:samples.shakespeare
    ,您的项目是
    publicdata
  • 现在,该项目显示在左侧面板上
  • 选择数据集(在您的情况下,它是示例)
  • 选择表格(在您的例子中是莎士比亚)
  • 最后,在屏幕的中间,你应该看到三个标签:模式,细节,预览。李>
在经典用户界面上,无需任何查询,您可以按照以下步骤进行操作:

  • 单击左侧面板上的蓝色向下箭头
  • 切换到项目,然后显示项目…
  • 在项目ID上,写下项目的名称(在您的案例中,您有
    publicdata:samples.shakespeare
    ,您的项目是
    publicdata
  • 现在,该项目显示在左侧面板上
  • 选择数据集(在您的情况下,它是示例)
  • 选择表格(在您的例子中是莎士比亚)
  • 最后,在屏幕的中间,你应该看到三个标签:模式,细节,预览。李>
使用SQL获取列名:

选择列名称、数据类型
来自“bigquery公共数据.示例.信息\u架构.列”
其中,表_name='shakespeare'
它给你:

+-------------+-----------+
| column_name | data_type |
+-------------+-----------+
| word        | STRING    |
| word_count  | INT64     |
| corpus      | STRING    |
| corpus_date | INT64     |
+-------------+-----------+
用于使用SQL获取列名:

选择列名称、数据类型
来自“bigquery公共数据.示例.信息\u架构.列”
其中,表_name='shakespeare'
它给你:

+-------------+-----------+
| column_name | data_type |
+-------------+-----------+
| word        | STRING    |
| word_count  | INT64     |
| corpus      | STRING    |
| corpus_date | INT64     |
+-------------+-----------+

所以你想从所有表中选择列名称,其中表='Shaspeare'和模式='publicdata:samples'?所以你想从所有表中选择列名称,其中表='Shaspeare'和模式='publicdata:samples'?我在使用javascript,所以有任何类似于此var请求的方法=字段({'projectId':'publicdata','datasetId':'samples','tableId':'shakespeare'});request.execute(函数(响应){console.log(响应);});如果你有任何解决方案,请告诉我??感谢选项3.BigQuery API:。这是REST API,因此,您可以在干净的javascript或jQuery中使用。我认为您必须使用gapi.client.request我使用的是javascript,所以有任何类似于var request=gapi.client.bigquery.schema.fields的方法({'projectId':'publicdata','datasetId':'samples','tableId':'shakespeare')); request.execute(函数(响应){console.log(响应);});如果你有任何解决方案,请告诉我??感谢选项3.BigQuery API:。这是REST API,因此,您可以在干净的javascript或jQuery中使用。我认为您必须使用gapi.client.request。我的想法是选择limit 1并只使用列名,但我得到的错误是“通过此查询,您将为表中的所有数据付费(即使您的查询包含limit子句)。”我的想法是选择limit 1并只使用列名,但我得到的错误是“通过此查询,您将为表中的所有数据付费(即使您的查询包含limit子句)。”自最新库版本以来的更新,以使用表:
>tr=bigquery.table.TableReference.from\u string('bigquery-public-data.samples.shakespeare')>>table=client\u bq.get\u table(tr)
自最新库版本以来的更新,要使用该表:
>tr=bigquery.table.TableReference.from\u string('bigquery-public-data.samples.shakespeare')>>table=client\u bq.get\u table(tr)