Firebase Firestore and Firebase Realtime Database are two source types, each with its own connection form in the Lake. Both forms are wizards with the steps General, Service account and Datetime. Use this page to add the service account key, choose the database the source reads, and see what becomes a table.
The connection test is optional; it checks that the source can be reached with the key and the database settings, and it saves nothing.
The Service account step starts with the key the connection runs with. The step shows this hint: "The project ID and service account email are read from the key."
The key must be the JSON key of a service account; the connection uses its project ID, client email and private key. Connector secrets covers how stored secrets behave and when the form asks for the key again.
Database ID names the Firestore database to read, and its placeholder is (default). Leave the field empty for the (default) database. The note under the field reads "Leave empty for the (default) database. Each top-level collection becomes a table." Each row carries an _id column holding the Firestore document id.
Database URL is the address of the database, in the form https:/. The hint reads "Filled from the key for the default instance. Databases in other regions use https:/ - copy it from the Firebase console."
Root path picks the node to read, and its placeholder is /. The hint reads "Each child key under this path becomes a table. / = the whole database."
The form names an empty address ("Database URL is required"), and an address it cannot read as a URL reads "Enter a URL such as https://my-project-default-rtdb.firebaseio.com". Adding a key fills Database URL from the key's project ID only while the field is blank or still holds the default-instance address; an address you enter yourself is kept.
The Datetime step also carries the summary of the new source.
(default)./.Click Add to save the source; on an existing source the button reads Save, and Duplicate makes a copy. Adding a source needs Add/Modify Lake Objects, and opening a saved one needs View Lake Objects. See Who can do what in the Lake.
When you edit a saved source, the form opens on the Service account step, and Name and Code are locked.
The one that matches where the data lives: Firebase Firestore for a Firestore database, Firebase Realtime Database for a Realtime Database. Both forms use the same steps and share the key handling, and they differ only in the database settings described above.
Leave it empty for the (default) database, or enter the ID of the database to read. Each top-level collection of the database becomes a table, and each row carries an _id column holding the Firestore document id.
Each child key under the Root path becomes a table. The default path, /, means the whole database.
The key points Database URL at the default instance of the project. A database in another region has its own address, in the form https:/; copy it from the Firebase console into Database URL.
Adding the key fills the field from the key's project ID, but only while the field is blank or still holds the default-instance address. An address you enter yourself is kept.
Database URL counts as an identity field of the connection. If your administrator turned on the secret re-entry setting in System settings, changing it clears the stored key and the form asks for it again: "The database URL changed. Enter the service account key again." The setting is off by default.
The Datetime step works as on other sources: choose the Timezone the source writes values in and how Datetime values are read, or apply the suggestion when the connection test detected a timezone. Timezones and datetime values explains the choices and the rules that always apply.
No. Firestore bills for every document read, so an incremental load sends its window into the request to Firestore instead of reading everything. The request covers the window widened by one day on each side, and the exact window is applied again when the rows land.
No. The load reads the data and applies the window when the rows land. For an incremental sync the increment column must be a datetime: a Realtime Database timestamp is read as a number when the source is sampled, so set its Data Type to a datetime first (Set up a table's columns).
The same form, filled from the saved connection, and it opens on the Service account step. Name and Code are locked in edit mode, and the stored key sits on its card, where Replace adds a new one. Click Save once you have changed something.
The load could not find the table it was set up for, and the run stops with "Cannot find table key for Firestore table: …" or "Cannot find table key for Realtime Database table: …". Check that the table still exists in the source, then run the load again. Lake troubleshooting shows where a failed run keeps its full error text.