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 Show
Tổng quanJSON 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;
2Bằ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ế
Để 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 xemTạo bảng có cột JSONBạ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 Sử dụng câu lệnh và khai báo một cột có kiểu
Để biết thêm thông tin về cách chạy truy vấn, hãy xem bqSử 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;
0bq 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;
0Tạo các giá trị JSONBạ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
Tạo một chữ JSONVí 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ảngINSERT INTO mydataset.table1 VALUES(1, JSON '{"name": "Alice", "age": 30}'); Chuyển đổi một chuỗi thành JSONVí 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ớiCREATE 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 JSONVí 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àmSELECT 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 JSONBạ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
Tải từ tệp CSVVí dụ sau giả định rằng bạn có một tệp CSV có tên 4 chứa các bản ghi sau1,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ự 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
Tải từ các tệp JSON được phân tách bằng dòng mớiVí dụ sau giả định rằng bạn có một tệp tên là 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
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:JSON0 Đị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:JSON1 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:JSON2 Để biết thêm thông tin, xem Truy vấn dữ liệu JSONPhầ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:JSON3 Trích xuất các giá trị dưới dạng JSONVớ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:JSON4 bq mk --table mydataset.table1 id:INT64,cart:JSON5 Để 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:JSON6_______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:JSON8 bq mk --table mydataset.table1 id:INT64,cart:JSON5 Đố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;
0Các toán tử này là đường cú pháp cho hàm. Ví dụ: biểu thức 0 tương đương với 1Nế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ư 4 hoặc 5. Thay vào đó, hãy sử dụng hàm 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 theoTrích xuất các giá trị dưới dạng chuỗiHà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 0 không trỏ đến một giá trị vô hướng trong JSONINSERT 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 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:JSON01 và mệnh đề 4. Ví dụ sau hiển thị mệnh đề bq mk --table mydataset.table1 id:INT64,cart:JSON01 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:JSON04. 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ừ JSONJSON 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:JSON12 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:JSON13 từ JSON
Ví dụ sau sử dụng bq mk --table mydataset.table1 id:INT64,cart:JSON14 để 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:JSON20 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_______3Ví 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
);
4CREATE 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 nullKiể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:JSON24 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:JSON24 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_______7Khi bạn trích xuất một trường JSON có giá trị bq mk --table mydataset.table1 id:INT64,cart:JSON24, hành vi sẽ phụ thuộc vào hàm
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
);
8CREATE 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:JSON04. Khi được truyền giá trị bq mk --table mydataset.table1 id:INT64,cart:JSON04, 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:JSON24 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. |