Get or create a column family
Stay organized with collections
Save and categorize content based on your preferences.
Autocreate a column family if it does not exist.
Code sample
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],[],[[["\u003cp\u003eThis code snippet demonstrates how to automatically create a column family in Bigtable if it does not already exist.\u003c/p\u003e\n"],["\u003cp\u003eThe code uses the Bigtable Admin client library to check for the existence of a specified column family.\u003c/p\u003e\n"],["\u003cp\u003eIf the column family is not found, the code proceeds to create it with a maximum of 5 versions.\u003c/p\u003e\n"],["\u003cp\u003eThe sample also shows you how to retrieve the column family details.\u003c/p\u003e\n"],["\u003cp\u003eThe code sample can be used to learn about installing and using the Bigtable client library, and setting up authentication for a local development environment.\u003c/p\u003e\n"]]],[],null,["Autocreate a column family if it does not exist.\n\nCode sample \n\nC++\n\n\nTo learn how to install and use the client library for Bigtable, see\n[Bigtable client libraries](/bigtable/docs/reference/libraries).\n\n\nTo authenticate to Bigtable, set up Application Default Credentials.\nFor more information, see\n\n[Set up authentication for a local development environment](/docs/authentication/set-up-adc-local-dev-environment).\n\n namespace cbt = ::google::cloud::bigtable;\n namespace cbta = ::google::cloud::bigtable_admin;\n using ::google::bigtable::admin::v2::ModifyColumnFamiliesRequest;\n using ::google::cloud::StatusOr;\n [](cbta::BigtableTableAdminClient admin, std::string const& project_id,\n std::string const& instance_id, std::string const& table_id,\n std::string const& family_name) {\n std::string table_name = cbt::TableName(project_id, instance_id, table_id);\n\n google::bigtable::admin::v2::GetTableRequest r;\n r.set_name(table_name);\n r.set_view(google::bigtable::admin::v2::Table::FULL);\n\n StatusOr\u003cgoogle::bigtable::admin::v2::Table\u003e schema =\n admin.GetTable(std::move(r));\n\n if (!schema) throw std::move(schema).status();\n auto pos = schema-\u003ecolumn_families().find(family_name);\n if (pos == schema-\u003ecolumn_families().end()) {\n // Try to create the column family instead:\n ModifyColumnFamiliesRequest::Modification mod;\n mod.set_id(family_name);\n mod.mutable_create()-\u003emutable_gc_rule()-\u003eset_max_num_versions(5);\n\n auto modified = admin.ModifyColumnFamilies(table_name, {std::move(mod)});\n if (!modified) throw std::move(schema).status();\n schema = *std::move(modified);\n pos = schema-\u003ecolumn_families().find(family_name);\n }\n\n if (pos == schema-\u003ecolumn_families().end()) {\n throw std::runtime_error(\"GetOrCreateFamily failed\");\n }\n\n google::bigtable::admin::v2::ColumnFamily family = pos-\u003esecond;\n std::cout \u003c\u003c \"Column family name: \" \u003c\u003c pos-\u003efirst\n \u003c\u003c \"\\nColumn family details: \" \u003c\u003c family.DebugString() \u003c\u003c \"\\n\";\n }\n\nWhat's next\n\n\nTo search and filter code samples for other Google Cloud products, see the\n[Google Cloud sample browser](/docs/samples?product=bigtable)."]]