bq showコマンドでJSONを見やすく表示する方法


  1. コマンドの実行方法 まず、以下のコマンドを使用して「bq show」を実行します。
bq show --format prettyjson [プロジェクト名]:[データセット名].[テーブル名]

このコマンドは、指定したプロジェクト、データセット、テーブルの情報を表示します。"--format prettyjson"オプションを指定することで、情報が見やすい形式で表示されます。

例えば、以下のような出力結果があった場合を考えます。

{
  "kind": "bigquery#table",
  "etag": "abcdefg",
  "id": "project-name:dataset-name.table-name",
  "selfLink": "https://www.googleapis.com/bigquery/v2/projects/project-name/datasets/dataset-name/tables/table-name",
  "description": "This is a sample table.",
  "creationTime": "2023-01-01T00:00:00Z",
  "lastModifiedTime": "2023-02-01T12:34:56Z",
  "numBytes": "1234567890",
  "numRows": "1000000",
  "schema": {
    "fields": [
      {
        "name": "column1",
        "type": "STRING",
        "mode": "NULLABLE"
      },
      {
        "name": "column2",
        "type": "INTEGER",
        "mode": "NULLABLE"
      },
      {
        "name": "column3",
        "type": "FLOAT",
        "mode": "NULLABLE"
      }
    ]
  }
}

この出力結果から、以下のような情報を取得することができます。

  • プロジェクト名: "project-name"
  • データセット名: "dataset-name"
  • テーブル名: "table-name"
  • テーブルの説明: "This is a sample table."
  • テーブルの作成日時: "2023-01-01T00:00:00Z"
  • テーブルの最終更新日時: "2023-02-01T12:34:56Z"
  • テーブルのサイズ(バイト数): "1234567890"
  • テーブルの行数: "1000000"
  • スキーマ情報: "column1" (STRING), "column2" (INTEGER), "column3" (FLOAT)
  1. コード例 以下は、Pythonを使用して「bq show」コマンドの出力結果を解析する例です。
import json
output = '''
{
  "kind": "bigquery#table",
  "etag": "abcdefg",
  "id": "project-name:dataset-name.table-name",
  "selfLink": "https://www.googleapis.com/bigquery/v2/projects/project-name/datasets/dataset-name/tables/table-name",
  "description": "This is a sample table.",
  "creationTime": "2023-01-01T00:00:00Z",
  "lastModifiedTime": "2023-02-01T12:34:56Z",
  "numBytes": "1234567890",
  "numRows": "1000000",
  "schema": {
    "fields": [
      {
        "name": "column1",
        "type": "STRING",
        "mode": "NULLABLE"
      },
      {
        "name": "column2",
        "type": "INTEGER",
        "mode": "NULLABLE"
      },
      {
        "name": "column3",
        "type": "FLOAT",
        "mode": "NULLABLE"
      }
    ]
  }
}
'''
data = json.loads(output)
project_name, dataset_name, table_name =data["id"].split(":")
table_description = data["description"]
creation_time = data["creationTime"]
last_modified_time = data["lastModifiedTime"]
table_size = data["numBytes"]
row_count = data["numRows"]
schema = data["schema"]["fields"]
column_names = [field["name"] for field in schema]
column_types = [field["type"] for field in schema]
print("プロジェクト名:", project_name)
print("データセット名:", dataset_name)
print("テーブル名:", table_name)
print("テーブルの説明:", table_description)
print("テーブルの作成日時:", creation_time)
print("テーブルの最終更新日時:", last_modified_time)
print("テーブルのサイズ(バイト数):", table_size)
print("テーブルの行数:", row_count)
print("スキーマ情報:")
for i in range(len(column_names)):
    print(column_names[i], "(", column_types[i], ")")

以上が、「bq show」コマンドを使用してJSONを見やすく表示する方法についての解説とコード例です。