Stay organized with collections
Save and categorize content based on your preferences.
Configure change streams
If you want to track data changes made to a Bigtable table, you can
enable a change stream for the table and then read it using an application
such as Dataflow. Before you read this document, read the Overview of
change streams. In particular, make
sure that you are aware of the costs incurred when streaming changes.
This page describes how to enable, disable, and change the retention period for
a change stream.
For instructions on creating a new table with a change stream enabled, see
Create a
table.
Required role
To get the permissions that you need to enable, disable, or modify a
Bigtable change stream, ask your administrator to grant you the
following IAM role.
Bigtable Administrator
(roles/bigtable.admin)
on the Bigtable instance that contains the table you plan to
stream changes from
Enable a change stream
To enable a change stream on an existing table, complete the following steps:
Console
Open the list of Bigtable instances in the Google Cloud console.
TABLE_ID: the ID for the table whose changes you want
to stream
INSTANCE_ID: the instance that contains the table
PROJECT_ID: the project that contains the instance
CHANGE_STREAM_RETENTION_PERIOD: the length of time that
Bigtable should keep change stream data for the table. Must
be no less than one day and no more than seven days, expressed as a number
and a letter for the unit. Acceptable units are days (d), hours (h),
minutes (m), and seconds (s). Example: 5d
Disable a change stream
You can disable a table's change stream at any time. Data stream records that
were created before you disable the change stream continue to consume storage
until the next compaction, but you are no
longer charged for that storage. You can't read a change stream after you
disable it, including changes recorded before you disable the stream.
Console
Open the list of Bigtable instances in the Google Cloud console.
TABLE_ID: the ID for the table whose changes you want
to stream
INSTANCE_ID: the instance that contains the table
PROJECT_ID: the project that contains the instance
Modify a change stream's retention time
You can modify the number of days that Bigtable keeps your change
stream records. If you reduce the number of days, records that were streamed
before the configuration change continue to consume storage until the next
compaction. After the configuration
change, you can only stream changes from the newly specified time period.
If you increase the retention time, it's not retroactive — change streams
are kept for the increased number of days starting when you modify the
configuration.
Console
Open the list of Bigtable instances in the Google Cloud console.
TABLE_ID: the ID for the table whose changes you want to stream
INSTANCE_ID: the instance that contains the table
PROJECT_ID: the project that contains the instance
CHANGE_STREAM_RETENTION_PERIOD: the length of time that
Bigtable should keep change stream data for the table.
Must be from one to seven days, expressed as a number and a letter for
the unit. Acceptable units are days (d), hours (h), minutes (m), and
seconds (s). Example: 5d
[[["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"]],["Last updated 2025-08-29 UTC."],[[["\u003cp\u003eChange streams on Bigtable tables can be enabled to track data modifications, which can be read by applications like Dataflow.\u003c/p\u003e\n"],["\u003cp\u003eChange stream retention periods can be configured for a duration between one and seven days, specifying how long Bigtable keeps the change stream data.\u003c/p\u003e\n"],["\u003cp\u003eYou can enable, disable, or modify the change stream retention period for existing tables via the Google Cloud console or using \u003ccode\u003egcloud\u003c/code\u003e commands.\u003c/p\u003e\n"],["\u003cp\u003eDisabling a change stream immediately halts new data capture, although previously recorded data will remain until the next compaction.\u003c/p\u003e\n"],["\u003cp\u003eTo make changes to a table's change stream, the user must have the Bigtable Administrator role, which is \u003ccode\u003eroles/bigtable.admin\u003c/code\u003e.\u003c/p\u003e\n"]]],[],null,["# Configure change streams\n========================\n\nIf you want to track data changes made to a Bigtable table, you can\nenable a change stream for the table and then read it using an application\nsuch as Dataflow. Before you read this document, read the [Overview of\nchange streams](/bigtable/docs/change-streams-overview). In particular, make\nsure that you are aware of the costs incurred when streaming changes.\n\nThis page describes how to enable, disable, and change the retention period for\na change stream.\n\nFor instructions on creating a new table with a change stream enabled, see\n[Create a\ntable](/bigtable/docs/managing-tables#create-table).\n\nRequired role\n-------------\n\nTo get the permissions that you need to enable, disable, or modify a\nBigtable change stream, ask your administrator to grant you the\nfollowing IAM role.\n\n- Bigtable Administrator ([`roles/bigtable.admin`](/bigtable/docs/access-control#bigtable.admin)) on the Bigtable instance that contains the table you plan to stream changes from\n\nEnable a change stream\n----------------------\n\nTo enable a change stream on an existing table, complete the following steps: \n\n### Console\n\n1.\n Open the list of Bigtable instances in the Google Cloud console.\n\n\n [Open the instance list](https://console.cloud.google.com/bigtable/instances)\n2. Click the instance containing the table that you want to enable a change\n stream for.\n\n3. Click **Tables** in the left pane.\n\n The Tables page displays a list of tables in the instance.\n4. Click **Edit** for the table for which you want to enable a change\n stream.\n\n5. Click **Enable change stream**.\n\n6. In the **Expiration time** field, enter a number from 1 to 7 to\n configure the number of days that data stream records should be\n retained.\n\n7. Click **Save**.\n\n### gcloud\n\nTo enable a change stream on a table, use the [`gcloud bigtable instances\ntables update`](/sdk/gcloud/reference/bigtable/instances/tables/update)\ncommand. \n\n gcloud bigtable instances tables update \u003cvar translate=\"no\"\u003eTABLE_ID\u003c/var\u003e \\\n --instance=\u003cvar translate=\"no\"\u003eINSTANCE_ID\u003c/var\u003e \\\n --project=\u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e \\\n --change-stream-retention-period=\u003cvar translate=\"no\"\u003eCHANGE_STREAM_RETENTION_PERIOD\u003c/var\u003e\n\nReplace the following:\n\n- \u003cvar translate=\"no\"\u003e\u003ccode translate=\"no\" dir=\"ltr\"\u003eTABLE_ID\u003c/code\u003e\u003c/var\u003e: the ID for the table whose changes you want to stream\n- \u003cvar translate=\"no\"\u003e\u003ccode translate=\"no\" dir=\"ltr\"\u003eINSTANCE_ID\u003c/code\u003e\u003c/var\u003e: the instance that contains the table\n- \u003cvar translate=\"no\"\u003e\u003ccode translate=\"no\" dir=\"ltr\"\u003ePROJECT_ID\u003c/code\u003e\u003c/var\u003e: the project that contains the instance\n- \u003cvar translate=\"no\"\u003e\u003ccode translate=\"no\" dir=\"ltr\"\u003eCHANGE_STREAM_RETENTION_PERIOD\u003c/code\u003e\u003c/var\u003e: the length of time that Bigtable should keep change stream data for the table. Must be no less than one day and no more than seven days, expressed as a number and a letter for the unit. Acceptable units are days (d), hours (h), minutes (m), and seconds (s). Example: `5d`\n\nDisable a change stream\n-----------------------\n\nYou can disable a table's change stream at any time. Data stream records that\nwere created before you disable the change stream continue to consume storage\nuntil the next [compaction](/bigtable/docs/overview#compactions), but you are no\nlonger charged for that storage. You can't read a change stream after you\ndisable it, including changes recorded before you disable the stream. \n\n### Console\n\n1.\n Open the list of Bigtable instances in the Google Cloud console.\n\n\n [Open the instance list](https://console.cloud.google.com/bigtable/instances)\n2. Click the instance whose tables you want to view.\n\n3. Click **Tables** in the left pane.\n\n The Tables page displays a list of tables in the instance.\n4. Click **Edit** for the table whose change stream configuration you want\n to disable.\n\n5. Clear the checkmark from **Enable change stream**.\n\n6. Click **Save**.\n\n### gcloud\n\nTo disable a change stream on a table, use the [`gcloud bigtable instances\ntables update`](/sdk/gcloud/reference/bigtable/instances/tables/update)\ncommand. \n\n gcloud bigtable instances tables update \u003cvar translate=\"no\"\u003eTABLE_ID\u003c/var\u003e \\\n --instance=\u003cvar translate=\"no\"\u003eINSTANCE_ID\u003c/var\u003e \\\n --project=\u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e \\\n --clear-change-stream-retention-period\n\nReplace the following:\n\n- \u003cvar translate=\"no\"\u003e\u003ccode translate=\"no\" dir=\"ltr\"\u003eTABLE_ID\u003c/code\u003e\u003c/var\u003e: the ID for the table whose changes you want to stream\n- \u003cvar translate=\"no\"\u003e\u003ccode translate=\"no\" dir=\"ltr\"\u003eINSTANCE_ID\u003c/code\u003e\u003c/var\u003e: the instance that contains the table\n- \u003cvar translate=\"no\"\u003e\u003ccode translate=\"no\" dir=\"ltr\"\u003ePROJECT_ID\u003c/code\u003e\u003c/var\u003e: the project that contains the instance\n\nModify a change stream's retention time\n---------------------------------------\n\nYou can modify the number of days that Bigtable keeps your change\nstream records. If you reduce the number of days, records that were streamed\nbefore the configuration change continue to consume storage until the next\n[compaction](/bigtable/docs/overview#compactions). After the configuration\nchange, you can only stream changes from the newly specified time period.\n\nIf you increase the retention time, it's not retroactive --- change streams\nare kept for the increased number of days starting when you modify the\nconfiguration. \n\n### Console\n\n1.\n Open the list of Bigtable instances in the Google Cloud console.\n\n\n [Open the instance list](https://console.cloud.google.com/bigtable/instances)\n2. Click the instance whose tables you want to view.\n\n3. Click **Tables** in the left pane.\n\n The Tables page displays a list of tables in the instance.\n4. Click **Edit** for the table whose change stream configuration you want\n to modify.\n\n5. In the Expiration time field, enter a number from 1 to 7 for the number\n of days that data stream records should be retained.\n\n6. Click **Save**.\n\n### gcloud\n\nTo change the retention period for a table's change stream, use the [`gcloud\nbigtable instances tables\nupdate`](/sdk/gcloud/reference/bigtable/instances/tables/update)\ncommand. \n\n gcloud bigtable instances tables update \u003cvar translate=\"no\"\u003eTABLE_ID\u003c/var\u003e \\\n --instance=\u003cvar translate=\"no\"\u003eINSTANCE_ID\u003c/var\u003e \\\n --project=\u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e \\\n --change-stream-retention-period=\u003cvar translate=\"no\"\u003eCHANGE_STREAM_RETENTION_PERIOD\u003c/var\u003e\n\nReplace the following:\n\n- \u003cvar translate=\"no\"\u003e\u003ccode translate=\"no\" dir=\"ltr\"\u003eTABLE_ID\u003c/code\u003e\u003c/var\u003e: the ID for the table whose changes you want to stream\n- \u003cvar translate=\"no\"\u003e\u003ccode translate=\"no\" dir=\"ltr\"\u003eINSTANCE_ID\u003c/code\u003e\u003c/var\u003e: the instance that contains the table\n- \u003cvar translate=\"no\"\u003e\u003ccode translate=\"no\" dir=\"ltr\"\u003ePROJECT_ID\u003c/code\u003e\u003c/var\u003e: the project that contains the instance\n- \u003cvar translate=\"no\"\u003e\u003ccode translate=\"no\" dir=\"ltr\"\u003eCHANGE_STREAM_RETENTION_PERIOD\u003c/code\u003e\u003c/var\u003e: the length of time that Bigtable should keep change stream data for the table. Must be from one to seven days, expressed as a number and a letter for the unit. Acceptable units are days (d), hours (h), minutes (m), and seconds (s). Example: `5d`\n\nWhat's next\n-----------\n\n- [Read a change stream with Dataflow.](/bigtable/docs/change-streams-use-dataflow)\n- [Review Bigtable pricing.](/bigtable/pricing)\n- [Complete a quickstart to learn how to enable a change stream and view changes.](/bigtable/docs/change-streams-quickstart)\n- [Use the Cloud Bigtable client library for Java to read change streams.](/bigtable/docs/change-streams-read-java)\n- [Work through a tutorial about processing a change stream.](/bigtable/docs/change-streams-tutorial)"]]