Python json null không được xác định

Tài liệu này mô tả cách tạo bảng có cột

SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
0, chèn dữ liệu JSON vào bảng BigQuery và truy vấn dữ liệu JSON

Tổng quan

JSON là định dạng được sử dụng rộng rãi cho phép dữ liệu bán cấu trúc vì nó không yêu cầu lược đồ. Các ứng dụng có thể sử dụng phương pháp "lược đồ khi đọc", trong đó ứng dụng nhập dữ liệu và sau đó truy vấn dựa trên các giả định về lược đồ của dữ liệu đó. Cách tiếp cận này khác với loại

SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
2 trong BigQuery, loại này yêu cầu một lược đồ cố định được thực thi cho tất cả các giá trị được lưu trữ trong một cột thuộc loại
SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
2

Bằng cách sử dụng loại dữ liệu

SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
0, bạn có thể nhập JSON bán cấu trúc vào BigQuery mà không cần cung cấp sơ đồ cho dữ liệu JSON trả trước. Điều này cho phép bạn lưu trữ và truy vấn dữ liệu không phải lúc nào cũng tuân theo các loại dữ liệu và lược đồ cố định. Bằng cách nhập dữ liệu JSON dưới dạng loại dữ liệu
SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
0, BigQuery có thể mã hóa và xử lý từng trường JSON riêng lẻ. Sau đó, bạn có thể truy vấn giá trị của các trường và phần tử mảng trong dữ liệu JSON bằng cách sử dụng toán tử truy cập trường, giúp truy vấn JSON dễ sử dụng và tiết kiệm chi phí

Hạn chế

  • Nếu bạn sử dụng tác vụ tải hàng loạt để nhập dữ liệu
    SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
    
    0 vào bảng, thì dữ liệu nguồn phải ở định dạng CSV, Avro hoặc JSON. Các định dạng tải hàng loạt khác không được hỗ trợ
  • Kiểu dữ liệu
    SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
    
    0 có giới hạn lồng nhau là 500
  • Bạn không thể sử dụng SQL kế thừa để truy vấn một bảng có chứa các loại
    SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
    
    0
  • Không thể áp dụng chính sách truy cập cấp hàng trên các cột JSON

Để tìm hiểu về các thuộc tính của kiểu dữ liệu

SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
0, hãy xem

Tạo bảng có cột JSON

Bạn có thể tạo một bảng trống có cột JSON bằng cách sử dụng SQL hoặc bằng cách sử dụng công cụ dòng lệnh

+--------------------------------+
| pt                             |
+--------------------------------+
| {"coordinates":[10,20],"id":1} |
+--------------------------------+
0

SQL

Sử dụng câu lệnh và khai báo một cột có kiểu

SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
0

  1. Trong bảng điều khiển Google Cloud, hãy truy cập trang BigQuery

    Truy cập BigQuery

  2. Trong trình chỉnh sửa truy vấn, hãy nhập câu lệnh sau

    CREATE TABLE mydataset.table1(
      id INT64,
      cart JSON
    );
    
  3. Nhấp vào play_circle Chạy.

Để biết thêm thông tin về cách chạy truy vấn, hãy xem

bq

Sử dụng lệnh và cung cấp lược đồ bảng với kiểu dữ liệu

SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
0

bq mk --table mydataset.table1 id:INT64,cart:JSON

Bạn không thể phân vùng hoặc nhóm một bảng trên các cột JSON, vì các toán tử so sánh và đẳng thức không được xác định trên loại

SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
0

Tạo các giá trị JSON

Bạn có thể tạo các giá trị

SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
0 theo các cách sau

  • Sử dụng SQL để tạo một
    SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
    
    0 chữ
  • Sử dụng hàm để chuyển đổi một chuỗi thành kiểu
    SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
    
    0
  • Sử dụng hàm để chuyển đổi kiểu SQL thành kiểu
    SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
    
    0

Tạo một chữ JSON

Ví dụ sau sử dụng câu lệnh DML để chèn một ký tự

SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
0 vào một bảng

INSERT INTO mydataset.table1
VALUES(1, JSON '{"name": "Alice", "age": 30}');

Chuyển đổi một chuỗi thành JSON

Ví dụ sau chuyển đổi dữ liệu JSON được lưu trữ dưới dạng chuỗi thành loại

SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
0 bằng cách sử dụng hàm. Ví dụ chuyển đổi một cột từ một bảng hiện có thành loại
SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
0 và lưu kết quả vào một bảng mới

CREATE OR REPLACE TABLE mydataset.table_new
AS (
  SELECT
    id, SAFE.PARSE_JSON(cart) AS cart_json
  FROM
    mydataset.old_table
);

Việc sử dụng trong ví dụ này đảm bảo rằng mọi lỗi chuyển đổi đều được trả về dưới dạng giá trị

1,20
2,"""This is a string"""
3,"{""id"": 10, ""name"": ""Alice""}"
7

Chuyển đổi một loại SQL thành JSON

Ví dụ sau đây chuyển đổi một giá trị SQL

SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
2 thành một loại
SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
0, bằng cách sử dụng hàm

SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;

Kết quả là như sau

+--------------------------------+
| pt                             |
+--------------------------------+
| {"coordinates":[10,20],"id":1} |
+--------------------------------+

Nhập dữ liệu JSON

Bạn có thể nhập dữ liệu

SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
0 vào bảng BigQuery theo các cách sau

  • Sử dụng công việc tải hàng loạt để tải vào các cột
    SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
    
    0 từ các định dạng sau
    • CSV
  • Sử dụng API ghi bộ lưu trữ BigQuery
  • Sử dụng API phát trực tuyến
    bq load --source_format=CSV mydataset.table1 file1.csv id:INTEGER,json_data:JSON
    
    bq show mydataset.table1
    
    Last modified          Schema         Total Rows   Total Bytes
    ----------------- -------------------- ------------ -------------
     22 Dec 22:10:32   |- id: integer       3            63
                       |- json_data: json
    
    3 kế thừa

Tải từ tệp CSV

Ví dụ sau giả định rằng bạn có một tệp CSV có tên

bq load --source_format=CSV mydataset.table1 file1.csv id:INTEGER,json_data:JSON

bq show mydataset.table1

Last modified          Schema         Total Rows   Total Bytes
----------------- -------------------- ------------ -------------
 22 Dec 22:10:32   |- id: integer       3            63
                   |- json_data: json
4 chứa các bản ghi sau

1,20
2,"""This is a string"""
3,"{""id"": 10, ""name"": ""Alice""}"

Lưu ý rằng cột thứ hai chứa dữ liệu JSON được mã hóa dưới dạng chuỗi. Điều này liên quan đến việc thoát chính xác các trích dẫn cho định dạng CSV. Ở định dạng CSV, dấu ngoặc kép được thoát ra bằng cách sử dụng chuỗi hai ký tự

bq load --source_format=CSV mydataset.table1 file1.csv id:INTEGER,json_data:JSON

bq show mydataset.table1

Last modified          Schema         Total Rows   Total Bytes
----------------- -------------------- ------------ -------------
 22 Dec 22:10:32   |- id: integer       3            63
                   |- json_data: json
5

Để tải tệp này bằng công cụ dòng lệnh

+--------------------------------+
| pt                             |
+--------------------------------+
| {"coordinates":[10,20],"id":1} |
+--------------------------------+
0, hãy sử dụng lệnh

bq load --source_format=CSV mydataset.table1 file1.csv id:INTEGER,json_data:JSON

bq show mydataset.table1

Last modified          Schema         Total Rows   Total Bytes
----------------- -------------------- ------------ -------------
 22 Dec 22:10:32   |- id: integer       3            63
                   |- json_data: json

Tải từ các tệp JSON được phân tách bằng dòng mới

Ví dụ sau giả định rằng bạn có một tệp tên là

bq load --source_format=CSV mydataset.table1 file1.csv id:INTEGER,json_data:JSON

bq show mydataset.table1

Last modified          Schema         Total Rows   Total Bytes
----------------- -------------------- ------------ -------------
 22 Dec 22:10:32   |- id: integer       3            63
                   |- json_data: json
8 chứa các bản ghi sau

{"id": 1, "json_data": 20}
{"id": 2, "json_data": "This is a string"}
{"id": 3, "json_data": {"id": 10, "name": "Alice"}}

Để tải tệp này bằng công cụ dòng lệnh

+--------------------------------+
| pt                             |
+--------------------------------+
| {"coordinates":[10,20],"id":1} |
+--------------------------------+
0, hãy sử dụng lệnh

bq load --source_format=NEWLINE_DELIMITED_JSON mydataset.table1 file1.jsonl id:INTEGER,json_data:JSON

bq show mydataset.table1

Last modified          Schema         Total Rows   Total Bytes
----------------- -------------------- ------------ -------------
 22 Dec 22:10:32   |- id: integer       3            63
                   |- json_data: json

Sử dụng API ghi lưu trữ

Bạn có thể sử dụng API ghi lưu trữ để nhập dữ liệu JSON. Ví dụ sau sử dụng API ghi lưu trữ

Xác định bộ đệm giao thức để giữ dữ liệu phát trực tuyến được tuần tự hóa. Dữ liệu JSON được mã hóa dưới dạng chuỗi. Trong ví dụ sau, trường

{"id": 1, "json_data": 20}
{"id": 2, "json_data": "This is a string"}
{"id": 3, "json_data": {"id": 10, "name": "Alice"}}
1 chứa dữ liệu JSON

bq mk --table mydataset.table1 id:INT64,cart:JSON
0

Định dạng dữ liệu JSON cho mỗi hàng dưới dạng giá trị chuỗi

bq mk --table mydataset.table1 id:INT64,cart:JSON
1

Nối các hàng vào luồng ghi như được hiển thị trong. Thư viện máy khách xử lý tuần tự hóa thành định dạng bộ đệm giao thức

Sử dụng API phát trực tuyến cũ

Ví dụ sau tải dữ liệu JSON từ một tệp cục bộ và truyền dữ liệu đó tới BigQuery bằng cách sử dụng API truyền trực tuyến cũ

bq mk --table mydataset.table1 id:INT64,cart:JSON
2

Để biết thêm thông tin, xem

Truy vấn dữ liệu JSON

Phần này mô tả cách sử dụng Google Standard SQL để trích xuất các giá trị từ JSON. JSON phân biệt chữ hoa chữ thường và hỗ trợ UTF-8 trong cả trường và giá trị

Các ví dụ trong phần này sử dụng bảng sau

bq mk --table mydataset.table1 id:INT64,cart:JSON
3

Trích xuất các giá trị dưới dạng JSON

Với loại

SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
0 trong BigQuery, bạn có thể truy cập các trường trong biểu thức
SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
0 bằng cách sử dụng. Ví dụ sau trả về trường
{"id": 1, "json_data": 20}
{"id": 2, "json_data": "This is a string"}
{"id": 3, "json_data": {"id": 10, "name": "Alice"}}
4 của cột
{"id": 1, "json_data": 20}
{"id": 2, "json_data": "This is a string"}
{"id": 3, "json_data": {"id": 10, "name": "Alice"}}
5

bq mk --table mydataset.table1 id:INT64,cart:JSON
4
bq mk --table mydataset.table1 id:INT64,cart:JSON
5

Để truy cập một phần tử mảng, sử dụng. Ví dụ sau trả về phần tử đầu tiên của mảng

{"id": 1, "json_data": 20}
{"id": 2, "json_data": "This is a string"}
{"id": 3, "json_data": {"id": 10, "name": "Alice"}}
6

bq mk --table mydataset.table1 id:INT64,cart:JSON
6_______13_______7

Bạn cũng có thể sử dụng toán tử chỉ số con JSON để tham chiếu các thành viên của đối tượng JSON theo tên

bq mk --table mydataset.table1 id:INT64,cart:JSON
8
bq mk --table mydataset.table1 id:INT64,cart:JSON
5

Đối với các phép toán chỉ số, biểu thức bên trong dấu ngoặc có thể là bất kỳ biểu thức chuỗi hoặc số nguyên tùy ý nào, kể cả các biểu thức không phải là hằng số

INSERT INTO mydataset.table1
VALUES(1, JSON '{"name": "Alice", "age": 30}');
0_______20_______1

Các toán tử truy cập trường và chỉ số dưới đều trả về các loại

SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
0, vì vậy bạn có thể xâu chuỗi các biểu thức sử dụng chúng hoặc chuyển kết quả cho các hàm khác có loại
SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
0

Các toán tử này là đường cú pháp cho hàm. Ví dụ: biểu thức

bq load --source_format=NEWLINE_DELIMITED_JSON mydataset.table1 file1.jsonl id:INTEGER,json_data:JSON

bq show mydataset.table1

Last modified          Schema         Total Rows   Total Bytes
----------------- -------------------- ------------ -------------
 22 Dec 22:10:32   |- id: integer       3            63
                   |- json_data: json
0 tương đương với
bq load --source_format=NEWLINE_DELIMITED_JSON mydataset.table1 file1.jsonl id:INTEGER,json_data:JSON

bq show mydataset.table1

Last modified          Schema         Total Rows   Total Bytes
----------------- -------------------- ------------ -------------
 22 Dec 22:10:32   |- id: integer       3            63
                   |- json_data: json
1

Nếu không tìm thấy phần tử có tên đã chỉ định trong đối tượng JSON hoặc nếu mảng JSON không có phần tử với vị trí đã chỉ định, thì các toán tử này sẽ trả về SQL

1,20
2,"""This is a string"""
3,"{""id"": 10, ""name"": ""Alice""}"
7

INSERT INTO mydataset.table1
VALUES(1, JSON '{"name": "Alice", "age": 30}');
2_______20_______3

Các toán tử đẳng thức và so sánh không được định nghĩa trên kiểu dữ liệu

SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
0. Do đó, bạn không thể sử dụng trực tiếp các giá trị JSON trong các mệnh đề như
bq load --source_format=NEWLINE_DELIMITED_JSON mydataset.table1 file1.jsonl id:INTEGER,json_data:JSON

bq show mydataset.table1

Last modified          Schema         Total Rows   Total Bytes
----------------- -------------------- ------------ -------------
 22 Dec 22:10:32   |- id: integer       3            63
                   |- json_data: json
4 hoặc
bq load --source_format=NEWLINE_DELIMITED_JSON mydataset.table1 file1.jsonl id:INTEGER,json_data:JSON

bq show mydataset.table1

Last modified          Schema         Total Rows   Total Bytes
----------------- -------------------- ------------ -------------
 22 Dec 22:10:32   |- id: integer       3            63
                   |- json_data: json
5. Thay vào đó, hãy sử dụng hàm
bq load --source_format=NEWLINE_DELIMITED_JSON mydataset.table1 file1.jsonl id:INTEGER,json_data:JSON

bq show mydataset.table1

Last modified          Schema         Total Rows   Total Bytes
----------------- -------------------- ------------ -------------
 22 Dec 22:10:32   |- id: integer       3            63
                   |- json_data: json
6 để trích xuất các giá trị trường dưới dạng chuỗi SQL, như được mô tả trong phần tiếp theo

Trích xuất các giá trị dưới dạng chuỗi

Hàm trích xuất một giá trị vô hướng và trả về nó dưới dạng chuỗi SQL. Nó trả về SQL

1,20
2,"""This is a string"""
3,"{""id"": 10, ""name"": ""Alice""}"
7 nếu
bq load --source_format=NEWLINE_DELIMITED_JSON mydataset.table1 file1.jsonl id:INTEGER,json_data:JSON

bq show mydataset.table1

Last modified          Schema         Total Rows   Total Bytes
----------------- -------------------- ------------ -------------
 22 Dec 22:10:32   |- id: integer       3            63
                   |- json_data: json
0 không trỏ đến một giá trị vô hướng trong JSON

INSERT INTO mydataset.table1
VALUES(1, JSON '{"name": "Alice", "age": 30}');
4
INSERT INTO mydataset.table1
VALUES(1, JSON '{"name": "Alice", "age": 30}');
5

Bạn có thể sử dụng hàm

bq load --source_format=NEWLINE_DELIMITED_JSON mydataset.table1 file1.jsonl id:INTEGER,json_data:JSON

bq show mydataset.table1

Last modified          Schema         Total Rows   Total Bytes
----------------- -------------------- ------------ -------------
 22 Dec 22:10:32   |- id: integer       3            63
                   |- json_data: json
6 trong ngữ cảnh yêu cầu đẳng thức hoặc so sánh, chẳng hạn như mệnh đề
bq mk --table mydataset.table1 id:INT64,cart:JSON
01 và mệnh đề
bq load --source_format=NEWLINE_DELIMITED_JSON mydataset.table1 file1.jsonl id:INTEGER,json_data:JSON

bq show mydataset.table1

Last modified          Schema         Total Rows   Total Bytes
----------------- -------------------- ------------ -------------
 22 Dec 22:10:32   |- id: integer       3            63
                   |- json_data: json
4. Ví dụ sau hiển thị mệnh đề
bq mk --table mydataset.table1 id:INT64,cart:JSON
01 lọc theo giá trị JSON

INSERT INTO mydataset.table1
VALUES(1, JSON '{"name": "Alice", "age": 30}');
6_______20_______7

Ngoài ra, bạn có thể sử dụng hàm trích xuất một chuỗi JSON và trả về giá trị đó dưới dạng SQL

bq mk --table mydataset.table1 id:INT64,cart:JSON
04. Ví dụ

INSERT INTO mydataset.table1
VALUES(1, JSON '{"name": "Alice", "age": 30}');
8
INSERT INTO mydataset.table1
VALUES(1, JSON '{"name": "Alice", "age": 30}');
9

Ngoài , bạn có thể phải trích xuất các giá trị JSON và trả lại chúng dưới dạng một kiểu dữ liệu SQL khác. Các hàm trích xuất giá trị sau đây khả dụng

Để có được loại giá trị JSON, bạn có thể sử dụng hàm

Trích xuất các mảng từ JSON

JSON có thể chứa các mảng JSON, không tương đương trực tiếp với loại

bq mk --table mydataset.table1 id:INT64,cart:JSON
12 trong BigQuery. Bạn có thể sử dụng các hàm sau để trích xuất BigQuery
bq mk --table mydataset.table1 id:INT64,cart:JSON
13 từ JSON

  • trích xuất một mảng và trả về nó dưới dạng
    bq mk --table mydataset.table1 id:INT64,cart:JSON
    
    12 của JSON
  • trích xuất một mảng các giá trị vô hướng và trả về nó dưới dạng
    bq mk --table mydataset.table1 id:INT64,cart:JSON
    
    17 giá trị vô hướng

Ví dụ sau sử dụng

bq mk --table mydataset.table1 id:INT64,cart:JSON
14 để trích xuất các mảng JSON

CREATE OR REPLACE TABLE mydataset.table_new
AS (
  SELECT
    id, SAFE.PARSE_JSON(cart) AS cart_json
  FROM
    mydataset.old_table
);
0____23_______1

Để tách một mảng thành các phần tử riêng lẻ, hãy sử dụng toán tử trả về một bảng có một hàng cho mỗi phần tử trong mảng. Ví dụ sau chọn phần tử

bq mk --table mydataset.table1 id:INT64,cart:JSON
20 từ mỗi phần tử của mảng
{"id": 1, "json_data": 20}
{"id": 2, "json_data": "This is a string"}
{"id": 3, "json_data": {"id": 10, "name": "Alice"}}
6

CREATE OR REPLACE TABLE mydataset.table_new
AS (
  SELECT
    id, SAFE.PARSE_JSON(cart) AS cart_json
  FROM
    mydataset.old_table
);
2______23_______3

Ví dụ tiếp theo tương tự nhưng sử dụng hàm để tổng hợp các giá trị lại thành một mảng SQL

CREATE OR REPLACE TABLE mydataset.table_new
AS (
  SELECT
    id, SAFE.PARSE_JSON(cart) AS cart_json
  FROM
    mydataset.old_table
);
4
CREATE OR REPLACE TABLE mydataset.table_new
AS (
  SELECT
    id, SAFE.PARSE_JSON(cart) AS cart_json
  FROM
    mydataset.old_table
);
5

Để biết thêm thông tin về mảng, hãy xem Làm việc với mảng trong Google Standard SQL

JSON null

Kiểu

SELECT TO_JSON(STRUCT(1 AS id, [10,20] AS coordinates)) AS pt;
0 có giá trị đặc biệt
bq mk --table mydataset.table1 id:INT64,cart:JSON
24 khác với kiểu SQL
1,20
2,"""This is a string"""
3,"{""id"": 10, ""name"": ""Alice""}"
7. JSON
bq mk --table mydataset.table1 id:INT64,cart:JSON
24 không được coi là giá trị SQL
1,20
2,"""This is a string"""
3,"{""id"": 10, ""name"": ""Alice""}"
7, như ví dụ sau đây cho thấy

CREATE OR REPLACE TABLE mydataset.table_new
AS (
  SELECT
    id, SAFE.PARSE_JSON(cart) AS cart_json
  FROM
    mydataset.old_table
);
6_______23_______7

Khi bạn trích xuất một trường JSON có giá trị

bq mk --table mydataset.table1 id:INT64,cart:JSON
24, hành vi sẽ phụ thuộc vào hàm

  • Hàm
    {"id": 1, "json_data": 20}
    {"id": 2, "json_data": "This is a string"}
    {"id": 3, "json_data": {"id": 10, "name": "Alice"}}
    
    9 trả về JSON
    bq mk --table mydataset.table1 id:INT64,cart:JSON
    
    24, vì đó là một giá trị JSON hợp lệ
  • Hàm
    bq load --source_format=NEWLINE_DELIMITED_JSON mydataset.table1 file1.jsonl id:INTEGER,json_data:JSON
    
    bq show mydataset.table1
    
    Last modified          Schema         Total Rows   Total Bytes
    ----------------- -------------------- ------------ -------------
     22 Dec 22:10:32   |- id: integer       3            63
                       |- json_data: json
    
    6 trả về SQL
    1,20
    2,"""This is a string"""
    3,"{""id"": 10, ""name"": ""Alice""}"
    
    7, vì JSON
    bq mk --table mydataset.table1 id:INT64,cart:JSON
    
    24 không phải là giá trị vô hướng

Ví dụ sau đây cho thấy các hành vi khác nhau

CREATE OR REPLACE TABLE mydataset.table_new
AS (
  SELECT
    id, SAFE.PARSE_JSON(cart) AS cart_json
  FROM
    mydataset.old_table
);
8
CREATE OR REPLACE TABLE mydataset.table_new
AS (
  SELECT
    id, SAFE.PARSE_JSON(cart) AS cart_json
  FROM
    mydataset.old_table
);
9Chú ý. Hành vi này không áp dụng cho các giá trị JSON được lưu trữ trong loại
bq mk --table mydataset.table1 id:INT64,cart:JSON
04. Khi được truyền giá trị
bq mk --table mydataset.table1 id:INT64,cart:JSON
04, hàm
{"id": 1, "json_data": 20}
{"id": 2, "json_data": "This is a string"}
{"id": 3, "json_data": {"id": 10, "name": "Alice"}}
9 trả về giá trị SQL
1,20
2,"""This is a string"""
3,"{""id"": 10, ""name"": ""Alice""}"
7 thay cho giá trị JSON
bq mk --table mydataset.table1 id:INT64,cart:JSON
24

Làm cách nào để chuyển null trong Python JSON?

Cách chuyển giá trị null trong yêu cầu JSON .
Bỏ qua thuộc tính JSON bên trong đối tượng JSON
Bao gồm tên thuộc tính trong Đối tượng JSON với giá trị là JSONObject. VÔ GIÁ TRỊ

Là null trong JSON không có trong Python?

Kiểu dữ liệu JSON . null tương đương với JSON của Python Không có .

Python có chuyển đổi null thành không không?

null thường được định nghĩa là 0 trong các ngôn ngữ đó, nhưng null trong Python thì khác. Python sử dụng từ khóa Không để xác định các đối tượng và biến null .

JSON có hỗ trợ không?

JSON chỉ hỗ trợ một số loại đối tượng làm khóa mục, đó là str , int , float , bool và Không có . Các loại này được gọi là các loại cơ bản.