Skip to main content

Ingest data from Google Search Console

Beta

This feature is in Beta. Workspace admins can control access to this feature from the Previews page. See Manage Databricks previews.

This page shows how to create a managed Google Search Console ingestion pipeline using Lakeflow Connect.

Requirements

  • To create an ingestion pipeline, first meet the following requirements:

    • Your workspace must be enabled for Unity Catalog.

    • Serverless compute must be enabled for your workspace. See Serverless compute requirements.

    • To create a new connection, you must have CREATE CONNECTION privileges on the metastore. See Manage privileges in Unity Catalog.

      If the connector supports UI-based pipeline authoring, an admin can create the connection and the pipeline at the same time by completing the steps on this page. However, if the users who create pipelines use API-based pipeline authoring or are non-admin users, an admin must first create the connection in Catalog Explorer. See Connect to managed ingestion sources.

    • To use an existing connection, you must have USE CONNECTION privileges or ALL PRIVILEGES on the connection object.

    • You must have USE CATALOG privileges on the target catalog.

    • You must have USE SCHEMA and CREATE TABLE privileges on an existing schema or CREATE SCHEMA privileges on the target catalog.

  • To ingest from Google Search Console, first configure authentication from Databricks and create a connection. See Configure authentication to Google Search Console and Create a Google Search Console connection.

Connector options

Set pipeline-scoped options in source_configurations and table-scoped options on the individual object. See Examples for usage.

Option

Scope

Required

Applies to

Description

site_urls

Pipeline

Yes

All tables

One or more verified Google Search Console property URLs to ingest (for example, https://example.com/ or sc-domain:example.com). Each URL must be a property verified in Google Search Console.

start_date

Pipeline

No

All incremental tables (search_analytics_*, hourly_search_analytics_*)

Earliest date from which to ingest data, in yyyy-MM-dd format. Defaults to 500 days before the first sync. Has no effect on sites or sitemaps.

data_state

Table

No

Daily search performance tables only (search_analytics_*)

Data freshness for daily search performance tables. all (default) includes finalized and fresh data. final includes finalized data only. Set it only on search_analytics_* objects. The sites, sitemaps, and hourly_search_analytics_* tables do not accept this option.

Option

Scope

Required

Applies to

Description

site_urls

Pipeline

Yes

All tables

One or more verified Google Search Console property URLs to ingest (for example, https://example.com/ or sc-domain:example.com). Each URL must be a property verified in Google Search Console.

start_date

Pipeline

No

All incremental tables (search_analytics_*, hourly_search_analytics_*)

Earliest date from which to ingest data, in yyyy-MM-dd format. Defaults to 500 days before the first sync. Has no effect on sites or sitemaps.

data_state

Table

No

Daily search performance tables only (search_analytics_*)

Data freshness for daily search performance tables. all (default) includes finalized and fresh data. final includes finalized data only. Set it only on search_analytics_* objects. The sites, sitemaps, and hourly_search_analytics_* tables do not accept this option.

Create an ingestion pipeline

For the list of supported source tables, see Supported source tables.

Use Declarative Automation Bundles to manage Google Search Console pipelines as code. Bundles can contain YAML definitions of jobs and tasks, are managed using the Databricks CLI, and can be shared and run in different target workspaces (such as development, staging, and production). For more information, see What are Declarative Automation Bundles?.

  1. Create a bundle using the Databricks CLI:

    Bash
    databricks bundle init
  2. Add two new resource files to the bundle:

    • A pipeline definition file (for example, resources/google_search_console_pipeline.yml). See pipeline.ingestion_definition and Examples.
    • A job definition file that controls the frequency of data ingestion (for example, resources/google_search_console_job.yml).
  3. Deploy the pipeline using the Databricks CLI:

    Bash
    databricks bundle deploy

Examples

The Google Search Console connector makes available the following source tables under the default source schema:

Table type

Tables

Site tables

sites, sitemaps

Daily search performance report tables

search_analytics_all_fields, search_analytics_by_country, search_analytics_by_date, search_analytics_by_device, search_analytics_by_page, search_analytics_by_query, search_analytics_page_report, search_analytics_site_report_by_page, search_analytics_site_report_by_site

Hourly search performance report tables

hourly_search_analytics_page_report, hourly_search_analytics_site_report_by_page, hourly_search_analytics_site_report_by_site

Table type

Tables

Site tables

sites, sitemaps

Daily search performance report tables

search_analytics_all_fields, search_analytics_by_country, search_analytics_by_date, search_analytics_by_device, search_analytics_by_page, search_analytics_by_query, search_analytics_page_report, search_analytics_site_report_by_page, search_analytics_site_report_by_site

Hourly search performance report tables

hourly_search_analytics_page_report, hourly_search_analytics_site_report_by_page, hourly_search_analytics_site_report_by_site

For schema details, see Supported source tables.

Ingest a search performance report table

The following example ingests search_analytics_all_fields, which returns daily performance data aggregated on all five dimensions (date, country, device, page, query).

YAML
resources:
pipelines:
google_search_console_pipeline:
name: google_search_console_pipeline
catalog: 'main'
target: 'google_search_console_data'
ingestion_definition:
connection_name: google_search_console_connection
source_configurations:
- api_source_connector_config:
configs:
site_urls: '["<site-url>"]'
start_date: '<start-date>'
objects:
- table:
source_schema: 'default'
source_table: 'search_analytics_all_fields'
destination_catalog: 'main'
destination_schema: 'google_search_console_data'
destination_table: 'search_analytics_all_fields'
connector_options:
api_source_connector_options:
options:
data_state: 'all'

Ingest a site table

The following example ingests sites, which returns metadata about your verified Google Search Console properties. Site tables are fully refreshed on every pipeline run, so start_date has no effect on them, and they do not accept data_state.

YAML
resources:
pipelines:
google_search_console_pipeline:
name: google_search_console_pipeline
catalog: 'main'
target: 'google_search_console_data'
ingestion_definition:
connection_name: google_search_console_connection
source_configurations:
- api_source_connector_config:
configs:
site_urls: '["<site-url>"]'
objects:
- table:
source_schema: 'default'
source_table: 'sites'
destination_catalog: 'main'
destination_schema: 'google_search_console_data'
destination_table: 'sites'

Ingest site and search performance tables together

The following example combines a site table and a search performance report table in a single pipeline.

YAML
resources:
pipelines:
google_search_console_pipeline:
name: google_search_console_pipeline
catalog: 'main'
target: 'google_search_console_data'
ingestion_definition:
connection_name: google_search_console_connection
source_configurations:
- api_source_connector_config:
configs:
site_urls: '["<site-url>"]'
start_date: '<start-date>'
objects:
# sites does not accept data_state, so it has no connector_options block.
- table:
source_schema: 'default'
source_table: 'sites'
destination_catalog: 'main'
destination_schema: 'google_search_console_data'
destination_table: 'sites'
- table:
source_schema: 'default'
source_table: 'search_analytics_by_page'
destination_catalog: 'main'
destination_schema: 'google_search_console_data'
destination_table: 'search_analytics_by_page'
connector_options:
api_source_connector_options:
options:
data_state: 'final'

Declarative Automation Bundles job definition file

The following is an example job definition file for use with Declarative Automation Bundles. The job runs daily.

YAML
resources:
jobs:
google_search_console_job:
name: google_search_console_job
schedule:
quartz_cron_expression: '0 0 0 * * ?'
timezone_id: 'UTC'
tasks:
- task_key: google_search_console_ingestion
pipeline_task:
pipeline_id: ${resources.pipelines.google_search_console_pipeline.id}

Common patterns

For advanced pipeline configurations, see Common patterns for managed ingestion pipelines.

Next steps

Start, schedule, and set alerts on your pipeline. See Common pipeline maintenance tasks.

Additional resources