def create(self, initial_split_keys=None, column_families=()): """Creates this table. .. note:: A create request returns a :class:`._generated.table_pb2.Table` but we don't use this response. :type initial_split_keys: list :param initial_split_keys: (Optional) List of row keys that will be used to initially split the table into several tablets (Tablets are similar to HBase regions). Given two split keys, ``"s1"`` and ``"s2"``, three tablets will be created, spanning the key ranges: ``[, s1)``, ``[s1, s2)``, ``[s2, )``. :type column_families: list :param column_families: (Optional) List or other iterable of :class:`.ColumnFamily` instances. """ if initial_split_keys is not None: split_pb = table_admin_messages_v2_pb2.CreateTableRequest.Split initial_split_keys = [ split_pb(key=key) for key in initial_split_keys ] table_pb = None if column_families: table_pb = table_v2_pb2.Table() for col_fam in column_families: curr_id = col_fam.column_family_id table_pb.column_families[curr_id].CopyFrom(col_fam.to_pb()) request_pb = table_admin_messages_v2_pb2.CreateTableRequest( initial_splits=initial_split_keys or [], parent=self._instance.name, table_id=self.table_id, table=table_pb, ) client = self._instance._client # We expect a `._generated.table_pb2.Table` client._table_stub.CreateTable(request_pb)
def _CreateTableRequestPB(*args, **kw): from google.cloud.bigtable._generated import (bigtable_table_admin_pb2 as table_admin_v2_pb2) return table_admin_v2_pb2.CreateTableRequest(*args, **kw)