Skip to main content

Install

Check the requirements first. The commands run on your machine with the Databricks CLI authenticated against the workspace; -p <profile> selects the CLI profile.

1. Get the code​

git clone https://github.com/databrickslabs/impulse.git
cd impulse/apps/adhoc-reporting

Use main or check out a release tag (git checkout vX.Y.Z). Either way, impulse.lock pins the Impulse release that report jobs install.

2. Build the frontend​

cd frontend && npm ci && npm run build && cd ..

3. Deploy​

databricks bundle deploy --var warehouse_id=<warehouse id> -p <profile>
databricks bundle run impulse_app --var warehouse_id=<warehouse id> -p <profile>

bundle run starts the app and prints its URL. Pass the same --var values to both commands. The bundle has these variables:

VariableDefaultMeaning
warehouse_idrequiredSQL warehouse the app runs user queries on
app_nameimpulse-appName of the app, part of its URL
end_user_groupusersGroup that gets CAN_USE on the app

4. Grant the service principal access​

Report jobs run as the app's service principal. A catalog or schema owner grants it access once per silver and gold schema:

GRANT USE CATALOG ON CATALOG <catalog> TO `<service principal application id>`;
GRANT USE SCHEMA, SELECT ON SCHEMA <catalog>.<silver schema> TO `<service principal application id>`;
GRANT USE SCHEMA, SELECT, MODIFY, CREATE TABLE ON SCHEMA <catalog>.<gold schema> TO `<service principal application id>`;

The application id is the service_principal_client_id in the output of databricks apps get impulse-app -p <profile>. Before each run, the Review & run step checks the access of both the user and the service principal and shows the exact statements when something is missing.

Serverless without GitHub access​

Report jobs install the Impulse wheel pinned in impulse.lock from its GitHub release. If serverless compute can't reach GitHub, upload that wheel to a Unity Catalog volume, grant the app's service principal READ VOLUME on the volume (and USE CATALOG and USE SCHEMA on its catalog and schema), and add its path to impulse.lock before deploying:

wheel_override = "/Volumes/<catalog>/<schema>/<volume>/databricks_impulse-<version>-py3-none-any.whl"

The wheel's dependencies still come from PyPI or the workspace's package repository. Upload the new wheel and update the path with each upgrade.

Data model​

Schemas in the Impulse layout need no configuration. Otherwise an admin edits the shared data model on the app's Data model page; it's stored in /Workspace/Shared/Impulse/config.yaml. List only the settings that differ, for example:

silver_catalog: main
silver_schema: measurements
tables:
channels: channel_data
uut:
key: uut_id
solver_config:
container_metrics:
column_name_mapping:
measurement_id: container_id

solver_config is passed to the Impulse query engine unchanged (see Configuration). The page lists every setting with its default and meaning, and tests the configuration against a schema with the admin's permissions before saving.

Upgrade​

Pull the new version or check out a newer release tag, build the frontend and deploy again as above. Reports are stored in each user's workspace folder and keep working; each report job uses the Impulse version pinned by the deployed app.