读取具有多个范围的行。
深入探索
如需查看包含此代码示例的详细文档,请参阅以下内容:
代码示例
C++
如需了解如何安装和使用 Bigtable 的客户端库,请参阅 Bigtable 客户端库。
namespace cbt = ::google::cloud::bigtable;
using ::google::cloud::StatusOr;
[](cbt::Table table) {
// Read and print the rows.
for (auto& row : table.ReadRows(
cbt::RowSet({cbt::RowRange::Range("phone#4c410523#20190501",
"phone#4c410523#20190601"),
cbt::RowRange::Range("phone#5c10102#20190501",
"phone#5c10102#20190601")}),
cbt::Filter::PassAllFilter())) {
if (!row) throw std::move(row).status();
PrintRow(*row);
}
}
C#
如需了解如何安装和使用 Bigtable 的客户端库,请参阅 Bigtable 客户端库。
/// <summary>
/// /// Reads multiple ranges of rows from an existing table.
///</summary>
/// <param name="projectId">Your Google Cloud Project ID.</param>
/// <param name="instanceId">Your Google Cloud Bigtable Instance ID.</param>
/// <param name="tableId">Your Google Cloud Bigtable table ID.</param>
public string readRowRanges(string projectId = "YOUR-PROJECT-ID", string instanceId = "YOUR-INSTANCE-ID", string tableId = "YOUR-TABLE-ID")
{
BigtableClient bigtableClient = BigtableClient.Create();
TableName tableName = new TableName(projectId, instanceId, tableId);
RowSet rowSet = RowSet.FromRowRanges(RowRange.ClosedOpen("phone#4c410523#20190501", "phone#4c410523#20190601"),
RowRange.ClosedOpen("phone#5c10102#20190501", "phone#5c10102#20190601"));
ReadRowsStream readRowsStream = bigtableClient.ReadRows(tableName, rowSet);
string result = "";
readRowsStream.ForEach(row => result += printRow(row));
return result;
}
Go
如需了解如何安装和使用 Bigtable 的客户端库,请参阅 Bigtable 客户端库。
func readRowRanges(w io.Writer, projectID, instanceID string, tableName string) error {
// projectID := "my-project-id"
// instanceID := "my-instance-id"
// tableName := "mobile-time-series"
ctx := context.Background()
client, err := bigtable.NewClient(ctx, projectID, instanceID)
if err != nil {
return fmt.Errorf("bigtable.NewClient: %v", err)
}
defer client.Close()
tbl := client.Open(tableName)
err = tbl.ReadRows(ctx, bigtable.RowRangeList{
bigtable.NewRange("phone#4c410523#20190501", "phone#4c410523#201906201"),
bigtable.NewRange("phone#5c10102#20190501", "phone#5c10102#201906201"),
},
func(row bigtable.Row) bool {
printRow(w, row)
return true
},
)
if err != nil {
return fmt.Errorf("tbl.ReadRows: %v", err)
}
return nil
}
Java
如需了解如何安装和使用 Bigtable 的客户端库,请参阅 Bigtable 客户端库。
public static void readRowRanges() {
// TODO(developer): Replace these variables before running the sample.
String projectId = "my-project-id";
String instanceId = "my-instance-id";
String tableId = "mobile-time-series";
readRowRanges(projectId, instanceId, tableId);
}
public static void readRowRanges(String projectId, String instanceId, String tableId) {
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests. After completing all of your requests, call
// the "close" method on the client to safely clean up any remaining background resources.
try (BigtableDataClient dataClient = BigtableDataClient.create(projectId, instanceId)) {
Query query =
Query.create(tableId)
.range("phone#4c410523#20190501", "phone#4c410523#20190601")
.range("phone#5c10102#20190501", "phone#5c10102#20190601");
ServerStream<Row> rows = dataClient.readRows(query);
for (Row row : rows) {
printRow(row);
}
} catch (IOException e) {
System.out.println(
"Unable to initialize service client, as a network error occurred: \n" + e.toString());
}
}
Node.js
如需了解如何安装和使用 Bigtable 的客户端库,请参阅 Bigtable 客户端库。
await table
.createReadStream({
ranges: [
{
start: 'phone#4c410523#20190501',
end: 'phone#4c410523#20190601',
},
{
start: 'phone#5c10102#20190501',
end: 'phone#5c10102#20190601',
},
],
})
.on('error', err => {
// Handle the error.
console.log(err);
})
.on('data', row => printRow(row.id, row.data))
.on('end', () => {
// All rows retrieved.
});
PHP
如需了解如何安装和使用 Bigtable 的客户端库,请参阅 Bigtable 客户端库。
use Google\Cloud\Bigtable\BigtableClient;
/**
* Read using multiple ranges for row keys
*
* @param string $projectId The Google Cloud project ID
* @param string $instanceId The ID of the Bigtable instance
* @param string $tableId The ID of the table to read from
*/
function read_row_ranges(
string $projectId,
string $instanceId,
string $tableId
): void {
// Connect to an existing table with an existing instance.
$dataClient = new BigtableClient([
'projectId' => $projectId,
]);
$table = $dataClient->table($instanceId, $tableId);
$rows = $table->readRows([
'rowRanges' => [
[
'startKeyClosed' => 'phone#4c410523#20190501',
'endKeyOpen' => 'phone#4c410523#201906201'
],
[
'startKeyClosed' => 'phone#5c10102#20190501',
'endKeyOpen' => 'phone#5c10102#201906201'
]
]
]);
foreach ($rows as $key => $row) {
print_row($key, $row);
}
}
Python
如需了解如何安装和使用 Bigtable 的客户端库,请参阅 Bigtable 客户端库。
def read_row_ranges(project_id, instance_id, table_id):
client = bigtable.Client(project=project_id, admin=True)
instance = client.instance(instance_id)
table = instance.table(table_id)
row_set = RowSet()
row_set.add_row_range_from_keys(
start_key=b"phone#4c410523#20190501", end_key=b"phone#4c410523#201906201"
)
row_set.add_row_range_from_keys(
start_key=b"phone#5c10102#20190501", end_key=b"phone#5c10102#201906201"
)
rows = table.read_rows(row_set=row_set)
for row in rows:
print_row(row)
Ruby
如需了解如何安装和使用 Bigtable 的客户端库,请参阅 Bigtable 客户端库。
# instance_id = "my-instance"
# table_id = "my-table"
bigtable = Google::Cloud::Bigtable.new
table = bigtable.table instance_id, table_id
ranges = []
ranges <<
table.new_row_range.between("phone#4c410523#20190501", "phone#4c410523#201906201") <<
table.new_row_range.between("phone#5c10102#20190501", "phone#5c10102#201906201")
table.read_rows(ranges: ranges).each do |row|
print_row row
end
后续步骤
如需搜索和过滤其他 Google Cloud 产品的代码示例,请参阅 Google Cloud 示例浏览器。