/// <summary>Snippet for MutateRows</summary> public async Task MutateRows1() { // Snippet: MutateRows(string, IEnumerable<MutateRowsRequest.Types.Entry>, CallSettings) // Create client BigtableClient bigtableClient = BigtableClient.Create(); // Initialize request argument(s) string tableName = "projects/[PROJECT]/instances/[INSTANCE]/tables/[TABLE]"; IEnumerable <MutateRowsRequest.Types.Entry> entries = new MutateRowsRequest.Types.Entry[] { new MutateRowsRequest.Types.Entry(), }; // Make the request, returning a streaming response BigtableClient.MutateRowsStream response = bigtableClient.MutateRows(tableName, entries); // Read streaming responses from server until complete // Note that C# 8 code can use await foreach AsyncResponseStream <MutateRowsResponse> responseStream = response.GetResponseStream(); while (await responseStream.MoveNextAsync()) { MutateRowsResponse responseItem = responseStream.Current; // Do something with streamed response } // The response stream has completed // End snippet }
/// <summary>Snippet for MutateRows</summary> public async Task MutateRows2ResourceNames() { // Snippet: MutateRows(TableName, IEnumerable<MutateRowsRequest.Types.Entry>, string, CallSettings) // Create client BigtableClient bigtableClient = BigtableClient.Create(); // Initialize request argument(s) TableName tableName = TableName.FromProjectInstanceTable("[PROJECT]", "[INSTANCE]", "[TABLE]"); IEnumerable <MutateRowsRequest.Types.Entry> entries = new MutateRowsRequest.Types.Entry[] { new MutateRowsRequest.Types.Entry(), }; string appProfileId = ""; // Make the request, returning a streaming response BigtableClient.MutateRowsStream response = bigtableClient.MutateRows(tableName, entries, appProfileId); // Read streaming responses from server until complete // Note that C# 8 code can use await foreach AsyncResponseStream <MutateRowsResponse> responseStream = response.GetResponseStream(); while (await responseStream.MoveNextAsync()) { MutateRowsResponse responseItem = responseStream.Current; // Do something with streamed response } // The response stream has completed // End snippet }
public async Task MutateRows() { // Snippet: MutateRows(MutateRowsRequest,CallSettings) // Create client BigtableClient bigtableClient = BigtableClient.Create(); // Initialize request argument MutateRowsRequest request = new MutateRowsRequest { TableName = new TableName("[PROJECT]", "[INSTANCE]", "[TABLE]").ToString(), Entries = { }, }; // Make the request, returning a streaming response BigtableClient.MutateRowsStream streamingResponse = bigtableClient.MutateRows(request); // Read streaming responses from server until complete IAsyncEnumerator <MutateRowsResponse> responseStream = streamingResponse.ResponseStream; while (await responseStream.MoveNext()) { MutateRowsResponse response = responseStream.Current; // Do something with streamed response } // The response stream has completed // End snippet }
/// <summary>Snippet for MutateRows</summary> /// <remarks> /// This snippet has been automatically generated for illustrative purposes only. /// It may require modifications to work in your environment. /// </remarks> public async Task MutateRowsRequestObject() { // Create client BigtableClient bigtableClient = BigtableClient.Create(); // Initialize request argument(s) MutateRowsRequest request = new MutateRowsRequest { TableNameAsTableName = TableName.FromProjectInstanceTable("[PROJECT]", "[INSTANCE]", "[TABLE]"), Entries = { new MutateRowsRequest.Types.Entry(), }, AppProfileId = "", }; // Make the request, returning a streaming response BigtableClient.MutateRowsStream response = bigtableClient.MutateRows(request); // Read streaming responses from server until complete // Note that C# 8 code can use await foreach AsyncResponseStream <MutateRowsResponse> responseStream = response.GetResponseStream(); while (await responseStream.MoveNextAsync()) { MutateRowsResponse responseItem = responseStream.Current; // Do something with streamed response } // The response stream has completed }
/// <summary> /// Gathers and orders the entries from all responses from the stream. /// The order will match the order of the associated request entries. /// </summary> public static async Task <IEnumerable <MutateRowsResponse.Types.Entry> > GetResponseEntries( this BigtableClient.MutateRowsStream stream) { var responses = new List <MutateRowsResponse>(); while (await stream.ResponseStream.MoveNext()) { responses.Add(stream.ResponseStream.Current); } return(responses.SelectMany(r => r.Entries).OrderBy(e => e.Index)); }
/// <summary> /// Waits for complete <see cref="BigtableClient.MutateRowsStream"/> and checks <see cref="Google.Rpc.Status.Code"/> of every entry of the <see cref="MutateRowsRequest"/> /// </summary> /// <param name="response"> a <see cref="BigtableClient.MutateRowsStream"/></param> private async Task CheckWrittenAsync(BigtableClient.MutateRowsStream response) { IAsyncEnumerator <MutateRowsResponse> responseStream = response.ResponseStream; while (await responseStream.MoveNext()) { MutateRowsResponse current = responseStream.Current; // Check whether rows where written successfully foreach (var entry in current.Entries) { _greetingIndex = _mapToOriginalGreetingIndex[(int)entry.Index]; if (entry.Status.Code == 0) { Console.WriteLine($"\tGreeting: --{_settings.Greetings[_greetingIndex]}-- written successfully"); } else { Console.WriteLine($"\tFailed to write Greeting: --{_settings.Greetings[_greetingIndex]}"); Console.WriteLine(entry.Status.Message); } } } }
internal void DoHelloWorld() { #region 1. Create table with column family. try { Console.WriteLine($"Create new table: {_settings.TableName} with column family {_settings.ColumnFamily}, Instance: {_settings.InstanceId}"); // Check whether a table with given TableName already exists. if (!DoesTableExist(_bigtableTableAdminClient, _tableNameAdmin)) { _bigtableTableAdminClient.CreateTable( new InstanceName(_settings.ProjectId, _settings.InstanceId), _settings.TableName, new Table { Granularity = Table.Types.TimestampGranularity.Millis, ColumnFamilies = { { _settings.ColumnFamily, new ColumnFamily { GcRule = new GcRule { MaxNumVersions = 1 } } } } }); Console.WriteLine(DoesTableExist(_bigtableTableAdminClient, _tableNameAdmin) ? $"Table {_settings.TableName} created succsessfully\n" : $"There was a problem creating a table {_settings.TableName}"); } else { Console.WriteLine($"Table: {_settings.TableName} already exist"); } #endregion #region 2. Insert multiple rows. /* Each row has a unique row key. * * Note: This example uses sequential numeric IDs for simplicity, but * this can result in poor performance in a production application. * Since rows are stored in sorted order by key, sequential keys can * result in poor distribution of operations across nodes. * * For more information about how to design a Bigtable schema for the * best performance, see the documentation: * * https://cloud.google.com/bigtable/docs/schema-design */ Console.WriteLine($"Write some greetings to the table {_settings.TableName}"); // Insert 1 row using MutateRow() _greetingIndex = 0; try { _bigtableClient.MutateRow(_tableNameClient, _settings.RowKeyPrefix + _greetingIndex, MutationBuilder(_greetingIndex)); Console.WriteLine($"\tGreeting: --{_settings.Greetings[_greetingIndex]}-- written successfully"); } catch (Exception ex) { Console.WriteLine($"\tFailed to write Greeting: --{_settings.Greetings[_greetingIndex]}"); Console.WriteLine(ex.Message); throw; } // Insert multiple rows using MutateRows() // Build a MutateRowsRequest (contains table name and a collection of entries). MutateRowsRequest request = new MutateRowsRequest { TableNameAsTableName = _tableNameClient }; _mapToOriginalGreetingIndex = new List <int>(); while (++_greetingIndex < _settings.Greetings.Length) { _mapToOriginalGreetingIndex.Add(_greetingIndex); // Build an entry for every greeting (contains of row key and a collection of mutations). request.Entries.Add(Mutations.CreateEntry(_settings.RowKeyPrefix + _greetingIndex, MutationBuilder(_greetingIndex))); } BigtableClient.MutateRowsStream response = _bigtableClient.MutateRows(request); Task write = CheckWrittenAsync(response); write.Wait(); #endregion #region Read the first row Console.WriteLine("Read the first row"); int rowIndex = 0; Row rowRead = _bigtableClient.ReadRow(_tableNameClient, _settings.RowKeyPrefix + rowIndex); Console.WriteLine( $"\tRow key: {rowRead.Key.ToStringUtf8()}, Value: {rowRead.Families[0].Columns[0].Cells[0].Value.ToStringUtf8()}"); #endregion #region Read all rows. BigtableClient.ReadRowsStream responseRead = _bigtableClient.ReadRows(_tableNameClient); Task printRead = PrintReadRowsAsync(responseRead); printRead.Wait(); #endregion #region Delete table. Console.WriteLine($"Delete table: {_settings.TableName}"); _bigtableTableAdminClient.DeleteTable(_tableNameAdmin); if (DoesTableExist(_bigtableTableAdminClient, _tableNameAdmin) == false) { Console.WriteLine($"Table: {_settings.TableName} deleted succsessfully"); } #endregion } catch (Exception ex) { Console.WriteLine(ex.Message); } }