간단한 쓰기 API 호출인 MutateRow를 수행합니다. 샘플에 여러 SetCell(변형)이 사용되는지 확인합니다.
더 살펴보기
이 코드 샘플이 포함된 자세한 문서는 다음을 참조하세요.
코드 샘플
C++
Bigtable용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Bigtable 클라이언트 라이브러리를 참조하세요.
namespace cbt = ::google::cloud::bigtable;
[](cbt::Table table) {
auto timestamp = std::chrono::duration_cast<std::chrono::milliseconds>(
std::chrono::system_clock::now().time_since_epoch());
std::string row_key = "phone#4c410523#20190501";
cbt::SingleRowMutation mutation(row_key);
std::string column_family = "stats_summary";
mutation.emplace_back(cbt::SetCell(column_family, "connected_cell",
timestamp, std::int64_t{1}));
mutation.emplace_back(cbt::SetCell(column_family, "connected_wifi",
timestamp, std::int64_t{1}));
mutation.emplace_back(
cbt::SetCell(column_family, "os_build", timestamp, "PQ2A.190405.003"));
google::cloud::Status status = table.Apply(std::move(mutation));
if (!status.ok()) throw std::runtime_error(status.message());
std::cout << "Successfully wrote row" << row_key << "\n";
}
C#
Bigtable용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Bigtable 클라이언트 라이브러리를 참조하세요.
using System;
using Google.Cloud.Bigtable.V2;
using Google.Cloud.Bigtable.Common.V2;
namespace Writes
{
public class WriteSimple
{
/// <summary>
/// Mutate one row in an existing table and column family. Updates multiple cells within that row using one API call.
///</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 writeSimple(
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);
BigtableByteString rowkey = new BigtableByteString("phone#4c410523#20190501");
BigtableVersion timestamp = new BigtableVersion(DateTime.UtcNow);
String COLUMN_FAMILY = "stats_summary";
Mutation[] mutations = {
Mutations.SetCell(COLUMN_FAMILY, "connected_cell", 1, timestamp),
Mutations.SetCell(COLUMN_FAMILY, "connected_wifi", 1, timestamp),
Mutations.SetCell(COLUMN_FAMILY, "os_build", "PQ2A.190405.003", timestamp)
};
MutateRowResponse mutateRowResponse = bigtableClient.MutateRow(tableName, rowkey, mutations);
Console.WriteLine(mutateRowResponse);
return $"Successfully wrote row {rowkey}";
}
}
}
Go
Bigtable용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Bigtable 클라이언트 라이브러리를 참조하세요.
import (
"context"
"encoding/binary"
"fmt"
"io"
"bytes"
"cloud.google.com/go/bigtable"
)
func writeSimple(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)
columnFamilyName := "stats_summary"
timestamp := bigtable.Now()
mut := bigtable.NewMutation()
buf := new(bytes.Buffer)
binary.Write(buf, binary.BigEndian, int64(1))
mut.Set(columnFamilyName, "connected_cell", timestamp, buf.Bytes())
mut.Set(columnFamilyName, "connected_wifi", timestamp, buf.Bytes())
mut.Set(columnFamilyName, "os_build", timestamp, []byte("PQ2A.190405.003"))
rowKey := "phone#4c410523#20190501"
if err := tbl.Apply(ctx, rowKey, mut); err != nil {
return fmt.Errorf("Apply: %v", err)
}
fmt.Fprintf(w, "Successfully wrote row: %s\n", rowKey)
return nil
}
Java
Bigtable용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Bigtable 클라이언트 라이브러리를 참조하세요.
import com.google.cloud.bigtable.data.v2.BigtableDataClient;
import com.google.cloud.bigtable.data.v2.models.RowMutation;
import com.google.protobuf.ByteString;
public class WriteSimple {
private static final String COLUMN_FAMILY_NAME = "stats_summary";
public static void writeSimple(String projectId, String instanceId, String tableId) {
// String projectId = "my-project-id";
// String instanceId = "my-instance-id";
// String tableId = "mobile-time-series";
try (BigtableDataClient dataClient = BigtableDataClient.create(projectId, instanceId)) {
long timestamp = System.currentTimeMillis() * 1000;
String rowkey = "phone#4c410523#20190501";
RowMutation rowMutation =
RowMutation.create(tableId, rowkey)
.setCell(
COLUMN_FAMILY_NAME,
ByteString.copyFrom("connected_cell".getBytes()),
timestamp,
1)
.setCell(
COLUMN_FAMILY_NAME,
ByteString.copyFrom("connected_wifi".getBytes()),
timestamp,
1)
.setCell(COLUMN_FAMILY_NAME, "os_build", timestamp, "PQ2A.190405.003");
dataClient.mutateRow(rowMutation);
System.out.printf("Successfully wrote row %s", rowkey);
} catch (Exception e) {
System.out.println("Error during WriteSimple: \n" + e.toString());
}
}
}
Node.js
Bigtable용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Bigtable 클라이언트 라이브러리를 참조하세요.
const {Bigtable} = require('@google-cloud/bigtable');
const bigtable = new Bigtable();
async function writeSimple() {
/**
* TODO(developer): Uncomment these variables before running the sample.
*/
// const instanceId = 'YOUR_INSTANCE_ID';
// const tableId = 'YOUR_TABLE_ID';
const instance = bigtable.instance(instanceId);
const table = instance.table(tableId);
const timestamp = new Date();
const rowToInsert = {
key: 'phone#4c410523#20190501',
data: {
stats_summary: {
connected_cell: {
value: 1,
timestamp,
},
connected_wifi: {
value: 1,
timestamp,
},
os_build: {
value: 'PQ2A.190405.003',
timestamp,
},
},
},
};
await table.insert(rowToInsert);
console.log(`Successfully wrote row ${rowToInsert.key}`);
}
writeSimple();
PHP
Bigtable용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Bigtable 클라이언트 라이브러리를 참조하세요.
use Google\Cloud\Bigtable\BigtableClient;
use Google\Cloud\Bigtable\DataUtil;
use Google\Cloud\Bigtable\Mutations;
/**
* Write data in a table
*
* @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 where the data needs to be written
*/
function write_simple(
string $projectId,
string $instanceId,
string $tableId = 'mobile-time-series'
): void {
// Connect to an existing table with an existing instance.
$dataClient = new BigtableClient([
'projectId' => $projectId,
]);
$table = $dataClient->table($instanceId, $tableId);
$timestampMicros = time() * 1000 * 1000;
$columnFamilyId = 'stats_summary';
$mutations = (new Mutations())
->upsert($columnFamilyId, 'connected_cell', 1, $timestampMicros)
->upsert($columnFamilyId, 'connected_wifi', DataUtil::intToByteString(1), $timestampMicros)
->upsert($columnFamilyId, 'os_build', 'PQ2A.190405.003', $timestampMicros);
$table->mutateRow('phone#4c410523#20190501', $mutations);
printf('Successfully wrote row.' . PHP_EOL);
}
Python
Bigtable용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Bigtable 클라이언트 라이브러리를 참조하세요.
import datetime
from google.cloud import bigtable
def write_simple(project_id, instance_id, table_id):
client = bigtable.Client(project=project_id, admin=True)
instance = client.instance(instance_id)
table = instance.table(table_id)
timestamp = datetime.datetime.utcnow()
column_family_id = "stats_summary"
row_key = "phone#4c410523#20190501"
row = table.direct_row(row_key)
row.set_cell(column_family_id, "connected_cell", 1, timestamp)
row.set_cell(column_family_id, "connected_wifi", 1, timestamp)
row.set_cell(column_family_id, "os_build", "PQ2A.190405.003", timestamp)
row.commit()
print("Successfully wrote row {}.".format(row_key))
Ruby
Bigtable용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Bigtable 클라이언트 라이브러리를 참조하세요.
# instance_id = "my-instance"
# table_id = "my-table"
table = bigtable.table instance_id, table_id
column_family = "stats_summary"
timestamp = (Time.now.to_f * 1_000_000).round(-3)
rowkey = "phone#4c410523#20190501"
entry = table.new_mutation_entry(rowkey)
.set_cell(column_family, "connected_cell", 1, timestamp: timestamp)
.set_cell(column_family, "connected_wifi", 1, timestamp: timestamp)
.set_cell(column_family, "os_build", "PQ2A.190405.003", timestamp: timestamp)
table.mutate_row entry
puts "Successfully wrote row #{rowkey}"
다음 단계
다른 Google Cloud 제품의 코드 샘플을 검색하고 필터링하려면 Google Cloud 샘플 브라우저를 참조하세요.