From 11c07ee8abaedca77ba4518524dde4bff1470eab Mon Sep 17 00:00:00 2001 From: Pere Miquel Brull Date: Wed, 31 May 2023 16:00:31 +0200 Subject: [PATCH] Fix #11516 - SAP Hana Connector (#11777) * SAP Hana skeleton * Add SAP Hana Connector * Fix ingestion and docs * Prep SAP Hana Profiler * Linting * Update index.md * Revert: Update index.md --------- Co-authored-by: Ayush Shah --- ingestion/setup.py | 1 + .../ingestion/connections/builders.py | 2 +- .../ingestion/connections/test_connections.py | 4 +- .../source/database/saphana/__init__.py | 0 .../source/database/saphana/connection.py | 166 ++++ .../source/database/saphana/metadata.py | 75 ++ .../profiler/orm/functions/conn_test.py | 5 + .../metadata/profiler/orm/functions/length.py | 1 + .../metadata/profiler/orm/functions/modulo.py | 1 + .../profiler/orm/functions/random_num.py | 1 + .../src/metadata/profiler/orm/registry.py | 1 + .../v1.0.0/deployment/airflow/index.md | 32 +- .../connectors/database/mysql/index.md | 4 +- .../connectors/database/sap-hana/airflow.md | 774 ++++++++++++++++++ .../connectors/database/sap-hana/cli.md | 546 ++++++++++++ .../connectors/database/sap-hana/index.md | 380 +++++++++ .../deployment/airflow/index.md | 78 +- .../content/v1.1.0-snapshot/menu.md | 6 + .../connectors/sap-hana/add-new-service.png | Bin 0 -> 41493 bytes .../connectors/sap-hana/select-service.png | Bin 0 -> 125770 bytes .../sap-hana/service-connection.png | Bin 0 -> 119559 bytes .../testConnections/database/saphana.json | 34 + .../database/sapHanaConnection.json | 122 +++ .../entity/services/databaseService.json | 9 +- .../public/locales/en-US/Database/SapHana.md | 88 ++ .../src/assets/img/service-icon-sap-hana.png | Bin 0 -> 6467 bytes .../ui/src/constants/Services.constant.ts | 2 + .../ui/src/utils/DatabaseServiceUtils.ts | 6 + .../resources/ui/src/utils/ServiceUtils.tsx | 4 + 29 files changed, 2291 insertions(+), 51 deletions(-) create mode 100644 ingestion/src/metadata/ingestion/source/database/saphana/__init__.py create mode 100644 ingestion/src/metadata/ingestion/source/database/saphana/connection.py create mode 100644 ingestion/src/metadata/ingestion/source/database/saphana/metadata.py create mode 100644 openmetadata-docs/content/v1.1.0-snapshot/connectors/database/sap-hana/airflow.md create mode 100644 openmetadata-docs/content/v1.1.0-snapshot/connectors/database/sap-hana/cli.md create mode 100644 openmetadata-docs/content/v1.1.0-snapshot/connectors/database/sap-hana/index.md create mode 100644 openmetadata-docs/images/v1.1.0/connectors/sap-hana/add-new-service.png create mode 100644 openmetadata-docs/images/v1.1.0/connectors/sap-hana/select-service.png create mode 100644 openmetadata-docs/images/v1.1.0/connectors/sap-hana/service-connection.png create mode 100644 openmetadata-service/src/main/resources/json/data/testConnections/database/saphana.json create mode 100644 openmetadata-spec/src/main/resources/json/schema/entity/services/connections/database/sapHanaConnection.json create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SapHana.md create mode 100644 openmetadata-ui/src/main/resources/ui/src/assets/img/service-icon-sap-hana.png diff --git a/ingestion/setup.py b/ingestion/setup.py index 2410a95029b..48552a35f5b 100644 --- a/ingestion/setup.py +++ b/ingestion/setup.py @@ -218,6 +218,7 @@ plugins: Dict[str, Set[str]] = { }, "sagemaker": {VERSIONS["boto3"]}, "salesforce": {"simple_salesforce==1.11.4"}, + "sap-hana": {"hdbcli", "sqlalchemy-hana"}, "singlestore": {VERSIONS["pymysql"]}, "sklearn": {VERSIONS["scikit-learn"]}, "snowflake": {"snowflake-sqlalchemy~=1.4"}, diff --git a/ingestion/src/metadata/ingestion/connections/builders.py b/ingestion/src/metadata/ingestion/connections/builders.py index dbc3194f6a8..be05be7b3bd 100644 --- a/ingestion/src/metadata/ingestion/connections/builders.py +++ b/ingestion/src/metadata/ingestion/connections/builders.py @@ -117,7 +117,7 @@ def init_empty_connection_options() -> ConnectionOptions: return ConnectionOptions(__root__={}) -def get_connection_url_common(connection): +def get_connection_url_common(connection) -> str: """ Common method for building the source connection urls """ diff --git a/ingestion/src/metadata/ingestion/connections/test_connections.py b/ingestion/src/metadata/ingestion/connections/test_connections.py index ee53f9779f4..c0152ad78b8 100644 --- a/ingestion/src/metadata/ingestion/connections/test_connections.py +++ b/ingestion/src/metadata/ingestion/connections/test_connections.py @@ -347,13 +347,13 @@ def test_connection_db_schema_sources( """ queries = queries or {} - def custom_executor(engine, inspector_fn_str: str): + def custom_executor(engine_: Engine, inspector_fn_str: str): """ Check if we can list tables or views from a given schema or a random one """ - inspector = inspect(engine) + inspector = inspect(engine_) inspector_fn = getattr(inspector, inspector_fn_str) if service_connection.databaseSchema: diff --git a/ingestion/src/metadata/ingestion/source/database/saphana/__init__.py b/ingestion/src/metadata/ingestion/source/database/saphana/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/ingestion/src/metadata/ingestion/source/database/saphana/connection.py b/ingestion/src/metadata/ingestion/source/database/saphana/connection.py new file mode 100644 index 00000000000..3f9726b54e8 --- /dev/null +++ b/ingestion/src/metadata/ingestion/source/database/saphana/connection.py @@ -0,0 +1,166 @@ +# Copyright 2021 Collate +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" +Source connection handler +""" +from functools import partial +from typing import Callable, Dict, Optional +from urllib.parse import quote_plus + +from sqlalchemy import inspect +from sqlalchemy.engine import Engine + +from metadata.generated.schema.entity.automations.workflow import ( + Workflow as AutomationWorkflow, +) +from metadata.generated.schema.entity.services.connections.database.sapHanaConnection import ( + HdbUserStoreConnection, + SapHanaConnection, + SqlConnection, +) +from metadata.ingestion.connections.builders import ( + create_generic_db_connection, + get_connection_args_common, + get_connection_options_dict, +) +from metadata.ingestion.connections.test_connections import ( + execute_inspector_func, + test_connection_engine_step, + test_connection_steps, +) +from metadata.ingestion.ometa.ometa_api import OpenMetadata + + +def get_database_connection_url(connection: SapHanaConnection) -> str: + """ + Build the SQLConnection URL for the database connection + """ + + conn = connection.connection + + if not isinstance(conn, SqlConnection): + raise ValueError("Database Connection requires the SQL connection details") + + url = ( + f"{connection.scheme.value}://" + f"{quote_plus(conn.username)}:" + f"{quote_plus(conn.password.get_secret_value())}@" + f"{conn.hostPort}" + ) + + if hasattr(connection, "database"): + url += f"/{connection.database}" if connection.database else "" + + options = get_connection_options_dict(connection) + if options: + if hasattr(conn, "database") and not conn.database: + url += "/" + params = "&".join( + f"{key}={quote_plus(value)}" for (key, value) in options.items() if value + ) + url = f"{url}?{params}" + return url + + +def get_hdb_connection_url(connection: SapHanaConnection) -> str: + """ + Build the SQLConnection URL for the database connection + """ + + if not isinstance(connection.connection, HdbUserStoreConnection): + raise ValueError("Database Connection requires the SQL connection details") + + return f"{connection.scheme.value}://userkey={connection.connection.userKey}" + + +def get_connection(connection: SapHanaConnection) -> Engine: + """ + Create connection + """ + + if isinstance(connection.connection, SqlConnection): + return create_generic_db_connection( + connection=connection, + get_connection_url_fn=get_database_connection_url, + get_connection_args_fn=get_connection_args_common, + ) + + if isinstance(connection.connection, HdbUserStoreConnection): + return create_generic_db_connection( + connection=connection, + get_connection_url_fn=get_hdb_connection_url, + get_connection_args_fn=get_connection_args_common, + ) + + raise ValueError("Unrecognized SAP Hana connection type!") + + +def _build_test_fn_dict( + engine: Engine, service_connection: SapHanaConnection +) -> Dict[str, Callable]: + """ + Build the test connection steps dict + """ + + def custom_executor(engine_: Engine, inspector_fn_str: str): + """ + Check if we can list tables or views from a given schema + or a random one + """ + + inspector = inspect(engine_) + inspector_fn = getattr(inspector, inspector_fn_str) + + # HDB connection won't have a databaseSchema + if getattr(service_connection.connection, "databaseSchema"): + inspector_fn(service_connection.connection.databaseSchema) + else: + schema_name = inspector.get_schema_names() or [] + for schema in schema_name: + inspector_fn(schema) + break + + if isinstance(service_connection.connection, SqlConnection): + return { + "CheckAccess": partial(test_connection_engine_step, engine), + "GetSchemas": partial(execute_inspector_func, engine, "get_schema_names"), + "GetTables": partial(custom_executor, engine, "get_table_names"), + "GetViews": partial(custom_executor, engine, "get_view_names"), + } + + if isinstance(service_connection.connection, HdbUserStoreConnection): + return { + "CheckAccess": partial(test_connection_engine_step, engine), + "GetSchemas": partial(execute_inspector_func, engine, "get_schema_names"), + "GetTables": partial(custom_executor, engine, "get_table_names"), + "GetViews": partial(custom_executor, engine, "get_view_names"), + } + + raise ValueError(f"Unknown connection type for {service_connection.connection}") + + +def test_connection( + metadata: OpenMetadata, + engine: Engine, + service_connection: SapHanaConnection, + automation_workflow: Optional[AutomationWorkflow] = None, +) -> None: + """ + Test connection. This can be executed either as part + of a metadata workflow or during an Automation Workflow + """ + + test_connection_steps( + metadata=metadata, + test_fn=_build_test_fn_dict(engine, service_connection), + service_fqn=service_connection.type.value, + automation_workflow=automation_workflow, + ) diff --git a/ingestion/src/metadata/ingestion/source/database/saphana/metadata.py b/ingestion/src/metadata/ingestion/source/database/saphana/metadata.py new file mode 100644 index 00000000000..ad198ddbe14 --- /dev/null +++ b/ingestion/src/metadata/ingestion/source/database/saphana/metadata.py @@ -0,0 +1,75 @@ +# Copyright 2021 Collate +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" +SAP Hana source module +""" +from typing import Iterable + +from sqlalchemy import inspect + +from metadata.generated.schema.entity.services.connections.database.sapHanaConnection import ( + SapHanaConnection, +) +from metadata.generated.schema.entity.services.connections.metadata.openMetadataConnection import ( + OpenMetadataConnection, +) +from metadata.generated.schema.metadataIngestion.workflow import ( + Source as WorkflowSource, +) +from metadata.ingestion.api.source import InvalidSourceException +from metadata.ingestion.source.database.common_db_source import CommonDbSourceService +from metadata.utils.logger import ingestion_logger + +logger = ingestion_logger() + + +class SaphanaSource(CommonDbSourceService): + """ + Implements the necessary methods to extract + Database metadata from Mysql Source + """ + + @classmethod + def create(cls, config_dict, metadata_config: OpenMetadataConnection): + config: WorkflowSource = WorkflowSource.parse_obj(config_dict) + connection: SapHanaConnection = config.serviceConnection.__root__.config + if not isinstance(connection, SapHanaConnection): + raise InvalidSourceException( + f"Expected SapHanaConnection, but got {connection}" + ) + return cls(config, metadata_config) + + def get_database_names(self) -> Iterable[str]: + """ + Check if the db is configured, or query the name + """ + self.inspector = inspect(self.engine) + + if getattr(self.service_connection.connection, "database"): + yield self.service_connection.connection.database + + else: + try: + yield self.connection.execute( + "SELECT DATABASE_NAME FROM M_DATABASE" + ).fetchone()[0] + except Exception as err: + raise RuntimeError( + f"Error retrieving database name from the source - [{err}]." + " A way through this error is by specifying the `database` in the service connection." + ) + + def get_raw_database_schema_names(self) -> Iterable[str]: + if self.service_connection.connection.__dict__.get("databaseSchema"): + yield self.service_connection.connection.databaseSchema + else: + for schema_name in self.inspector.get_schema_names(): + yield schema_name diff --git a/ingestion/src/metadata/profiler/orm/functions/conn_test.py b/ingestion/src/metadata/profiler/orm/functions/conn_test.py index fe7e6b4ae6d..71ddb8d95a3 100644 --- a/ingestion/src/metadata/profiler/orm/functions/conn_test.py +++ b/ingestion/src/metadata/profiler/orm/functions/conn_test.py @@ -50,3 +50,8 @@ def _(*_, **__): @compiles(ConnTestFn, Dialects.IbmDbSa) def _(*_, **__): return "SELECT 42 FROM SYSIBM.SYSDUMMY1;" + + +@compiles(ConnTestFn, Dialects.Hana) +def _(*_, **__): + return "SELECT 42 FROM DUMMY" diff --git a/ingestion/src/metadata/profiler/orm/functions/length.py b/ingestion/src/metadata/profiler/orm/functions/length.py index fec0da3922d..fb40c28bf4b 100644 --- a/ingestion/src/metadata/profiler/orm/functions/length.py +++ b/ingestion/src/metadata/profiler/orm/functions/length.py @@ -47,6 +47,7 @@ def _(element, compiler, **kw): @compiles(LenFn, Dialects.Oracle) @compiles(LenFn, Dialects.IbmDbSa) @compiles(LenFn, Dialects.Db2) +@compiles(LenFn, Dialects.Hana) def _(element, compiler, **kw): return "LENGTH(%s)" % compiler.process(element.clauses, **kw) diff --git a/ingestion/src/metadata/profiler/orm/functions/modulo.py b/ingestion/src/metadata/profiler/orm/functions/modulo.py index c5aa3667e73..dcf57f84eb1 100644 --- a/ingestion/src/metadata/profiler/orm/functions/modulo.py +++ b/ingestion/src/metadata/profiler/orm/functions/modulo.py @@ -59,6 +59,7 @@ def _(element, compiler, **kw): @compiles(ModuloFn, Dialects.IbmDbSa) @compiles(ModuloFn, Dialects.Db2) @compiles(ModuloFn, Dialects.Vertica) +@compiles(ModuloFn, Dialects.Hana) def _(element, compiler, **kw): """Modulo function for specific dialect""" value, base = validate_and_compile(element, compiler, **kw) diff --git a/ingestion/src/metadata/profiler/orm/functions/random_num.py b/ingestion/src/metadata/profiler/orm/functions/random_num.py index 084fde64f40..4dc9db61623 100644 --- a/ingestion/src/metadata/profiler/orm/functions/random_num.py +++ b/ingestion/src/metadata/profiler/orm/functions/random_num.py @@ -46,6 +46,7 @@ def _(*_, **__): @compiles(RandomNumFn, Dialects.MySQL) @compiles(RandomNumFn, Dialects.IbmDbSa) @compiles(RandomNumFn, Dialects.Db2) +@compiles(RandomNumFn, Dialects.Hana) def _(*_, **__): return "ABS(RAND()) * 100" diff --git a/ingestion/src/metadata/profiler/orm/registry.py b/ingestion/src/metadata/profiler/orm/registry.py index eee00e29e84..a649231fe89 100644 --- a/ingestion/src/metadata/profiler/orm/registry.py +++ b/ingestion/src/metadata/profiler/orm/registry.py @@ -54,6 +54,7 @@ class Dialects(Enum): Druid = "druid" DynamoDB = "dynamoDB" Glue = "glue" + Hana = "hana" Hive = b"hive" # Hive requires bytes Impala = "impala" IbmDbSa = "ibm_db_sa" diff --git a/openmetadata-docs/content/v1.0.0/deployment/airflow/index.md b/openmetadata-docs/content/v1.0.0/deployment/airflow/index.md index ee82739ad8d..6a204517e4f 100644 --- a/openmetadata-docs/content/v1.0.0/deployment/airflow/index.md +++ b/openmetadata-docs/content/v1.0.0/deployment/airflow/index.md @@ -124,17 +124,27 @@ auth_backends = airflow.api.auth.backend.basic_auth After installing the Airflow APIs, you will need to update your OpenMetadata Server. The OpenMetadata server takes all its configurations from a YAML file. You can find them in our [repo](https://github.com/open-metadata/OpenMetadata/tree/main/conf). In -`openmetadata.yaml`, update the `airflowConfiguration` section accordingly. +`openmetadata.yaml`, update the `pipelineServiceClientConfiguration` section accordingly. ```yaml # For Bare Metal Installations [...] -airflowConfiguration: - apiEndpoint: ${AIRFLOW_HOST:-http://localhost:8080} - username: ${AIRFLOW_USERNAME:-admin} - password: ${AIRFLOW_PASSWORD:-admin} - metadataApiEndpoint: ${SERVER_HOST_API_URL:-http://localhost:8585/api} +pipelineServiceClientConfiguration: + className: ${PIPELINE_SERVICE_CLIENT_CLASS_NAME:-"org.openmetadata.service.clients.pipeline.airflow.AirflowRESTClient"} + apiEndpoint: ${PIPELINE_SERVICE_CLIENT_ENDPOINT:-http://localhost:8080} + metadataApiEndpoint: ${SERVER_HOST_API_URL:-http://localhost:8585/api} + hostIp: ${PIPELINE_SERVICE_CLIENT_HOST_IP:-""} + verifySSL: ${PIPELINE_SERVICE_CLIENT_VERIFY_SSL:-"no-ssl"} # Possible values are "no-ssl", "ignore", "validate" + sslConfig: + validate: + certificatePath: ${PIPELINE_SERVICE_CLIENT_SSL_CERT_PATH:-""} # Local path for the Pipeline Service Client + + # Default required parameters for Airflow as Pipeline Service Client + parameters: + username: ${AIRFLOW_USERNAME:-admin} + password: ${AIRFLOW_PASSWORD:-admin} + timeout: ${AIRFLOW_TIMEOUT:-10} [...] ``` @@ -142,7 +152,7 @@ airflowConfiguration: If using Docker, make sure that you are passing the correct environment variables: ```env -AIRFLOW_HOST: ${AIRFLOW_HOST:-http://ingestion:8080} +PIPELINE_SERVICE_CLIENT_ENDPOINT: ${PIPELINE_SERVICE_CLIENT_ENDPOINT:-http://ingestion:8080} SERVER_HOST_API_URL: ${SERVER_HOST_API_URL:-http://openmetadata-server:8585/api} ``` @@ -169,11 +179,11 @@ What we need to verify here is that the OpenMetadata server can reach the Airflo hosting your OpenMetadata server and running a query against the `/health` endpoint. For example: ```bash -$ curl -XGET ${AIRFLOW_HOST}/api/v1/openmetadata/health +$ curl -XGET ${PIPELINE_SERVICE_CLIENT_ENDPOINT}/api/v1/openmetadata/health {"status": "healthy", "version": "x.y.z"} ``` -It is important to do this validation passing the command as is (i.e., `curl -XGET ${AIRFLOW_HOST}/api/v1/openmetadata/health`) +It is important to do this validation passing the command as is (i.e., `curl -XGET ${PIPELINE_SERVICE_CLIENT_ENDPOINT}/api/v1/openmetadata/health`) and allowing the environment to do the substitution for you. That's the only way we can be sure that the setup is correct. @@ -193,7 +203,7 @@ Note that in this example we are assuming: A generic call would look like: ```bash -curl -XPOST /api/v1/openmetadata/enable --data-raw '{"dag_id": ""}' -u ":" --header 'Content-Type: application/json' +curl -XPOST /api/v1/openmetadata/enable --data-raw '{"dag_id": ""}' -u ":" --header 'Content-Type: application/json' ``` Please update it accordingly. @@ -239,7 +249,7 @@ Validate the installation, making sure that from the OpenMetadata server you can call to `/health` gives us the proper response: ```bash -$ curl -XGET ${AIRFLOW_HOST}/api/v1/openmetadata/health +$ curl -XGET ${PIPELINE_SERVICE_CLIENT_ENDPOINT}/api/v1/openmetadata/health {"status": "healthy", "version": "x.y.z"} ``` diff --git a/openmetadata-docs/content/v1.1.0-snapshot/connectors/database/mysql/index.md b/openmetadata-docs/content/v1.1.0-snapshot/connectors/database/mysql/index.md index 420864c26da..6a97bbb92f4 100644 --- a/openmetadata-docs/content/v1.1.0-snapshot/connectors/database/mysql/index.md +++ b/openmetadata-docs/content/v1.1.0-snapshot/connectors/database/mysql/index.md @@ -44,12 +44,12 @@ the following docs to connect using Airflow SDK or with the CLI. {% tile title="Ingest with Airflow" description="Configure the ingestion using Airflow SDK" - link="/connectors/database/athena/airflow" + link="/connectors/database/mysql/airflow" / %} {% tile title="Ingest with the CLI" description="Run a one-time ingestion using the metadata CLI" - link="/connectors/database/athena/cli" + link="/connectors/database/mysql/cli" / %} {% /tilesContainer %} diff --git a/openmetadata-docs/content/v1.1.0-snapshot/connectors/database/sap-hana/airflow.md b/openmetadata-docs/content/v1.1.0-snapshot/connectors/database/sap-hana/airflow.md new file mode 100644 index 00000000000..f23cbf4d1fd --- /dev/null +++ b/openmetadata-docs/content/v1.1.0-snapshot/connectors/database/sap-hana/airflow.md @@ -0,0 +1,774 @@ +--- +title: Run SAP Hana Connector using Airflow SDK +slug: /connectors/database/sap-hana/airflow +--- + +# Run SAP Hana using the Airflow SDK + +{% multiTablesWrapper %} + +| Feature | Status | +| :----------------- |:-----------------------------| +| Stage | BETA | +| Metadata | {% icon iconName="check" /%} | +| Query Usage | {% icon iconName="cross" /%} | +| Data Profiler | {% icon iconName="check" /%} | +| Data Quality | {% icon iconName="check" /%} | +| Lineage | Partially via Views | +| DBT | {% icon iconName="cross" /%} | + +| Feature | Status | +| :----------- | :--------------------------- | +| Lineage | Partially via Views | +| Table-level | {% icon iconName="check" /%} | +| Column-level | {% icon iconName="check" /%} | + +{% /multiTablesWrapper %} + +In this section, we provide guides and references to use the SAP Hana connector. + +Configure and schedule SAP Hana metadata and profiler workflows from the OpenMetadata UI: + +- [Requirements](#requirements) +- [Metadata Ingestion](#metadata-ingestion) +- [Data Profiler](#data-profiler) +- [dbt Integration](#dbt-integration) + +## Requirements + +{%inlineCallout icon="description" bold="OpenMetadata 1.1 or later" href="/deployment"%} +To deploy OpenMetadata, check the Deployment guides. +{%/inlineCallout%} + +To run the Ingestion via the UI you'll need to use the OpenMetadata Ingestion Container, which comes shipped with +custom Airflow plugins to handle the workflow deployment. + +{% note %} +The connector is compatible with HANA or HANA express versions since HANA SPS 2. +{% /note %} + +### Python Requirements + +To run the SAP Hana ingestion, you will need to install: + +```bash +pip3 install "openmetadata-ingestion[sap-hana]" +``` + +## Metadata Ingestion + +All connectors are defined as JSON Schemas. +[Here](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-spec/src/main/resources/json/schema/entity/services/connections/database/sapHanaConnection.json) +you can find the structure to create a connection to SAP Hana. + +In order to create and run a Metadata Ingestion workflow, we will follow +the steps to create a YAML configuration able to connect to the source, +process the Entities if needed, and reach the OpenMetadata server. + +The workflow is modeled around the following +[JSON Schema](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-spec/src/main/resources/json/schema/metadataIngestion/workflow.json) + +### 1. Define the YAML Config + +This is a sample config for SAP Hana: + +{% codePreview %} + +{% codeInfoContainer %} + +#### Source Configuration - Service Connection + +We support two possible connection types: +1. **SQL Connection**, where you will the username, password and host. +2. **HDB User Store** [connection](https://help.sap.com/docs/SAP_HANA_PLATFORM/b3ee5778bc2e4a089d3299b82ec762a7/dd95ac9dbb571014a7d7f0234d762fdb.html?version=2.0.05&locale=en-US). + Note that the HDB Store will need to be locally available to the instance running the ingestion process. + If you are unsure about this setting, you can run the ingestion process passing the usual SQL connection details. + +##### SQL Connection + +If using the SQL Connection, inform: + +{% codeInfo srNumber=1 %} + +**hostPort**: Host and port of the SAP Hana service. This should be specified as a string in the format `hostname:port`. E.g., `localhost:39041`, `host.docker.internal:39041`. + +{% /codeInfo %} + +{% codeInfo srNumber=2 %} + +**username**: Specify the User to connect to SAP Hana. It should have enough privileges to read all the metadata. + +{% /codeInfo %} + +{% codeInfo srNumber=3 %} + +**password**: Password to connect to SAP Hana. + +{% /codeInfo %} + +{% codeInfo srNumber=4 %} + +**database**: Optional parameter to connect to a specific database. + +{% /codeInfo %} + +{% codeInfo srNumber=5 %} + +**databaseSchema**: databaseSchema of the data source. This is an optional parameter, if you would like to restrict the metadata reading to a single schema. When left blank, OpenMetadata Ingestion attempts to scan all the schemas. + +{% /codeInfo %} + +##### HDB User Store + +If you have a User Store configured, then: + +{% codeInfo srNumber=6 %} + +**userKey**: HDB Store User Key generated from the command `hdbuserstore SET `. + +{% /codeInfo %} + +#### Source Configuration - Source Config + +{% codeInfo srNumber=9 %} + +The `sourceConfig` is defined [here](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-spec/src/main/resources/json/schema/metadataIngestion/databaseServiceMetadataPipeline.json): + +**markDeletedTables**: To flag tables as soft-deleted if they are not present anymore in the source system. + +**includeTables**: true or false, to ingest table data. Default is true. + +**includeViews**: true or false, to ingest views definitions. + +**databaseFilterPattern**, **schemaFilterPattern**, **tableFilternPattern**: Note that the filter supports regex as include or exclude. You can find examples [here](/connectors/ingestion/workflows/metadata/filter-patterns/database) + +{% /codeInfo %} + + +#### Sink Configuration + +{% codeInfo srNumber=10 %} + +To send the metadata to OpenMetadata, it needs to be specified as `type: metadata-rest`. + +{% /codeInfo %} + +#### Workflow Configuration + +{% codeInfo srNumber=11 %} + +The main property here is the `openMetadataServerConfig`, where you can define the host and security provider of your OpenMetadata installation. + +For a simple, local installation using our docker containers, this looks like: + +{% /codeInfo %} + +#### Advanced Configuration + +{% codeInfo srNumber=7 %} + +**Connection Options (Optional)**: Enter the details for any additional connection options that can be sent to Athena during the connection. These details must be added as Key-Value pairs. + +{% /codeInfo %} + +{% codeInfo srNumber=8 %} + +**Connection Arguments (Optional)**: Enter the details for any additional connection arguments such as security or protocol configs that can be sent to Athena during the connection. These details must be added as Key-Value pairs. + +- In case you are using Single-Sign-On (SSO) for authentication, add the `authenticator` details in the Connection Arguments as a Key-Value pair as follows: `"authenticator" : "sso_login_url"` +- In case you authenticate with SSO using an external browser popup, then add the `authenticator` details in the Connection Arguments as a Key-Value pair as follows: `"authenticator" : "externalbrowser"` + +{% /codeInfo %} + +{% /codeInfoContainer %} + +{% codeBlock fileName="filename.yaml" %} + +```yaml +source: + type: sapHana + serviceName: + serviceConnection: + config: + type: SapHana + connection: +``` +```yaml {% srNumber=1 %} + ## Parameters for the SQL Connection + # hostPort: +``` +```yaml {% srNumber=2 %} + # username: +``` +```yaml {% srNumber=3 %} + # password: +``` +```yaml {% srNumber=4 %} + # database: +``` +```yaml {% srNumber=5 %} + # databaseSchema: +``` +```yaml {% srNumber=6 %} + ## Parameter for the HDB User Store + # userKey: +``` +```yaml {% srNumber=7 %} + # connectionOptions: + # key: value +``` +```yaml {% srNumber=8 %} + # connectionArguments: + # key: value +``` +```yaml {% srNumber=9 %} + sourceConfig: + config: + type: DatabaseMetadata + markDeletedTables: true + includeTables: true + includeViews: true + # includeTags: true + # databaseFilterPattern: + # includes: + # - database1 + # - database2 + # excludes: + # - database3 + # - database4 + # schemaFilterPattern: + # includes: + # - schema1 + # - schema2 + # excludes: + # - schema3 + # - schema4 + # tableFilterPattern: + # includes: + # - table1 + # - table2 + # excludes: + # - table3 + # - table4 +``` + +```yaml {% srNumber=10 %} +sink: + type: metadata-rest + config: {} +``` + +```yaml {% srNumber=11 %} +workflowConfig: + # loggerLevel: DEBUG # DEBUG, INFO, WARN or ERROR + openMetadataServerConfig: + hostPort: "" + authProvider: "" +``` + +{% /codeBlock %} + +{% /codePreview %} + + +### Workflow Configs for Security Provider + +We support different security providers. You can find their definitions [here](https://github.com/open-metadata/OpenMetadata/tree/main/openmetadata-spec/src/main/resources/json/schema/security/client). + +## Openmetadata JWT Auth + +- JWT tokens will allow your clients to authenticate against the OpenMetadata server. To enable JWT Tokens, you will get more details [here](/deployment/security/enable-jwt-tokens). + +```yaml +workflowConfig: + openMetadataServerConfig: + hostPort: "http://localhost:8585/api" + authProvider: openmetadata + securityConfig: + jwtToken: "{bot_jwt_token}" +``` + +- You can refer to the JWT Troubleshooting section [link](/deployment/security/jwt-troubleshooting) for any issues in your JWT configuration. If you need information on configuring the ingestion with other security providers in your bots, you can follow this doc [link](/deployment/security/workflow-config-auth). + + +### 2. Prepare the Ingestion DAG + +Create a Python file in your Airflow DAGs directory with the following contents: + +{% codePreview %} + +{% codeInfoContainer %} + + +{% codeInfo srNumber=10 %} + +#### Import necessary modules + +The `Workflow` class that is being imported is a part of a metadata ingestion framework, which defines a process of getting data from different sources and ingesting it into a central metadata repository. + +Here we are also importing all the basic requirements to parse YAMLs, handle dates and build our DAG. + +{% /codeInfo %} + +{% codeInfo srNumber=11 %} + +**Default arguments for all tasks in the Airflow DAG.** + +- Default arguments dictionary contains default arguments for tasks in the DAG, including the owner's name, email address, number of retries, retry delay, and execution timeout. + +{% /codeInfo %} + +{% codeInfo srNumber=12 %} + +- **config**: Specifies config for the metadata ingestion as we prepare above. + +{% /codeInfo %} + +{% codeInfo srNumber=13 %} + +- **metadata_ingestion_workflow()**: This code defines a function `metadata_ingestion_workflow()` that loads a YAML configuration, creates a `Workflow` object, executes the workflow, checks its status, prints the status to the console, and stops the workflow. + +{% /codeInfo %} + +{% codeInfo srNumber=14 %} + +- **DAG**: creates a DAG using the Airflow framework, and tune the DAG configurations to whatever fits with your requirements +- For more Airflow DAGs creation details visit [here](https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/dags.html#declaring-a-dag). + +{% /codeInfo %} + +Note that from connector to connector, this recipe will always be the same. +By updating the `YAML configuration`, you will be able to extract metadata from different sources. + +{% /codeInfoContainer %} + +{% codeBlock fileName="filename.py" %} + +```python {% srNumber=10 %} +import pathlib +import yaml +from datetime import timedelta +from airflow import DAG +from metadata.config.common import load_config_file +from metadata.ingestion.api.workflow import Workflow +from airflow.utils.dates import days_ago + +try: + from airflow.operators.python import PythonOperator +except ModuleNotFoundError: + from airflow.operators.python_operator import PythonOperator + + +``` + +```python {% srNumber=11 %} +default_args = { + "owner": "user_name", + "email": ["username@org.com"], + "email_on_failure": False, + "retries": 3, + "retry_delay": timedelta(minutes=5), + "execution_timeout": timedelta(minutes=60) +} + + +``` + +```python {% srNumber=12 %} +config = """ + +""" + + +``` + +```python {% srNumber=13 %} +def metadata_ingestion_workflow(): + workflow_config = yaml.safe_load(config) + workflow = Workflow.create(workflow_config) + workflow.execute() + workflow.raise_from_status() + workflow.print_status() + workflow.stop() + + +``` + +```python {% srNumber=14 %} +with DAG( + "sample_data", + default_args=default_args, + description="An example DAG which runs a OpenMetadata ingestion workflow", + start_date=days_ago(1), + is_paused_upon_creation=False, + schedule_interval='*/5 * * * *', + catchup=False, +) as dag: + ingest_task = PythonOperator( + task_id="ingest_using_recipe", + python_callable=metadata_ingestion_workflow, + ) + + +``` + +{% /codeBlock %} + +{% /codePreview %} + + +## Data Profiler + +The Data Profiler workflow will be using the `orm-profiler` processor. + +After running a Metadata Ingestion workflow, we can run Data Profiler workflow. +While the `serviceName` will be the same to that was used in Metadata Ingestion, so the ingestion bot can get the `serviceConnection` details from the server. + + +### 1. Define the YAML Config + +This is a sample config for the profiler: + +{% codePreview %} + +{% codeInfoContainer %} + +{% codeInfo srNumber=15 %} +#### Source Configuration - Source Config + +You can find all the definitions and types for the `sourceConfig` [here](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-spec/src/main/resources/json/schema/metadataIngestion/databaseServiceProfilerPipeline.json). + +**generateSampleData**: Option to turn on/off generating sample data. + +{% /codeInfo %} + +{% codeInfo srNumber=16 %} + +**profileSample**: Percentage of data or no. of rows we want to execute the profiler and tests on. + +{% /codeInfo %} + +{% codeInfo srNumber=17 %} + +**threadCount**: Number of threads to use during metric computations. + +{% /codeInfo %} + +{% codeInfo srNumber=18 %} + +**processPiiSensitive**: Optional configuration to automatically tag columns that might contain sensitive information. + +{% /codeInfo %} + +{% codeInfo srNumber=19 %} + +**confidence**: Set the Confidence value for which you want the column to be marked + +{% /codeInfo %} + + +{% codeInfo srNumber=20 %} + +**timeoutSeconds**: Profiler Timeout in Seconds + +{% /codeInfo %} + +{% codeInfo srNumber=21 %} + +**databaseFilterPattern**: Regex to only fetch databases that matches the pattern. + +{% /codeInfo %} + +{% codeInfo srNumber=22 %} + +**schemaFilterPattern**: Regex to only fetch tables or databases that matches the pattern. + +{% /codeInfo %} + +{% codeInfo srNumber=23 %} + +**tableFilterPattern**: Regex to only fetch tables or databases that matches the pattern. + +{% /codeInfo %} + +{% codeInfo srNumber=24 %} + +#### Processor Configuration + +Choose the `orm-profiler`. Its config can also be updated to define tests from the YAML itself instead of the UI: + +**tableConfig**: `tableConfig` allows you to set up some configuration at the table level. +{% /codeInfo %} + + +{% codeInfo srNumber=25 %} + +#### Sink Configuration + +To send the metadata to OpenMetadata, it needs to be specified as `type: metadata-rest`. +{% /codeInfo %} + + +{% codeInfo srNumber=26 %} + +#### Workflow Configuration + +The main property here is the `openMetadataServerConfig`, where you can define the host and security provider of your OpenMetadata installation. + +For a simple, local installation using our docker containers, this looks like: + +{% /codeInfo %} + +{% /codeInfoContainer %} + +{% codeBlock fileName="filename.yaml" %} + + +```yaml +source: + type: sapHana + serviceName: + sourceConfig: + config: + type: Profiler +``` + +```yaml {% srNumber=15 %} + generateSampleData: true +``` +```yaml {% srNumber=16 %} + # profileSample: 85 +``` +```yaml {% srNumber=17 %} + # threadCount: 5 +``` +```yaml {% srNumber=18 %} + processPiiSensitive: false +``` +```yaml {% srNumber=19 %} + # confidence: 80 +``` +```yaml {% srNumber=20 %} + # timeoutSeconds: 43200 +``` +```yaml {% srNumber=21 %} + # databaseFilterPattern: + # includes: + # - database1 + # - database2 + # excludes: + # - database3 + # - database4 +``` +```yaml {% srNumber=22 %} + # schemaFilterPattern: + # includes: + # - schema1 + # - schema2 + # excludes: + # - schema3 + # - schema4 +``` +```yaml {% srNumber=23 %} + # tableFilterPattern: + # includes: + # - table1 + # - table2 + # excludes: + # - table3 + # - table4 +``` + +```yaml {% srNumber=24 %} +processor: + type: orm-profiler + config: {} # Remove braces if adding properties + # tableConfig: + # - fullyQualifiedName: + # profileSample: # default + + # profileSample: # default will be 100 if omitted + # profileQuery: + # columnConfig: + # excludeColumns: + # - + # includeColumns: + # - columnName: + # - metrics: + # - MEAN + # - MEDIAN + # - ... + # partitionConfig: + # enablePartitioning: + # partitionColumnName: + # partitionInterval: + # partitionIntervalUnit: + +``` + +```yaml {% srNumber=25 %} +sink: + type: metadata-rest + config: {} +``` + +```yaml {% srNumber=26 %} +workflowConfig: + # loggerLevel: DEBUG # DEBUG, INFO, WARN or ERROR + openMetadataServerConfig: + hostPort: + authProvider: +``` + +{% /codeBlock %} + +{% /codePreview %} + +- You can learn more about how to configure and run the Profiler Workflow to extract Profiler data and execute the Data Quality from [here](/connectors/ingestion/workflows/profiler) + + + +### 2. Prepare the Profiler DAG + +Here, we follow a similar approach as with the metadata and usage pipelines, although we will use a different Workflow class: + + + + +{% codePreview %} + +{% codeInfoContainer %} + +{% codeInfo srNumber=27 %} + +#### Import necessary modules + +The `ProfilerWorkflow` class that is being imported is a part of a metadata orm_profiler framework, which defines a process of extracting Profiler data. + +Here we are also importing all the basic requirements to parse YAMLs, handle dates and build our DAG. + +{% /codeInfo %} + +{% codeInfo srNumber=28 %} + +**Default arguments for all tasks in the Airflow DAG.** +- Default arguments dictionary contains default arguments for tasks in the DAG, including the owner's name, email address, number of retries, retry delay, and execution timeout. + +{% /codeInfo %} + + +{% codeInfo srNumber=29 %} + +- **config**: Specifies config for the profiler as we prepare above. + +{% /codeInfo %} + +{% codeInfo srNumber=30 %} + +- **metadata_ingestion_workflow()**: This code defines a function `metadata_ingestion_workflow()` that loads a YAML configuration, creates a `ProfilerWorkflow` object, executes the workflow, checks its status, prints the status to the console, and stops the workflow. + +{% /codeInfo %} + +{% codeInfo srNumber=31 %} + +- **DAG**: creates a DAG using the Airflow framework, and tune the DAG configurations to whatever fits with your requirements +- For more Airflow DAGs creation details visit [here](https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/dags.html#declaring-a-dag). + +{% /codeInfo %} + +{% /codeInfoContainer %} + +{% codeBlock fileName="filename.py" %} + +```python {% srNumber=27 %} +import yaml +from datetime import timedelta +from airflow import DAG +from metadata.profiler.api.workflow import ProfilerWorkflow + +try: + from airflow.operators.python import PythonOperator +except ModuleNotFoundError: + from airflow.operators.python_operator import PythonOperator + +from airflow.utils.dates import days_ago + + +``` +```python {% srNumber=28 %} +default_args = { + "owner": "user_name", + "email_on_failure": False, + "retries": 3, + "retry_delay": timedelta(seconds=10), + "execution_timeout": timedelta(minutes=60), +} + + +``` + +```python {% srNumber=29 %} +config = """ + +""" + + +``` + +```python {% srNumber=30 %} +def metadata_ingestion_workflow(): + workflow_config = yaml.safe_load(config) + workflow = ProfilerWorkflow.create(workflow_config) + workflow.execute() + workflow.raise_from_status() + workflow.print_status() + workflow.stop() + + +``` + +```python {% srNumber=31 %} +with DAG( + "profiler_example", + default_args=default_args, + description="An example DAG which runs a OpenMetadata ingestion workflow", + start_date=days_ago(1), + is_paused_upon_creation=False, + catchup=False, +) as dag: + ingest_task = PythonOperator( + task_id="profile_and_test_using_recipe", + python_callable=metadata_ingestion_workflow, + ) + + +``` + +{% /codeBlock %} + +{% /codePreview %} + + +## dbt Integration + +{% tilesContainer %} + +{% tile + icon="mediation" + title="dbt Integration" + description="Learn more about how to ingest dbt models' definitions and their lineage." + link="/connectors/ingestion/workflows/dbt" /%} + +{% /tilesContainer %} + +## Related + +{% tilesContainer %} + +{% tile + title="Ingest with the CLI" + description="Run a one-time ingestion using the metadata CLI" + link="/connectors/database/sap-hana/cli" + / %} + +{% /tilesContainer %} diff --git a/openmetadata-docs/content/v1.1.0-snapshot/connectors/database/sap-hana/cli.md b/openmetadata-docs/content/v1.1.0-snapshot/connectors/database/sap-hana/cli.md new file mode 100644 index 00000000000..a5c5f605d96 --- /dev/null +++ b/openmetadata-docs/content/v1.1.0-snapshot/connectors/database/sap-hana/cli.md @@ -0,0 +1,546 @@ +--- +title: Run SAP Hana Connector using the CLI +slug: /connectors/database/sap-hana/cli +--- + +# Run SAP Hana using the metadata CLI + +{% multiTablesWrapper %} + +| Feature | Status | +| :----------------- |:-----------------------------| +| Stage | BETA | +| Metadata | {% icon iconName="check" /%} | +| Query Usage | {% icon iconName="cross" /%} | +| Data Profiler | {% icon iconName="check" /%} | +| Data Quality | {% icon iconName="check" /%} | +| Lineage | Partially via Views | +| DBT | {% icon iconName="cross" /%} | + +| Feature | Status | +| :----------- | :--------------------------- | +| Lineage | Partially via Views | +| Table-level | {% icon iconName="check" /%} | +| Column-level | {% icon iconName="check" /%} | + +{% /multiTablesWrapper %} + +In this section, we provide guides and references to use the SAP Hana connector. + +Configure and schedule SAP Hana metadata and profiler workflows from the OpenMetadata UI: + +- [Requirements](#requirements) +- [Metadata Ingestion](#metadata-ingestion) +- [Data Profiler](#data-profiler) +- [dbt Integration](#dbt-integration) + +## Requirements + +{%inlineCallout icon="description" bold="OpenMetadata 1.1 or later" href="/deployment"%} +To deploy OpenMetadata, check the Deployment guides. +{%/inlineCallout%} + +To run the Ingestion via the UI you'll need to use the OpenMetadata Ingestion Container, which comes shipped with +custom Airflow plugins to handle the workflow deployment. + +{% note %} +The connector is compatible with HANA or HANA express versions since HANA SPS 2. +{% /note %} + +### Python Requirements + +To run the SAP Hana ingestion, you will need to install: + +```bash +pip3 install "openmetadata-ingestion[sap-hana]" +``` + +## Metadata Ingestion + +All connectors are defined as JSON Schemas. +[Here](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-spec/src/main/resources/json/schema/entity/services/connections/database/sapHanaConnection.json) +you can find the structure to create a connection to SAP Hana. + +In order to create and run a Metadata Ingestion workflow, we will follow +the steps to create a YAML configuration able to connect to the source, +process the Entities if needed, and reach the OpenMetadata server. + +The workflow is modeled around the following +[JSON Schema](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-spec/src/main/resources/json/schema/metadataIngestion/workflow.json) + +### 1. Define the YAML Config + +This is a sample config for SAP Hana: + +{% codePreview %} + +{% codeInfoContainer %} + +#### Source Configuration - Service Connection + +We support two possible connection types: +1. **SQL Connection**, where you will the username, password and host. +2. **HDB User Store** [connection](https://help.sap.com/docs/SAP_HANA_PLATFORM/b3ee5778bc2e4a089d3299b82ec762a7/dd95ac9dbb571014a7d7f0234d762fdb.html?version=2.0.05&locale=en-US). + Note that the HDB Store will need to be locally available to the instance running the ingestion process. + If you are unsure about this setting, you can run the ingestion process passing the usual SQL connection details. + +##### SQL Connection + +If using the SQL Connection, inform: + +{% codeInfo srNumber=1 %} + +**hostPort**: Host and port of the SAP Hana service. This should be specified as a string in the format `hostname:port`. E.g., `localhost:39041`, `host.docker.internal:39041`. + +{% /codeInfo %} + +{% codeInfo srNumber=2 %} + +**username**: Specify the User to connect to SAP Hana. It should have enough privileges to read all the metadata. + +{% /codeInfo %} + +{% codeInfo srNumber=3 %} + +**password**: Password to connect to SAP Hana. + +{% /codeInfo %} + +{% codeInfo srNumber=4 %} + +**database**: Optional parameter to connect to a specific database. + +{% /codeInfo %} + +{% codeInfo srNumber=5 %} + +**databaseSchema**: databaseSchema of the data source. This is an optional parameter, if you would like to restrict the metadata reading to a single schema. When left blank, OpenMetadata Ingestion attempts to scan all the schemas. + +{% /codeInfo %} + +##### HDB User Store + +If you have a User Store configured, then: + +{% codeInfo srNumber=6 %} + +**userKey**: HDB Store User Key generated from the command `hdbuserstore SET `. + +{% /codeInfo %} + +#### Source Configuration - Source Config + +{% codeInfo srNumber=9 %} + +The `sourceConfig` is defined [here](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-spec/src/main/resources/json/schema/metadataIngestion/databaseServiceMetadataPipeline.json): + +**markDeletedTables**: To flag tables as soft-deleted if they are not present anymore in the source system. + +**includeTables**: true or false, to ingest table data. Default is true. + +**includeViews**: true or false, to ingest views definitions. + +**databaseFilterPattern**, **schemaFilterPattern**, **tableFilternPattern**: Note that the filter supports regex as include or exclude. You can find examples [here](/connectors/ingestion/workflows/metadata/filter-patterns/database) + +{% /codeInfo %} + + +#### Sink Configuration + +{% codeInfo srNumber=10 %} + +To send the metadata to OpenMetadata, it needs to be specified as `type: metadata-rest`. + +{% /codeInfo %} + +#### Workflow Configuration + +{% codeInfo srNumber=11 %} + +The main property here is the `openMetadataServerConfig`, where you can define the host and security provider of your OpenMetadata installation. + +For a simple, local installation using our docker containers, this looks like: + +{% /codeInfo %} + +#### Advanced Configuration + +{% codeInfo srNumber=7 %} + +**Connection Options (Optional)**: Enter the details for any additional connection options that can be sent to Athena during the connection. These details must be added as Key-Value pairs. + +{% /codeInfo %} + +{% codeInfo srNumber=8 %} + +**Connection Arguments (Optional)**: Enter the details for any additional connection arguments such as security or protocol configs that can be sent to Athena during the connection. These details must be added as Key-Value pairs. + +- In case you are using Single-Sign-On (SSO) for authentication, add the `authenticator` details in the Connection Arguments as a Key-Value pair as follows: `"authenticator" : "sso_login_url"` +- In case you authenticate with SSO using an external browser popup, then add the `authenticator` details in the Connection Arguments as a Key-Value pair as follows: `"authenticator" : "externalbrowser"` + +{% /codeInfo %} + +{% /codeInfoContainer %} + +{% codeBlock fileName="filename.yaml" %} + +```yaml +source: + type: sapHana + serviceName: + serviceConnection: + config: + type: SapHana + connection: +``` +```yaml {% srNumber=1 %} + ## Parameters for the SQL Connection + # hostPort: +``` +```yaml {% srNumber=2 %} + # username: +``` +```yaml {% srNumber=3 %} + # password: +``` +```yaml {% srNumber=4 %} + # database: +``` +```yaml {% srNumber=5 %} + # databaseSchema: +``` +```yaml {% srNumber=6 %} + ## Parameter for the HDB User Store + # userKey: +``` +```yaml {% srNumber=7 %} + # connectionOptions: + # key: value +``` +```yaml {% srNumber=8 %} + # connectionArguments: + # key: value +``` +```yaml {% srNumber=9 %} + sourceConfig: + config: + type: DatabaseMetadata + markDeletedTables: true + includeTables: true + includeViews: true + # includeTags: true + # databaseFilterPattern: + # includes: + # - database1 + # - database2 + # excludes: + # - database3 + # - database4 + # schemaFilterPattern: + # includes: + # - schema1 + # - schema2 + # excludes: + # - schema3 + # - schema4 + # tableFilterPattern: + # includes: + # - table1 + # - table2 + # excludes: + # - table3 + # - table4 +``` + +```yaml {% srNumber=10 %} +sink: + type: metadata-rest + config: {} +``` + +```yaml {% srNumber=11 %} +workflowConfig: + # loggerLevel: DEBUG # DEBUG, INFO, WARN or ERROR + openMetadataServerConfig: + hostPort: "" + authProvider: "" +``` + +{% /codeBlock %} + +{% /codePreview %} + + +### Workflow Configs for Security Provider + +We support different security providers. You can find their definitions [here](https://github.com/open-metadata/OpenMetadata/tree/main/openmetadata-spec/src/main/resources/json/schema/security/client). + +## Openmetadata JWT Auth + +- JWT tokens will allow your clients to authenticate against the OpenMetadata server. To enable JWT Tokens, you will get more details [here](/deployment/security/enable-jwt-tokens). + +```yaml +workflowConfig: + openMetadataServerConfig: + hostPort: "http://localhost:8585/api" + authProvider: openmetadata + securityConfig: + jwtToken: "{bot_jwt_token}" +``` + +- You can refer to the JWT Troubleshooting section [link](/deployment/security/jwt-troubleshooting) for any issues in your JWT configuration. If you need information on configuring the ingestion with other security providers in your bots, you can follow this doc [link](/deployment/security/workflow-config-auth). + + +### 2. Run with the CLI + +First, we will need to save the YAML file. Afterward, and with all requirements installed, we can run: + +```bash +metadata ingest -c +``` + +Note that from connector to connector, this recipe will always be the same. By updating the YAML configuration, +you will be able to extract metadata from different sources. + +## Data Profiler + +The Data Profiler workflow will be using the `orm-profiler` processor. + +After running a Metadata Ingestion workflow, we can run Data Profiler workflow. +While the `serviceName` will be the same to that was used in Metadata Ingestion, so the ingestion bot can get the `serviceConnection` details from the server. + + +### 1. Define the YAML Config + +This is a sample config for the profiler: + +{% codePreview %} + +{% codeInfoContainer %} + +{% codeInfo srNumber=15 %} +#### Source Configuration - Source Config + +You can find all the definitions and types for the `sourceConfig` [here](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-spec/src/main/resources/json/schema/metadataIngestion/databaseServiceProfilerPipeline.json). + +**generateSampleData**: Option to turn on/off generating sample data. + +{% /codeInfo %} + +{% codeInfo srNumber=16 %} + +**profileSample**: Percentage of data or no. of rows we want to execute the profiler and tests on. + +{% /codeInfo %} + +{% codeInfo srNumber=17 %} + +**threadCount**: Number of threads to use during metric computations. + +{% /codeInfo %} + +{% codeInfo srNumber=18 %} + +**processPiiSensitive**: Optional configuration to automatically tag columns that might contain sensitive information. + +{% /codeInfo %} + +{% codeInfo srNumber=19 %} + +**confidence**: Set the Confidence value for which you want the column to be marked + +{% /codeInfo %} + + +{% codeInfo srNumber=20 %} + +**timeoutSeconds**: Profiler Timeout in Seconds + +{% /codeInfo %} + +{% codeInfo srNumber=21 %} + +**databaseFilterPattern**: Regex to only fetch databases that matches the pattern. + +{% /codeInfo %} + +{% codeInfo srNumber=22 %} + +**schemaFilterPattern**: Regex to only fetch tables or databases that matches the pattern. + +{% /codeInfo %} + +{% codeInfo srNumber=23 %} + +**tableFilterPattern**: Regex to only fetch tables or databases that matches the pattern. + +{% /codeInfo %} + +{% codeInfo srNumber=24 %} + +#### Processor Configuration + +Choose the `orm-profiler`. Its config can also be updated to define tests from the YAML itself instead of the UI: + +**tableConfig**: `tableConfig` allows you to set up some configuration at the table level. +{% /codeInfo %} + + +{% codeInfo srNumber=25 %} + +#### Sink Configuration + +To send the metadata to OpenMetadata, it needs to be specified as `type: metadata-rest`. +{% /codeInfo %} + + +{% codeInfo srNumber=26 %} + +#### Workflow Configuration + +The main property here is the `openMetadataServerConfig`, where you can define the host and security provider of your OpenMetadata installation. + +For a simple, local installation using our docker containers, this looks like: + +{% /codeInfo %} + +{% /codeInfoContainer %} + +{% codeBlock fileName="filename.yaml" %} + + +```yaml +source: + type: sapHana + serviceName: + sourceConfig: + config: + type: Profiler +``` + +```yaml {% srNumber=15 %} + generateSampleData: true +``` +```yaml {% srNumber=16 %} + # profileSample: 85 +``` +```yaml {% srNumber=17 %} + # threadCount: 5 +``` +```yaml {% srNumber=18 %} + processPiiSensitive: false +``` +```yaml {% srNumber=19 %} + # confidence: 80 +``` +```yaml {% srNumber=20 %} + # timeoutSeconds: 43200 +``` +```yaml {% srNumber=21 %} + # databaseFilterPattern: + # includes: + # - database1 + # - database2 + # excludes: + # - database3 + # - database4 +``` +```yaml {% srNumber=22 %} + # schemaFilterPattern: + # includes: + # - schema1 + # - schema2 + # excludes: + # - schema3 + # - schema4 +``` +```yaml {% srNumber=23 %} + # tableFilterPattern: + # includes: + # - table1 + # - table2 + # excludes: + # - table3 + # - table4 +``` + +```yaml {% srNumber=24 %} +processor: + type: orm-profiler + config: {} # Remove braces if adding properties + # tableConfig: + # - fullyQualifiedName:
+ # profileSample: # default + + # profileSample: # default will be 100 if omitted + # profileQuery: + # columnConfig: + # excludeColumns: + # - + # includeColumns: + # - columnName: + # - metrics: + # - MEAN + # - MEDIAN + # - ... + # partitionConfig: + # enablePartitioning: + # partitionColumnName: + # partitionInterval: + # partitionIntervalUnit: + +``` + +```yaml {% srNumber=25 %} +sink: + type: metadata-rest + config: {} +``` + +```yaml {% srNumber=26 %} +workflowConfig: + # loggerLevel: DEBUG # DEBUG, INFO, WARN or ERROR + openMetadataServerConfig: + hostPort: + authProvider: +``` + +{% /codeBlock %} + +{% /codePreview %} + +- You can learn more about how to configure and run the Profiler Workflow to extract Profiler data and execute the Data Quality from [here](/connectors/ingestion/workflows/profiler) + +### 2. Run with the CLI + +After saving the YAML config, we will run the command the same way we did for the metadata ingestion: + +```bash +metadata profile -c +``` + +Note how instead of running `ingest`, we are using the `profile` command to select the Profiler workflow. + +## dbt Integration + +{% tilesContainer %} + +{% tile + icon="mediation" + title="dbt Integration" + description="Learn more about how to ingest dbt models' definitions and their lineage." + link="/connectors/ingestion/workflows/dbt" /%} + +{% /tilesContainer %} + +## Related + +{% tilesContainer %} + +{% tile + title="Ingest with Airflow" + description="Configure the ingestion using Airflow SDK" + link="/connectors/database/sap-hana/airflow" + / %} + +{% /tilesContainer %} diff --git a/openmetadata-docs/content/v1.1.0-snapshot/connectors/database/sap-hana/index.md b/openmetadata-docs/content/v1.1.0-snapshot/connectors/database/sap-hana/index.md new file mode 100644 index 00000000000..e43c3b7b58b --- /dev/null +++ b/openmetadata-docs/content/v1.1.0-snapshot/connectors/database/sap-hana/index.md @@ -0,0 +1,380 @@ +--- +title: SAP Hana +slug: /connectors/database/sap-hana +--- + +# SAP Hana + +{% multiTablesWrapper %} + +| Feature | Status | +| :----------------- |:-----------------------------| +| Stage | BETA | +| Metadata | {% icon iconName="check" /%} | +| Query Usage | {% icon iconName="cross" /%} | +| Data Profiler | {% icon iconName="check" /%} | +| Data Quality | {% icon iconName="check" /%} | +| Lineage | Partially via Views | +| DBT | {% icon iconName="cross" /%} | + +| Feature | Status | +| :----------- | :--------------------------- | +| Lineage | Partially via Views | +| Table-level | {% icon iconName="check" /%} | +| Column-level | {% icon iconName="check" /%} | + +{% /multiTablesWrapper %} + +In this section, we provide guides and references to use the SAP Hana connector. + +Configure and schedule SAP Hana metadata and profiler workflows from the OpenMetadata UI: + +- [Requirements](#requirements) +- [Metadata Ingestion](#metadata-ingestion) +- [Data Profiler](/connectors/ingestion/workflows/profiler) +- [Data Quality](/connectors/ingestion/workflows/data-quality) +- [dbt Integration](/connectors/ingestion/workflows/dbt) + +If you don't want to use the OpenMetadata Ingestion container to configure the workflows via the UI, then you can check +the following docs to connect using Airflow SDK or with the CLI. + +{% tilesContainer %} + +{% tile + title="Ingest with Airflow" + description="Configure the ingestion using Airflow SDK" + link="/connectors/database/sap-hana/airflow" + / %} +{% tile + title="Ingest with the CLI" + description="Run a one-time ingestion using the metadata CLI" + link="/connectors/database/sap-hana/cli" + / %} + +{% /tilesContainer %} + +## Requirements + +{%inlineCallout icon="description" bold="OpenMetadata 1.1 or later" href="/deployment"%} +To deploy OpenMetadata, check the Deployment guides. +{%/inlineCallout%} + +To run the Ingestion via the UI you'll need to use the OpenMetadata Ingestion Container, which comes shipped with +custom Airflow plugins to handle the workflow deployment. + +{% note %} +The connector is compatible with HANA or HANA express versions since HANA SPS 2. +{% /note %} + +### Metadata + +To extract metadata the user used in the connection needs to have access to the `SYS` schema. + +You can create a new user to run the ingestion with: + +```SQL +CREATE USER openmetadata PASSWORD Password123; +``` + +And, if you have password policies forcing users to reset the password, you can disable that policy for this technical user with: + +```SQL +ALTER USER openmetadata DISABLE PASSWORD LIFETIME; +``` + +### Profiler & Data Quality + +Executing the profiler Workflow or data quality tests, will require the user to have `SELECT` permission on the tables/schemas where the profiler/tests will be executed. The user should also be allowed to view information in `tables` for all objects in the database. More information on the profiler workflow setup can be found [here](https://docs.open-metadata.org/connectors/ingestion/workflows/profiler) and data quality tests [here](https://docs.open-metadata.org/connectors/ingestion/workflows/data-quality). + +## Metadata Ingestion + +{% stepsContainer %} + +{% step srNumber=1 %} + +{% stepDescription title="1. Visit the Services Page" %} + +The first step is ingesting the metadata from your sources. To do that create a service connection first. Once a service is created, it can be used to configure +metadata, usage, and profiler workflows. + +To visit the Database Services page, click on `Settings` in the top navigation bar and select 'Databases' from left panel. + +{% /stepDescription %} + +{% stepVisualInfo %} + +{% image +src="/images/v1.0.0/connectors/visit-database-service-page.png" +alt="Visit Services Page" +caption="Find Databases option on left panel of the settings page" /%} + +{% /stepVisualInfo %} + +{% /step %} + +{% step srNumber=2 %} + +{% stepDescription title="2. Create a New Service" %} + +Click on the 'Add New Service' button to start the Service creation. + +{% /stepDescription %} + +{% stepVisualInfo %} + +{% image +src="/images/v1.0.0/connectors/create-database-service.png" +alt="Create a new service" +caption="Add a new Service from the Database Services page" /%} + +{% /stepVisualInfo %} + +{% /step %} + +{% step srNumber=3 %} + +{% stepDescription title="3. Select the Service Type" %} + +Select SAP Hana as the service type and click Next. + +{% /stepDescription %} + +{% stepVisualInfo %} + +{% image + src="/images/v1.1.0/connectors/sap-hana/select-service.png" + alt="Select Service" + caption="Select your service from the list" /%} + +{% /stepVisualInfo %} + +{% /step %} + +{% step srNumber=4 %} + +{% stepDescription title="4. Name and Describe your Service" %} + +Provide a name and description for your service as illustrated below. + +#### Service Name + +OpenMetadata uniquely identifies services by their Service Name. Provide +a name that distinguishes your deployment from other services, including +the other {connector} services that you might be ingesting metadata +from. + +{% /stepDescription %} + +{% stepVisualInfo %} + +{% image + src="/images/v1.1.0/connectors/sap-hana/add-new-service.png" + alt="Add New Service" + caption="Provide a Name and description for your Service" /%} + +{% /stepVisualInfo %} + +{% /step %} + +{% step srNumber=5 %} + +{% stepDescription title="5. Configure the Service Connection" %} + +In this step, we will configure the connection settings required for +this connector. Please follow the instructions below to ensure that +you've configured the connector to read from your SAP Hana service as +desired. + +{% /stepDescription %} + +{% stepVisualInfo %} + +{% image + src="/images/v1.1.0/connectors/sap-hana/service-connection.png" + alt="Configure service connection" + caption="Configure the service connection by filling the form" /%} + +{% /stepVisualInfo %} + +{% /step %} + +{% extraContent parentTagName="stepsContainer" %} + +#### Connection Options + +We support two possible connection types: +1. **SQL Connection**, where you will the username, password and host. +2. **HDB User Store** [connection](https://help.sap.com/docs/SAP_HANA_PLATFORM/b3ee5778bc2e4a089d3299b82ec762a7/dd95ac9dbb571014a7d7f0234d762fdb.html?version=2.0.05&locale=en-US). + Note that the HDB Store will need to be locally available to the instance running the ingestion process. + If you are unsure about this setting, you can run the ingestion process passing the usual SQL connection details. + +##### SQL Connection + +- **Host and Port**: Host and port of the SAP Hana service. This should be specified as a string in the format `hostname:port`. E.g., `localhost:39041`, `host.docker.internal:39041`. +- **Username**: Specify the User to connect to SAP Hana. It should have enough privileges to read all the metadata. +- **Password**: Password to connect to SAP Hana. +- **database**: Optional parameter to connect to a specific database. +- **databaseSchema**: databaseSchema of the data source. This is an optional parameter, if you would like to restrict the metadata reading to a single schema. When left blank, OpenMetadata Ingestion attempts to scan all the schemas. + +##### HDB USer Store + +- **User Key**: HDB Store User Key generated from the command `hdbuserstore SET `. + +- **Connection Options (Optional)**: Enter the details for any additional connection options that can be sent to Athena during the connection. These details must be added as Key-Value pairs. +- **Connection Arguments (Optional)**: Enter the details for any additional connection arguments such as security or protocol configs that can be sent to Athena during the connection. These details must be added as Key-Value pairs. + +{% /extraContent %} + +{% step srNumber=6 %} + +{% stepDescription title="6. Test the Connection" %} + +Once the credentials have been added, click on `Test Connection` and Save +the changes. + +{% /stepDescription %} + +{% stepVisualInfo %} + +{% image + src="/images/v1.0.0/connectors/test-connection.png" + alt="Test Connection" + caption="Test the connection and save the Service" /%} + +{% /stepVisualInfo %} + +{% /step %} + +{% step srNumber=7 %} + +{% stepDescription title="7. Configure Metadata Ingestion" %} + +In this step we will configure the metadata ingestion pipeline, +Please follow the instructions below + +{% /stepDescription %} + +{% stepVisualInfo %} + +{% image +src="/images/v1.0.0/connectors/configure-metadata-ingestion-database.png" +alt="Configure Metadata Ingestion" +caption="Configure Metadata Ingestion Page" /%} + +{% /stepVisualInfo %} + +{% /step %} + +{% extraContent parentTagName="stepsContainer" %} + +#### Metadata Ingestion Options + +- **Name**: This field refers to the name of ingestion pipeline, you can customize the name or use the generated name. +- **Database Filter Pattern (Optional)**: Use to database filter patterns to control whether or not to include database as part of metadata ingestion. + - **Include**: Explicitly include databases by adding a list of comma-separated regular expressions to the Include field. OpenMetadata will include all databases with names matching one or more of the supplied regular expressions. All other databases will be excluded. + - **Exclude**: Explicitly exclude databases by adding a list of comma-separated regular expressions to the Exclude field. OpenMetadata will exclude all databases with names matching one or more of the supplied regular expressions. All other databases will be included. +- **Schema Filter Pattern (Optional)**: Use to schema filter patterns to control whether or not to include schemas as part of metadata ingestion. + - **Include**: Explicitly include schemas by adding a list of comma-separated regular expressions to the Include field. OpenMetadata will include all schemas with names matching one or more of the supplied regular expressions. All other schemas will be excluded. + - **Exclude**: Explicitly exclude schemas by adding a list of comma-separated regular expressions to the Exclude field. OpenMetadata will exclude all schemas with names matching one or more of the supplied regular expressions. All other schemas will be included. +- **Table Filter Pattern (Optional)**: Use to table filter patterns to control whether or not to include tables as part of metadata ingestion. + - **Include**: Explicitly include tables by adding a list of comma-separated regular expressions to the Include field. OpenMetadata will include all tables with names matching one or more of the supplied regular expressions. All other tables will be excluded. + - **Exclude**: Explicitly exclude tables by adding a list of comma-separated regular expressions to the Exclude field. OpenMetadata will exclude all tables with names matching one or more of the supplied regular expressions. All other tables will be included. +- **Include views (toggle)**: Set the Include views toggle to control whether or not to include views as part of metadata ingestion. +- **Include tags (toggle)**: Set the 'Include Tags' toggle to control whether to include tags as part of metadata ingestion. +- **Enable Debug Log (toggle)**: Set the Enable Debug Log toggle to set the default log level to debug, these logs can be viewed later in Airflow. + +- **Mark Deleted Tables (toggle)**: Set the Mark Deleted Tables toggle to flag tables as soft-deleted if they are not present anymore in the source system. +- **Mark Deleted Tables from Filter Only (toggle)**: Set the Mark Deleted Tables from Filter Only toggle to flag tables as soft-deleted if they are not present anymore within the filtered schema or database only. This flag is useful when you have more than one ingestion pipelines. For example if you have a schema + +{% /extraContent %} + +{% step srNumber=8 %} + +{% stepDescription title="8. Schedule the Ingestion and Deploy" %} + +Scheduling can be set up at an hourly, daily, weekly, or manual cadence. The +timezone is in UTC. Select a Start Date to schedule for ingestion. It is +optional to add an End Date. + +Review your configuration settings. If they match what you intended, +click Deploy to create the service and schedule metadata ingestion. + +If something doesn't look right, click the Back button to return to the +appropriate step and change the settings as needed. + +After configuring the workflow, you can click on Deploy to create the +pipeline. + +{% /stepDescription %} + +{% stepVisualInfo %} + +{% image +src="/images/v1.0.0/connectors/schedule.png" +alt="Schedule the Workflow" +caption="Schedule the Ingestion Pipeline and Deploy" /%} + +{% /stepVisualInfo %} + +{% /step %} + +{% step srNumber=9 %} + +{% stepDescription title="9. View the Ingestion Pipeline" %} + +Once the workflow has been successfully deployed, you can view the +Ingestion Pipeline running from the Service Page. + +{% /stepDescription %} + +{% stepVisualInfo %} + +{% image +src="/images/v1.0.0/connectors/view-ingestion-pipeline.png" +alt="View Ingestion Pipeline" +caption="View the Ingestion Pipeline from the Service Page" /%} + +{% /stepVisualInfo %} + +{% /step %} + +{% /stepsContainer %} + +## Troubleshooting + +### Workflow Deployment Error + +If there were any errors during the workflow deployment process, the +Ingestion Pipeline Entity will still be created, but no workflow will be +present in the Ingestion container. + +- You can then edit the Ingestion Pipeline and Deploy it again. + +- From the Connection tab, you can also Edit the Service if needed. + +{% image +src="/images/v1.0.0/connectors/workflow-deployment-error.png" +alt="Workflow Deployment Error" +caption="Edit and Deploy the Ingestion Pipeline" /%} + +## Related + +{% tilesContainer %} + +{% tile + title="Profiler Workflow" + description="Learn more about how to configure the Data Profiler from the UI." + link="/connectors/ingestion/workflows/profiler" /%} + +{% tile + title="Data Quality Workflow" + description="Learn more about how to configure the Data Quality tests from the UI." + link="/connectors/ingestion/workflows/data-quality" /%} + +{% tile + icon="mediation" + title="dbt Integration" + description="Learn more about how to ingest dbt models' definitions and their lineage." + link="/connectors/ingestion/workflows/dbt" /%} + +{% /tilesContainer %} diff --git a/openmetadata-docs/content/v1.1.0-snapshot/deployment/airflow/index.md b/openmetadata-docs/content/v1.1.0-snapshot/deployment/airflow/index.md index ee82739ad8d..d2fd92beddb 100644 --- a/openmetadata-docs/content/v1.1.0-snapshot/deployment/airflow/index.md +++ b/openmetadata-docs/content/v1.1.0-snapshot/deployment/airflow/index.md @@ -10,12 +10,12 @@ This section will show you how to configure your Airflow instance to run the Ope Moreover, we will show the required steps to connect your Airflow instance to the OpenMetadata server so that you can deploy with the OpenMetadata UI directly to your instance. -1. If you do not have an Airflow service up and running on your platform, we provide a custom +1. If you do not have an Airflow service up and running on your platform, we provide a custom [Docker](https://hub.docker.com/r/openmetadata/ingestion) image, which already contains the OpenMetadata ingestion packages and custom [Airflow APIs](https://github.com/open-metadata/openmetadata-airflow-apis) to deploy Workflows from the UI as well. -2. If you already have Airflow up and running and want to use it for the metadata ingestion, you will - need to install the ingestion modules to the host. You can find more information on how to do this +2. If you already have Airflow up and running and want to use it for the metadata ingestion, you will + need to install the ingestion modules to the host. You can find more information on how to do this in the Custom Airflow Installation section. ## Custom Airflow Installation @@ -30,7 +30,7 @@ well. Here we will guide you on the different aspects to consider when configuri There are three different angles here: 1. Installing the ingestion modules directly on the host to enable the [Airflow Lineage Backend](/connectors/pipeline/airflow/lineage-backend). -2. Installing connector modules on the host to run specific workflows. +2. Installing connector modules on the host to run specific workflows. 3. Installing the Airflow APIs to enable the workflow deployment through the UI. Depending on what you wish to use, you might just need some of these installations. Note that the installation @@ -41,7 +41,7 @@ commands shown below need to be run in the Airflow instances. Goals: - Ingest DAGs and Tasks as Pipeline Entities when they run. -- Track DAG and Task status. +- Track DAG and Task status. - Document lineage as code directly on the DAG definition and ingest it when the DAGs run. Get the necessary information to install and extract metadata from the Lineage Backend [here](/connectors/pipeline/airflow/lineage-backend). @@ -124,17 +124,27 @@ auth_backends = airflow.api.auth.backend.basic_auth After installing the Airflow APIs, you will need to update your OpenMetadata Server. The OpenMetadata server takes all its configurations from a YAML file. You can find them in our [repo](https://github.com/open-metadata/OpenMetadata/tree/main/conf). In -`openmetadata.yaml`, update the `airflowConfiguration` section accordingly. +`openmetadata.yaml`, update the `pipelineServiceClientConfiguration` section accordingly. ```yaml # For Bare Metal Installations [...] -airflowConfiguration: - apiEndpoint: ${AIRFLOW_HOST:-http://localhost:8080} - username: ${AIRFLOW_USERNAME:-admin} - password: ${AIRFLOW_PASSWORD:-admin} - metadataApiEndpoint: ${SERVER_HOST_API_URL:-http://localhost:8585/api} +pipelineServiceClientConfiguration: + className: ${PIPELINE_SERVICE_CLIENT_CLASS_NAME:-"org.openmetadata.service.clients.pipeline.airflow.AirflowRESTClient"} + apiEndpoint: ${PIPELINE_SERVICE_CLIENT_ENDPOINT:-http://localhost:8080} + metadataApiEndpoint: ${SERVER_HOST_API_URL:-http://localhost:8585/api} + hostIp: ${PIPELINE_SERVICE_CLIENT_HOST_IP:-""} + verifySSL: ${PIPELINE_SERVICE_CLIENT_VERIFY_SSL:-"no-ssl"} # Possible values are "no-ssl", "ignore", "validate" + sslConfig: + validate: + certificatePath: ${PIPELINE_SERVICE_CLIENT_SSL_CERT_PATH:-""} # Local path for the Pipeline Service Client + + # Default required parameters for Airflow as Pipeline Service Client + parameters: + username: ${AIRFLOW_USERNAME:-admin} + password: ${AIRFLOW_PASSWORD:-admin} + timeout: ${AIRFLOW_TIMEOUT:-10} [...] ``` @@ -142,7 +152,7 @@ airflowConfiguration: If using Docker, make sure that you are passing the correct environment variables: ```env -AIRFLOW_HOST: ${AIRFLOW_HOST:-http://ingestion:8080} +PIPELINE_SERVICE_CLIENT_ENDPOINT: ${PIPELINE_SERVICE_CLIENT_ENDPOINT:-http://ingestion:8080} SERVER_HOST_API_URL: ${SERVER_HOST_API_URL:-http://openmetadata-server:8585/api} ``` @@ -164,16 +174,16 @@ global: #### Validating the installation -What we need to verify here is that the OpenMetadata server can reach the Airflow APIs endpoints +What we need to verify here is that the OpenMetadata server can reach the Airflow APIs endpoints (wherever they live: bare metal, containers, k8s pods...). One way to ensure that is to connect to the deployment hosting your OpenMetadata server and running a query against the `/health` endpoint. For example: ```bash -$ curl -XGET ${AIRFLOW_HOST}/api/v1/openmetadata/health +$ curl -XGET ${PIPELINE_SERVICE_CLIENT_ENDPOINT}/api/v1/openmetadata/health {"status": "healthy", "version": "x.y.z"} ``` -It is important to do this validation passing the command as is (i.e., `curl -XGET ${AIRFLOW_HOST}/api/v1/openmetadata/health`) +It is important to do this validation passing the command as is (i.e., `curl -XGET ${PIPELINE_SERVICE_CLIENT_ENDPOINT}/api/v1/openmetadata/health`) and allowing the environment to do the substitution for you. That's the only way we can be sure that the setup is correct. @@ -193,25 +203,25 @@ Note that in this example we are assuming: A generic call would look like: ```bash -curl -XPOST /api/v1/openmetadata/enable --data-raw '{"dag_id": ""}' -u ":" --header 'Content-Type: application/json' +curl -XPOST /api/v1/openmetadata/enable --data-raw '{"dag_id": ""}' -u ":" --header 'Content-Type: application/json' ``` Please update it accordingly. ## Git Sync? -One recurrent question when setting up Airflow is the possibility of using [git-sync](https://airflow.apache.org/docs/helm-chart/stable/manage-dags-files.html#mounting-dags-from-a-private-github-repo-using-git-sync-sidecar) +One recurrent question when setting up Airflow is the possibility of using [git-sync](https://airflow.apache.org/docs/helm-chart/stable/manage-dags-files.html#mounting-dags-from-a-private-github-repo-using-git-sync-sidecar) to manage the ingestion DAGs. Let's remark the differences between `git-sync` and what we want to achieve by installing our custom API plugins: 1. `git-sync` will use Git as the source of truth for your DAGs. Meaning, any DAG you have on Git will eventually be used and scheduled in Airflow. 2. With the `openmetadata-managed-apis` we are using the OpenMetadata server as the source of truth. We are enabling dynamic DAG - creation from the OpenMetadata into your Airflow instance every time that you create a new Ingestion Workflow. + creation from the OpenMetadata into your Airflow instance every time that you create a new Ingestion Workflow. Then, should you use `git-sync`? - If you have an existing Airflow instance, and you want to build and maintain your own ingestion DAGs ([example](https://docs.open-metadata.org/v1.0.0/connectors/database/snowflake/airflow#2.-prepare-the-ingestion-dag)), -then you can go for it. + then you can go for it. - If instead, you want to use the full deployment process from OpenMetadata, `git-sync` would not be the right tool, since the DAGs won't be backed up by Git, but rather created from OpenMetadata. Note that if anything would to happen where you might lose the Airflow volumes, etc. You can just redeploy the DAGs from OpenMetadata. @@ -220,13 +230,13 @@ then you can go for it. If you want to learn how to set up Airflow using SSL, you can learn more here: {% inlineCalloutContainer %} - {% inlineCallout - color="violet-70" - icon="luggage" - bold="Airflow SSL" - href="/deployment/security/enable-ssl/airflow" %} - Learn how to configure Airflow with SSL. - {% /inlineCallout %} +{% inlineCallout +color="violet-70" +icon="luggage" +bold="Airflow SSL" +href="/deployment/security/enable-ssl/airflow" %} +Learn how to configure Airflow with SSL. +{% /inlineCallout %} {% /inlineCalloutContainer %} # Troubleshooting @@ -239,7 +249,7 @@ Validate the installation, making sure that from the OpenMetadata server you can call to `/health` gives us the proper response: ```bash -$ curl -XGET ${AIRFLOW_HOST}/api/v1/openmetadata/health +$ curl -XGET ${PIPELINE_SERVICE_CLIENT_ENDPOINT}/api/v1/openmetadata/health {"status": "healthy", "version": "x.y.z"} ``` @@ -252,10 +262,10 @@ deploy from the API. Note that once pipelines are deployed, the auth happens via a couple of points to validate: 1. The JWT of the ingestion bot is valid. You can check services such as https://jwt.io/ to help you - review if the token is expired or if there are any configuration issues. + review if the token is expired or if there are any configuration issues. 2. The `ingestion-bot` does not have the proper role. If you go to `/bots/ingestion-bot`, the bot - should present the `Ingestion bot role`. You can validate the role policies as well to make sure they were not - updated and the bot can indeed view and access services from the API. + should present the `Ingestion bot role`. You can validate the role policies as well to make sure they were not + updated and the bot can indeed view and access services from the API. 3. Run an API call for your service to verify the issue. An example trying to get a database service would look like follows: ``` curl -XGET 'http://:8585/api/v1/services/databaseServices/name/' \ @@ -288,10 +298,10 @@ Airflow host, but your provided user and password are not correct. Note the foll ```yaml pipelineServiceClientConfiguration: - [...] - parameters: - username: ${AIRFLOW_USERNAME:-admin} - password: ${AIRFLOW_PASSWORD:-admin} + [...] + parameters: + username: ${AIRFLOW_USERNAME:-admin} + password: ${AIRFLOW_PASSWORD:-admin} ``` You should validate if the content of the environment variables `AIRFLOW_USERNAME` and `AIRFLOW_PASSWORD` allow you to diff --git a/openmetadata-docs/content/v1.1.0-snapshot/menu.md b/openmetadata-docs/content/v1.1.0-snapshot/menu.md index 272c4b148aa..c79bbbcb736 100644 --- a/openmetadata-docs/content/v1.1.0-snapshot/menu.md +++ b/openmetadata-docs/content/v1.1.0-snapshot/menu.md @@ -355,6 +355,12 @@ site_menu: url: /connectors/database/salesforce/airflow - category: Connectors / Database / Salesforce / CLI url: /connectors/database/salesforce/cli + - category: Connectors / Database / SAP Hana + url: /connectors/database/sap-hana + - category: Connectors / Database / SAP Hana / Airflow + url: /connectors/database/sap-hana/airflow + - category: Connectors / Database / SAP Hana / CLI + url: /connectors/database/sap-hana/cli - category: Connectors / Database / SingleStore url: /connectors/database/singlestore - category: Connectors / Database / SingleStore / Airflow diff --git a/openmetadata-docs/images/v1.1.0/connectors/sap-hana/add-new-service.png b/openmetadata-docs/images/v1.1.0/connectors/sap-hana/add-new-service.png new file mode 100644 index 0000000000000000000000000000000000000000..bcf6249815c4922a18559e33513aacba06172665 GIT binary patch literal 41493 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 P|0&*6y<2eGDDeLP^V8`M literal 0 HcmV?d00001 diff --git a/openmetadata-docs/images/v1.1.0/connectors/sap-hana/select-service.png b/openmetadata-docs/images/v1.1.0/connectors/sap-hana/select-service.png new file mode 100644 index 0000000000000000000000000000000000000000..1eb1bdf913867c798a9a2255daf6b8c42b69b13a GIT binary patch literal 125770 zcmeEuWmH^Cw=Ejn0|eLLnh@NA2e;rZ!QCAa+#zUi2`-JhySr)gD78>dYaRqR!y zBsul1EEseRtn>^SoGq-MZvo?W<^;Z47~1O+J6o7r+HpGbkp6WAC-D9GFe54PUzgaM z@sO%W$r1}%*%}hFGB7bPk@CV56BBdW8hqlE7ZUl;?Z96=q{jC4)|`xtPEJk?PH!2k zY>gP1IXE~NncgtIc|#9eL2u_`X|L-{Z)r#NcOn0jBV=f&Z);+0Z(?Oh{9LZCo|S_= z4=L&MgZ};ZcRdZAO@2Me((XUa0vgEpe1?𝔨_ovVmKHPB881Ak{`4Lg7(dttq4$c;;QJ{s&iGw7-F!QfA@o;T zWk|CxCJPqY&M0I#GEWTG5GH<32)L= zHVC*#uwO579Pr?4ay%y1_}}jLhN4O|yrC{RKg7SU;@6R~XpABs8&?)cc|StmLpIpQKDdrU ztjs5c-uymh)+C6_NVV?tc6Zknve@HZfP3xD9@^@x?6b%9XNnOwLw#;bkBNy9i)YYW zQ)iMO`)6Do)A>M!IFnJxS_K^?eWlp4T2d8p?2CM?GeK7*dpHf|RLxAg!cy*?DJ;lF zj>2nCS$7k&bbY8_ET2!;xLm^Bir$}K6P127O>G|zS$n8B4Q*(XsI8@`VmW{;0s67= zvtRvtYfQhN%TtWk;i6zTK{B2=md0_^q?DK98)R1@@&v*`M%vS`-R zPLNqnj^h1MDs^-!8BPE#I+`n;k(<>mgk+^zr8pM_*$aoAERw zj5^B=2Mqe6UzblvbA1pI>EU)scxx1XzCA{k38o3s@!8ni{4kQrvpzRe8~;&5gO2a% zz9N*6M-3hxeof1>5@Lk!$=&64Cl`8srda*j1Bafm^y@z}139IS^}D$-4_V!mf%)?_c2^U-XNj{!HtAAm(z{XF5C6Vs>^XpkMd2bFgpSMCELS$5@99fX&KlT zpY9BvJUNCp!SR*IAO)8oUstl$Re?m6{f zoVq2o(~3vU{mqEiGSwLG-9DKpzK!o9a12lLOhCxQBtO}8H~;i!l9iezZ<@^IqMc0L z<-D0;Y18E{h~lu}sQGh{(AIDYSCO=m&_BK#sR9AFqW4C^Zढ़W%)PHkFO(~0ir zdlk5gPCfi}y?1uryNBR|j^eQ9n3r{0OIo2?Jw4w}G&SUqdBe3tZzZbtDBR8mCqD>j z&ce*O8r*Db(5n*%-p8VA@T$726Mk1Z`@TyyS((-XI721TRLS%^k5>s-;ZjNSMnzCq z9^>}ytQyRm;PX~34@F?f%=-TP3A`7R3a5Zo22Og2R{W#c9*RKTUMF4Hr*lSWAB2Vd z+#heY%1x(eIQBsu221tf3l2M-7&0;OTCN|)$I-bcSI$L~dC31Wc8*ZRiUO6vIqL1| zH)`pQXQb4q7ap(JaI(_SB1Yl@jEZ92aC5YjsH0ir#9`EMu#AUX#Ft4iNmCpbM|4(9jBOB{%XO@`Y^uoVC3Udy!f8lddUjM zB@&;cWETxwp1Sn8PUq7>arC@bV>a@#_GelOGt7@;6;(`KGJFr@1M!UU5)5@h)k}`* zeM3W4N;lYA&hL>qHc(IQ9x~9COEjplHSMF!n=YouOSSnpZZ^Iay ztr%a5isyj^y2dB=5pX-KPA+g6GRH+5(L^q% zl1=1G#+Li?gPum0vt)w|tK%iFr-y^OuWa^mC`zST7HO8DIB&blIroYxHi~POZ7Iuo z6mq4j^jYk;Wx1qtQyjm!KRsOGeb4>Qhb_2;X0XO>NdD(~ZHjm!hyS0&_LE=bAOBYussR1fyb4E~T}&Vo$c49`fm8CLO%K6z1cAV5VQF)8R|s~%X$Ko#`zuSrUKDVI z9}mM^M=FJU6p+PmsL2=MeuUi9%EWBw)zrDNIBej;{N7Q!NjQ!l#>#~(% zbSJN(Vmu+8#7eK|QDo@PSeDPD-Y$ z`%$%c?x8Gg3X;OuJ|Jw=$iXG-Mo%|rPN5X3<*sMcXwNM-G1}CNYRT>`{80S2;XW=C zn|vJ45f;1kEeS!J+UgaBmISnK*l999OHnixzzx?Uw^}9;=mWlCBfpu7urm7Gg}`=u zox7-CK={h|v*AET!bhI!l#>zX@$RW1&nZP7_E{*}-2p)ZkZtkMR@!4N9M;g(-j`6X z{v}qP$9$JFa)pP^*-;K;2-=p?(n9;huu_)`V}*zD3|*5ohfFNnLD$e=%d_kC2s}(b zJj^hb6i$aXrgbO{z*IXj*Jz4~(p4xt-_3JADwx5Jp9f;C51hJxylSaAG2N`$8RkBd z%v!U}lDRru3R9aGG~C7j%Oai23qB6*oW@Rsc z793JFDEnf@C)g~DfllP%HZ0gS3(Ib1>Q*r2e75?>0s)0|vhn(u6;uk-oSld5s`RIG zlYp^40hLAl2%b-O85pndA{uv5h{Pe0w{z<+eb=n5$3IXef~yb_gm^~|2aoNzp^QVs&Dvnp={Q`6p?izQ z9>s)=Q*qyjF=)}N2_&?9Q$-cybnnf*lN;wz+f~~UMAp!E!*w3RbwxyVhrEMd&*GA= z)-Z+cHAU#LImx^vc#=~fW|}%@mL;?V~Sl|fXQ2Hp81u0 zA8-10(&tWWDU?#U;M-+VNs?_u_QrW+%;GX@i`BM|UaZNY4H2_DV(ri|C^ z*Ym@r1+|4G&m|g8;jR?(iXm3r2f6nQkTA%IAsuklT)rc=hS}vQI zd!CTkXjeT4(VweZ=RFVWw&3S?kd-xT{O(xn-M2FW{8Pz^(I4g=W;6{i_vcup%=!^A zOJJ-i+c6MpPj%3kZfgb@8hX!nCItIhkxE3ZzrXiNM$zzDMfc5pbqJ*uA>-=ks!L zspGMdO3e7oiXTeAr9|j)F6R?6nw#cHGc`5kmx$$j$8;1#IW1LZ(*I>>xB*<^zxI-6|6W^=(or|Hr^dqzeX}?etEN(`e5jM%^r!>qXuKT`A^sZFBLEc_Jt_R+O*t;Df*jiQ3@GLUxI@ZTTnq3^)Qa-34lL*^59csEvTwIRaw;f&TM+aRfo`fzEn}B5-dM z-lBaXkMpR!yI@VI(5}YWI*Re^7mX>XJDh8iOT8uUYp<5wir;B2g+iHOkwWjwLTW!y zE93~(;|JT_hEu{ibD~q%Qp!b@ybb>c10c46niqxZo+V-jhnZXpK%w)Rs;@ogTVaUL zB7FMbSZ5ckc!Rg7N4z^Rf%~oDD3IaJdU=ZBt#*$;6nDW=j#Vn+9$_=P!{fa8je~=q zWO9qvu-l0;j@^R6j&dY*?$LO4Jf-f6^O(mE1x}P|J%Z0mp7o(1Qm)#}9Zg<$uE)Om z?#X65&Tj-*`_s|+JEYPsc+JAvmjx4kf~Ak($i(qFk$L5A!_+|!>UIasUy*7nWeH9 z|4_Y8kz0`7e7!j*pQGg93*XRyVBk4HqDg;V5XUBN-JAE~$x(xQYfjtXM}2{8{QxCm zR7E#it*I|V<#8)t{xSi@8C2D9ZXE^k{N=Y?$GBF;kwB{rI5Y{r7B^tr2S4rMP5Cq~ zWA;!?YMLEiDz9L{?5L|9p$y>B-3yy)bE;_HpO;)$BVVN;OU!=8FsFs9!Pt-c4913d zZPOuuV8&R~3_GLk)r5I6TeneASc0yJYVuGSg%Y>b4Q@$dl;%;bGlLNm#8$EFxL_gw z@uQ)WsYx<#oZa=IK8oXhIRrQ&8|r@b=b-myD>3u)Z**OH!nvH59O9Q=Z*6Bq#Q7m$ z&)XHDfl)&3Z+r=YQAr;%=5y?+JFMR;+8ew+SU2bX~HQ$viS)N6S62jFH@?5WeaST1-1yi{@DW|H$G-2Y<{}=H(X7G72 z;rMwzAxHgq2?)UF+?3(k6+V+HjRb>_PD76A=` z4R^mdyr#06LWh~My0-JPMBt~!k64ym#$H-lT4uqO2tw-W6wbOWPLkxKqSiiscpPUMSKAhFT~T08m=Yuj03v1RCp*M6u$il~TM?-kd~ zv-RoWCxfLLbESUM(esV>)NO*$_b(RT{nC#<-#Sm_mT$gewZrQgVW znB07=INl9Y#YjkJ{k4x)Ahp2*@q2_Vym;H1i=5ma(7iw)Ui1nkt8>9V2d57oE=8%W1=(&S+mV z?Q!(ocPQ_6zwP}f?~Yss!$DU*1YKL9vtqMvi%!iC*8UmgBpB?;Ri%Ug`>U9X8g785 zVtIu_+7r^Q7_Bk+XFwh)Z%@h-mVG;y?!IP@7ToTwi@bGqkQ85UCd%2kP4c=Mc zGg!{A2z!|l)v{cg-%YuomUr#YYBSsB!O);Z`VGh}+#n}cyo!N0rK(Xf^~o`DpQVyt zZZ*U0`uWsl~x{ItO*AsYgus4EC|ix^e6F-jLYVk>h$4`bW8NZvy%SRF>{l? zIW`Ui)T?rAMJLXjsPwXpqGX+W|Jg{a(nG*ib(S*Z$MKXr(1pT=`td&GmPCa}s$^oN z-k-GoupMjbD2661VH+-Cqo?!l(@_;;hgz9t?uKd zoe}%<@2p6?cs?nLwPp<#v83I?81t}yr+!lJIJ}pj*_!ht2b-YNIxHjVg)Y(U@Z2rw>leQs2eemA9s&;YHiJ8UV|+5uqoJlyQ&xW82e4DNr%wUJoV z(Kh6f=1|Q~wc?(M8e|e%lOOu#y)8Vq4ta5yNToy$qN(*M4Jg&)XSL7+gZNG4ieuuh zzt@*b@7}*pqNL~fSZ?bcJ;Nc$=`a+Sk557BV?fsG#y2MtdJx9u^D>KM*{_@%eVYmb z^@xaDlVopZ65%Rm_h5X25+*fTf_dd7aW^FaIBY@{ZDDpvwN@?Lluu=-;?6Q3^Qq=ei1D@lix5Ao-cX%;Ch6gryb z!86mobQj^1lZa7N;cMSO22W!o3q3!QfpDY zF_%?4;jwX5R`rp@Lbze6APt!#`O8tgUyuK{$5)%u=*YSp9a#XfDx6~Yc3uchrY0PcG7tn(>GkEhcpvHXEKIDo+EPyu$s_5YoR266 z#L7|#q@J7bY!5VRtqos+WKCl=`E;&`hN8Hbwo39yScu_}WZ9Yu1SyI6AH(Ymg|7{n z=;6ped*69Ftn`#scct`bDiz%%hC?-qd#g*jIvC8BI8u7oBo8H4H!tn!LX)p@K)9Zr zEnh9>f!;q)ucM?8m7O)P*cg=G__q#`?!@$nuH#-fr7lWK?GMb13nZpOaV7xGure{0 zN{yRtJ0~AqhElU5YBy{GJxlnpVHj*yzM6K-Q~{#AP1QhV>Z zZ${QzgU(CnVd|C-trJj6bVZS;Yqwp+Dhc!N3UvkWBs!KtRL|hYzaK?5s+2P$!I3BP zb00kvCC5EjqA$C!dP999X{9!KYwg_U1|@PZ4obkZ((4LI)_d;OUtQAL#Ps{|-o4}> z_@_xw+%n!*&07J1NRp^P$3poSRTYylISM$=Y8^Ram=%GWEV&J4(Y-(y!-7bu|Kxjc z5zbcDjT<@L)WhAc_uuwtVyjQ?hJXL{;RB7!&hq#t`cqIV8PYgso2EZTj}`hcr_Z4W zE=B6=JyU~==>GrvH29UrfZNJmR@bG&OJIJ<$fD8bAxC9|DCJS4z*sQ_39U&LIY(gt zZc`oANvd?++Tqt-)|&OWgfbG9#n>C6te}DnXHWH?sp5Ui`d^o8ASV}}gCbFQkF7Io z=#GsI-bYC8%<)~aH8~phsNlc}J-a46vDWfFtZb*1qhRxneQjA}#CM~Y$7Qm5xTP4z zbf5H07@^(iViLOd0B3ab@SSZACkN)Ns7h7kML72-n^^Z_d*OudJo2wWlO2Bkp2tz! zObj@1F<4Xm^RXXw<1WP>yuTBcz@C4J5DKvA6Z5|Ed=rklut*539}8b-2KKEXP|sQ< zOQOEp?RL6g&|b#$#Kp||`L8u~1o&b)qJqPIJB?OrE8Iz`k<(+`FG^X-$XMJRAdv?%`pul|bBBLG7AYStUX@h=?t`~@`( zOxT@8pi%lC9^@}FkC2QX?Whb~*Y1zCj~Ey58e?DQls^N3|5qhmo{YhsaQ?AOI){P@ zH}<^n9U}R?YCgt*O|sC|9R66Zk6(cYJ4YbFCJFvgwK1T}ev5_v<{np>fhmR%50y3G zkE&$?O^y%=ocVWa_}rXU{pS^&mDpUm2R*NtnLwSyY+)ZRCO%&MMQm(r5@yIyaZA$F zDg~$_so$e2|D4RHru~!ZJK_6J9Qzk3$S;I{-mB2AG^)QYjGye1T>Fwcuz99D&%hry zQu=i_I7gVJ^X+-`7dreK$3?2ar;uK(j27nCaAT73n6rv{ACie%W?=MS{dIzpz`@Ei1(G{#{2SOD;R%$Bp*_j2=C2d8h z7}@CZAJ$u^++PZY6{+Gz!Z6ZC2hC4A2fQtzjf~Mow$6(=)Oo}BwIW>*tGYn42s z#KxlcJPj4 zBT_Ka&}?Q;?9j!l624WzW&}-BC+Cz(=V497>|pak%~w zFwh%CwwYwrY*S!yc?WdRSH8!Sh@l)C?M1y1dVn|LjcWF|6PGPEOAxBP+m;^CM~5X# zXM^wfB&KuY-com(H${P(chuOzY797riDL3X;Dw*V&%UJTB(n%@{li+F;>2r5;lS}i zl(=tBX*3mE4xaj2Zh4dU>*oS?6Zw9ZwZq!lFVF{5TlXjc=xkyAVgr3w5{by$)Ncz zeSFdGg!Ao9hq&F{joHvRM^#4S_TG>Y*0=Ue2iAknX?vv{9`E@c9fsA;hA|AgwI@d7 zKUgV$<9ezczTE7?o55o;rBPIVF{F*GVrW{hclPD%;HhSMFimyEYXiafa$#8AY~ke5 zYhW;!F;=}KkLX~6l2Es+Ci@W-${i%Wy6krJj%GCs{t{IAblt-@_&r_=H#q5yVKB$4 zH>4y$`iBO?odJZAe~G5sLDf$H8F}-}@lsP!G0|uY0Zgw^Dc^A`Bn2DWjQ!!_+ARE++D)hJ)(20K^&6)OEXVT$PLsC`*?>wDmJxk0AM*^=$ zy&OWiTwzgIK}iX#4DXFWAmk~&-5_%gu+^{T0Z5_ruT$wQUQc%`2N%GDMv@(-RbM>V z2Vh9Ex8(^>Y)>F9yx5ut;0DXfB`58PVs*9!D@>l@*9*fryNIvX-WS3FR2fQ+)6udB zeV4AGPN-thxAAd#JZ*r~lIGkYPjZ~hllz&IWC{OWbe=4NdtAeD&hT=%)#?Y}_$Zn^ zO<``j0A*M{!&twa3A!t-yMy;zU7pHS5)m%u*h;n=yuUfKm;)G2%*lqGm6n#94x&e$ z^~IK~>dHB+>K|#!S}tAt)eDw~R9Vx`3)shkdBw%=wr55&1cz4Jz6|+cYZ;rGn(kX+ zT{(REl=Gm;*#dWEr9pWnBJ8%!c6jf9!qsVo=P{X!Tuu0nVfIvRBvx6=#Ov%5;)w+O zwf7t$Fe1R#PER|O@B$5MWTAuAFiTL&toXD(^-seL2K#xsAxA~5Vx5dE$>|X`eQHvz znza(2h8|RSqGAmcRH^H=628rLqLDIGZM{EMjpbovgj2C`8&EYH8d*_FDmZvr6R2n4|1s#du_@r-WI7ulNn>K#RMwMG2QpSTPDUaVRtM_0J`71vy+M z#uaV7W#{ZiJ_?N|6Zxu?1a=dzyD}{mJ};vnm+J!3FL2>%BL^EDXye;lz8A?R?;JDF zc0x9P##PMVO2U%*b(0dBFwM1Xbin~@I;)d*<#6g}Y6{MyoekJQ>?b9&M;DQdo9#MR zl9ln>6wYe`Jn$+JJckSu))Rp4|MY|*%IUFTvF!EaK^u7zcAU%i&}U#^pfVQxbWCDf zGxrJ44QcJw=WW2bQG&>;d~qH0nRgM)Ci{&TYF8n$A|{3a8r|R=&KnbaB1fv?hGf?3 z{zTL*)N8s(RsSg~AkgV?qGw|jASr7EAT02C-D^`2b@Wb4y&eYm!7>OAW#!~_%PT5| zc&-4>umG2$Pi(z%FPOH3sZhDJ`e5F5uei9k$Kf0s1LGWy6yYl@EF)!l7!_W7KYcJU zAv3isEhxpC`)*WIWcvMqnIWF1L}p z9yMK6yU1ZdF$k5`H_x$eIZaNpF0`}WuQzKioz!jthIGV(_6H;Zps`%XOD8vgvQ;bD zeWC9~mJqu474k00?sjp~YVih1u(l!MM7@n1&&!Pou5|@NGX0fUD+v(tM9w0%==wBY zG42hEXsXVult?n z19`W|HeZ4-yOKNQ@J%@R8uLx-1d3!d>Z6-onTMXYK2w)UEhGivutIR$^btcq&lp^* z+5zm(9Qh7(m!FA7{+i9ej9An~5Os~>+469Spc(KT8O!CKGQ#`m+^TLfZqz~4y_JT? zpf{2U0q>N*h}|MsxYO%mN;#vPWc%qX?a6o82DBNc?oao0h~SJ1*5;E7^(<0Isht>P=`T0+|-0lrW%1+$1Db8y_N(n}WhKU?@ zKYbbW*TO&0dR`eHrMeyB)cfDn*R9m51HOPwr=oLudOA3nuVA5?2TAk--5NG~$Ll3x z615LW*7#;-Lp?l}rnGCW_~C4ZjGIsNx(riQJ7_HttkJz5DwO7CvhCbR`xbdhdO8?yWJ zY%UB-G!!YV9&#m@T^c=&&~OJ2O&24=I*ta3K4b(tgV4aMaQoZ+5QH^VSnGcZgmYYsn2@*>5df3wz zF5Z@oiHVI>)%Lo6*#J3Qrh@8OOVe(!SZfmp-7nilOtUD^SN2N2OMQEBN!x)46_foG zP!9AVu`LqQTnjJJ3z(!p#uP&Ia8#}AqU*Ly^}nhb1_B2YX7DX7D+aPdhpJou*KKw1 zk`34B*w!QUM{;!Y-A#v3S4}=CGqZvj zx?+VW^P=s;(so?Et0PLxdFV`@N)H$4eA~e^TqsceMjosc>U-+2U?MIO3D5gXHDGZx zyiN!W+dZ0IpiF>$$xv7!fM?i zmcLr^AzS=j?UJ?OllUh`K~IlNv^XS;5QxohQHkg^w;eRA9|FO!K+OP^kr}rxi;oPb zE2zFw%3yh9TVX%uFNn=vbVDrBcSeCuTvUD{QL4xWLi-Ek@9|ppO_g4-TEE~HyEl~_k#<9^!)mKfW(n4_R&QQYLiPpLVg^Gl z(JmJ1G=ozLl}s9I;4O`MnGXTmBxlGr2n;QVa|s-SDlkT6*M4i=W&mzg>uEsykrXxA zlmi(Pd|KE+9&6$OX-#S3ITTMhP{wFJZz-^N$`N7<)4Bop`@LU)B$9|@Xc>rPM_pxt{RE!_wkZ!0duFSzANL?M z7A#d(9gz4{h>|4(2pkiZf}Uk&AURZl-rUEV;(`h4_?0rWQNOwJ^>D8FT#8p_Q2X7! zcX(G#_1<$ftj3GrcpYH{CCZT&<_`VlxgNp=WUkKKz7F)-FB!tVAvcSLA0Pqo}avzy<%(27SlA_ zubVKsvcl(HYOzTIjq%Omh%Q9}k%JeceFo@3icP$GVkm*X;|V>9*>|XH&m~1+^V|$! z<04>S!>>WSn4R||T6+8={W$E_%D8Z9ONHX{lXhKG^?{}8o06z)p?W@zG1b(TEFnu? z{o?GxJfg~v^=iF)njcp`*>2q2oUSc>pFTw_e6y%R+>PeQN7@5Fb(KmJkC%F+yPoW& z^IfZqSpBfBwpYaAFqOtgOIs&GuEz#@6QSC=Xp9o-#x$01zlhtXL0kb`=EbUbg?)*3 z8ZS%jQtd>V>qj4MH}#-J+iA{)t&FUR&DFQ3=Fv^z!)5Kb2R>abqI_uwToiBU;XsX6 zS#&?jCtITK1`h*_)Rohm(&#E=z=2r4Vo$ZZ@G-8^!A=}Og6&c~AR(X%FQT8s9(0kZ zFXcb#n=ad8Gv?=z*<6s>AgrQ0fu%G{bo&K`7o@cB^>~(+$u${x7>rS!LO_84D%eBD zRO)Rd4Jf|&1|P3s8-#gh9p-cG^I8@=Qtjl&a2A53@Pn5yHj~;OhlU~X{K+dKa7i7_ z8R7csmimFPWVge*LsC{w5!c!i{$x@3`n`Z{OMXWL8I?7qi_^MU-_? z3~$({Bd;g3o|o#B?N!jzR+1&4Vp53I;MyMWIQvi@PZSHJuz~KQUJvab%Ra(*GKe|{ z{t~$Jd$7wb4+mD4xQAKs+MXPf$=#dPRYSWyR?sZF&_t3tCvE|5C=iR?$2DLwu*X7> zE$=j8^h(=eVGrLro7yZn%*?ICGkDjuyxw9fF?+F(!I+d0aM9ra_Z9M9 z3kL{lBO$h&w|rNUD8Xx^vJHi>vaG3tg!5joI)830<(3buN)~fjA8QudWW|J`<$i<| zD}GXMk}I!1hxX&K5iCm)+jkZF^7^qVpr4$UO&FP%euNj=c;uFC7nO{a6f7j0441V& z4-JId;L$<$J?I^>*XJLckR+=yA=u5&Dz3vHND|2yk;v^Yu0)H#1#sdzjKK{XJd&4o z^yxcNDC5?D_FEjP(HXv#GKb1s+It1Fm_%Q`!g1HS`2>On zN-|C#ZrF-Du2LFT+F2;DngsVVtkH2qZd%dbIk37zbd}6G< z{w9el;CmA_c!Yb|n;=CPts+0@V(UT^no6Swsj0qeYltB@=j_mUZ&6iLT9s`;H2g3U z7h-qa+tI#-bu5MuwIt7s8RG5K-|du*YK9Ya%8EUsQ8xqx>ylb#I6lT#oZT7UuQZD2 zjV(jvaunQ46Pt@^JI8iNv3WQkNPgfSOXB`{FhdMEmD2D zrPEv-;D;dgeoFt5^M$Q*O^!>$g}4Z$fbfslibdG_kVPs=mm97U5_~`N3nju%*kU{? z$^eFj=_^)k2$foRWw0JfkF(cpseiMVLI8406o&dM7vLEh_U?flrTlM!;{WLwE%G1m z@&BuFvYl?`{ImFfz{i0AEY17BAhZx_H}(($JBb#E8C55}Y=r=%1GQdZ`r<6i$sQgC5VF)+mS_lxf= z)L3!NyllGmO>Frg0EzHR-T7BK3ppgXv9hrWqpxp}v-8QQUpGPx*uvka|KI+Iaz0U*JH5kLf+-GN}J7`M0Sa$Z6UKs~XxQh+27 z?uYXU`r#Qg94tmHx@~1o&u06*X{m7bHP}RM7uyDD!CFO#qZkLnP#$g`ZN^_NdAbWhNX-m%ql0f#ZBk8lVU+;aK62LCq$#1F66bp1w# zhvOO>x#vD5S!`H&-6b{NpAOir1yS|`g$mw#-E3lW{P4xdHX2ENW-fYDoR+D9G^WO9 zypa{DS-Dv4HLw=eArf#-#{Dp8zL-`w1b~HTLLS#%<{o@9yRG3^oAvHK3C5-k^0E~G zyGX+KI3F8ta&wvkg#Vi*4Ttaz;a`mni&ZN`!g(%L)UkIP0idEC$_dcPYB>M!dtQbRVUA4gw(E%f( z>Y@JOazSv$8U#d+{RoVW#FT07JCIs1P0*7=E2-<2OnlRo*IRYMNzGJOSN9WW zAj^u^Q&SzF^cxIBBMYt1P3R%=TFiORrC6IpU$Z!Vf4A~fy#wgK3BSh18Y&jevs_cg zm5(wwc$Ha<=E8~iRkg8wzO76G@q=DcC1IX`d!$vNSi0k!fSPruh{a!nK^ z@|f%<839Navj}Vk4ddI(12bfvbJ;V15ldoQai7@kY{duQ&Ww8iyZ-)+X@j$Q=;_!) z7}(o>njnp;2g7-YO6VbU8%$4m#;N4q6ZMZk{+c5KV_PdtCJ@g*tb4O-n3)*o`&*dY zl;!jk>SLg*!KZVed9^`fzpDDS;HhET_xjUd0&`AI4#gxRz91AQDIqp6vW!vzm`N7b zV^VMOp%eb6Y&KyY^a{LqO<+K)FS`Rw6~20zx~i&)9=!zp{!gN(Ytg({f#w$zHCv{M zth{L>+xyJ+1TcWPaxs7CM&U_oc|ADLj*rPy^)B@JaHa6ZG8v^f#Buez18ymzsTZpD zV8IP_17s+m#=S6qIu79TT_fJMv$YMaC-XaHCw&~3V0`zi>;K;6!#l+EoMR)G<}o0W zmiJ0i88z-_{a(r2+s=;e9R-w$d<9Ac0Qwz~1BT(v$fyA=9huCpIW8RsV%Oh-_vzm5 zixnk*D_P0AjPJPB?;JX#jlQac!LC^KEUhnCwNyRM;o#t8P!h8HBLu+@$!e@a(t!zc zn6{xb*w5+)1O@Ma*lW*OF2Mu%ZgGr~Nr2?0*n)zBg#K~3fNdy1Q{DCeV^|=(GJUb+ zw4&f<4)i{vlDnHi0WiYoG;dO>=XGfNAZ6-C1w zRQ)DVQ2wTq4I20HcvoJZQ81<+y74RJ+qV-Oq1R#Vs3&1gs%)xIH8U?w2Ix z`t%aTYp3fGd}=N3u&#@esBN&Q6|lz+PF~&N1hfe%ESR9TNWNT-%W||0I_Tb<#FJ&M zm>7soF2@Zm+nFKzx8S*w*EbE2)sdZ_RXuKXu(1lew4d{6oT5jWtE&}hJ+>Q9z;B_Y zRTTFvVWx@iSDqfyq{4Z1HGy~KW{jU6%T#>Mlb&g-lozQDA5|k8Zk|S8>WJ)_R zSG3Xy0VubcBOpK05x+Zvh%wFc)+Ax|%k>>VaJF~D35?UjN1?3U0mLZ0M1WmqgCLM; z*(!gCj5F1y=Z1Z| zH2IXY^qKSBz^UdT1~?qoe5Tw1R_im~v?d|eFsYWu(^8iofquI!z>ULW)wTCWKzHm8 z5XE(Kw2`iMhbWfieOxkpCe7oJC@>OU)h>V!@b-5am;qTRmq9Nm$fyt+iZi+X`7Hph z1MaIuyUe|p$)?v*zj~IQ6b#81Y-j_2A&~rmGGB z!uQx-YF967^L28*^U6#cLJLe2fXv`ExQOX=3A&qit(RJ*sp?-%s|8P8sXqcl<~)JT zqKhuIh?*ppHCY~GLzQHf<$f}Tgeq#cH5#z}vuKrmXYFUBp-8;#a8h)DLbo%kbOtPc z6?;3umfj!w+j6u zOkYxk6q;L;-)oXhD~?W;^z7$Qg@-RfB*Q19viB=19#@)Xb3JSt&dF~`*2X@;I;&jT zgj2#HCy8CW`8W08IY9JQAIc$KwcyjYNw$h$q1Sxr?N>anbJr#yNvAc%GkSnb6}AxI z2fyp6hh3nTk)xJ$5dQYiuUOmj=DS>BwbVMD+DGMAcFQhXb4x~`UQC4dQ)`w^);8np z2%_?IR1 zN!Mo{>_L_w48TJ1xSPm4SpPjkk5u>G>R(VA_^}< zKt0W8M`@U3N15GL0BabQM%lx5tZ7To!6rG!)Avg;O-}#%E=z`T-;yU!hLXw= z25*b=SJr?Su^g0If$l>+ zVZ5Dh1!QsMtGVI1h}IrKFLnI&nj?42H7Up{3p^HcA?ej0!jppSkyou zs�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

>vyxlkjkAlFqKw5MXK>z985We<&}V3*yxRy` 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 >(#gF*jFr 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 z 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Ⓢ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%0DJBRxQ_X~P8-{~<=mnf>^cYCk{wl}3kBI8oF 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�Fu#h^`b5-JCj_b@<8iO22a(l`{}8P=?0zp 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 tSdY297xDjNHATz< `", + "type": "string" + } + }, + "additionalProperties": false + } + }, + "properties": { + "type": { + "title": "Service Type", + "description": "Service Type", + "$ref": "#/definitions/sapHanaType", + "default": "SapHana" + }, + "scheme": { + "title": "Connection Scheme", + "description": "SQLAlchemy driver scheme options.", + "$ref": "#/definitions/sapHanaScheme", + "default": "hana" + }, + "connection": { + "mask": true, + "title": "SAP Hana Connection", + "description": "Choose between Database connection or HDB User Store connection.", + "oneOf": [ + { + "$ref": "#/definitions/sqlConnection" + }, + { + "$ref": "#/definitions/hdbUserStoreConnection" + } + ] + }, + "connectionOptions": { + "title": "Connection Options", + "$ref": "../connectionBasicType.json#/definitions/connectionOptions" + }, + "connectionArguments": { + "title": "Connection Arguments", + "$ref": "../connectionBasicType.json#/definitions/connectionArguments" + }, + "supportsMetadataExtraction": { + "title": "Supports Metadata Extraction", + "$ref": "../connectionBasicType.json#/definitions/supportsMetadataExtraction" + }, + "supportsDBTExtraction": { + "$ref": "../connectionBasicType.json#/definitions/supportsDBTExtraction" + }, + "supportsProfiler": { + "title": "Supports Profiler", + "$ref": "../connectionBasicType.json#/definitions/supportsProfiler" + }, + "supportsQueryComment": { + "title": "Supports Query Comment", + "$ref": "../connectionBasicType.json#/definitions/supportsQueryComment" + } + }, + "additionalProperties": false, + "required": ["connection"] +} diff --git a/openmetadata-spec/src/main/resources/json/schema/entity/services/databaseService.json b/openmetadata-spec/src/main/resources/json/schema/entity/services/databaseService.json index ba038a0bbc3..5c41f8ead7b 100644 --- a/openmetadata-spec/src/main/resources/json/schema/entity/services/databaseService.json +++ b/openmetadata-spec/src/main/resources/json/schema/entity/services/databaseService.json @@ -45,7 +45,8 @@ "DomoDatabase", "QueryLog", "CustomDatabase", - "Dbt" + "Dbt", + "SapHana" ], "javaEnums": [ { @@ -140,6 +141,9 @@ }, { "name": "Dbt" + }, + { + "name": "SapHana" } ] }, @@ -239,6 +243,9 @@ }, { "$ref": "./connections/database/customDatabaseConnection.json" + }, + { + "$ref": "./connections/database/sapHanaConnection.json" } ] } diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SapHana.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SapHana.md new file mode 100644 index 00000000000..54326b7e59c --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SapHana.md @@ -0,0 +1,88 @@ +# SAP Hana + +In this section, we provide guides and references to use the SAP Hana connector. + +## Requirements + +The connector is compatible with HANA or HANA express versions since HANA SPS 2. + +To extract metadata the user used in the connection needs to have access to the `SYS` schema. + +You can create a new user to run the ingestion with: + +```SQL +CREATE USER openmetadata PASSWORD Password123; +``` + +And, if you have password policies forcing users to reset the password, you can disable that policy for this technical user with: + +```SQL +ALTER USER openmetadata DISABLE PASSWORD LIFETIME; +``` + +### Profiler & Data Quality + +Executing the profiler Workflow or data quality tests, will require the user to have `SELECT` permission on the tables/schemas where the profiler/tests will be executed. The user should also be allowed to view information in `tables` for all objects in the database. More information on the profiler workflow setup can be found [here](https://docs.open-metadata.org/connectors/ingestion/workflows/profiler) and data quality tests [here](https://docs.open-metadata.org/connectors/ingestion/workflows/data-quality). + +You can find further information on the SAP Hana connector in the [docs](https://docs.open-metadata.org/connectors/database/sap-hana). + +## Connection Details + +$$section +### Scheme $(id="scheme") +SQLAlchemy driver scheme options. We only support `hana`, which is based on `hdbcli`. +$$ + +$$section +### Connection $(id="connection") +We support two possible connection types: +1. **SQL Connection**, where you will the username, password and host. +2. **HDB User Store** [connection](https://help.sap.com/docs/SAP_HANA_PLATFORM/b3ee5778bc2e4a089d3299b82ec762a7/dd95ac9dbb571014a7d7f0234d762fdb.html?version=2.0.05&locale=en-US). Note that the HDB Store will need to be locally available to the instance running the ingestion process. If you are unsure about this setting, you can run the ingestion process passing the usual SQL connection details. +$$ + +## SQL Connection + +$$section +### Host Port $(id="hostPort") +Host and port of the SAP Hana service. This should be specified as a string in the format `hostname:port`. E.g., `localhost:39041`, `host.docker.internal:39041`. +$$ + +$$section +### Username $(id="username") +Username to connect to SAP Hana. This user should have access to the `SYS` schema to extract metadata. Other workflows may require different permissions. Refer to the section above for more information. +$$ + +$$section +### Password $(id="password") +Password for the informed user. +$$ + + +$$section +### Database $(id="database") +Database you want to connect to. If this is not informed, we will use the default's user database. +$$ + +$$section +### Database Schema $(id="databaseSchema") +This is an optional parameter. When set, the value will be used to restrict the metadata reading to a single schema (corresponding to the value passed in this field). When left blank, OpenMetadata will scan all the schemas. +$$ + +## HDB User Store + +$$section +### User Key $(id="userKey") +HDB Store User Key generated from the command `hdbuserstore SET `. +$$ + +--- + +$$section +### Connection Options $(id="connectionOptions") +Additional connection options to build the URL that can be sent to the service during the connection. +$$ + +$$section +### Connection Arguments $(id="connectionArguments") +Additional connection arguments such as security or protocol configs that can be sent to the service during connection. +$$ diff --git a/openmetadata-ui/src/main/resources/ui/src/assets/img/service-icon-sap-hana.png b/openmetadata-ui/src/main/resources/ui/src/assets/img/service-icon-sap-hana.png new file mode 100644 index 0000000000000000000000000000000000000000..88076387631be408facb7c13862fdd5bbc41cf34 GIT binary patch literal 6467 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 KyJb4?kpBV2Ysq2& literal 0 HcmV?d00001 diff --git a/openmetadata-ui/src/main/resources/ui/src/constants/Services.constant.ts b/openmetadata-ui/src/main/resources/ui/src/constants/Services.constant.ts index 5f965c1861d..eac8e62d880 100644 --- a/openmetadata-ui/src/main/resources/ui/src/constants/Services.constant.ts +++ b/openmetadata-ui/src/main/resources/ui/src/constants/Services.constant.ts @@ -65,6 +65,7 @@ import redpanda from '../assets/img/service-icon-redpanda.png'; import redshift from '../assets/img/service-icon-redshift.png'; import sagemaker from '../assets/img/service-icon-sagemaker.png'; import salesforce from '../assets/img/service-icon-salesforce.png'; +import sapHana from '../assets/img/service-icon-sap-hana.png'; import scikit from '../assets/img/service-icon-scikit.png'; import singlestore from '../assets/img/service-icon-singlestore.png'; import snowflakes from '../assets/img/service-icon-snowflakes.png'; @@ -136,6 +137,7 @@ export const DYNAMODB = dynamodb; export const SINGLESTORE = singlestore; export const SALESFORCE = salesforce; export const MLFLOW = mlflow; +export const SAP_HANA = sapHana; export const SCIKIT = scikit; export const DELTALAKE = deltalake; export const DEFAULT_SERVICE = iconDefaultService; diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/DatabaseServiceUtils.ts b/openmetadata-ui/src/main/resources/ui/src/utils/DatabaseServiceUtils.ts index df431bbab48..7d13959508f 100644 --- a/openmetadata-ui/src/main/resources/ui/src/utils/DatabaseServiceUtils.ts +++ b/openmetadata-ui/src/main/resources/ui/src/utils/DatabaseServiceUtils.ts @@ -37,6 +37,7 @@ import postgresConnection from '../jsons/connectionSchemas/connections/database/ import prestoConnection from '../jsons/connectionSchemas/connections/database/prestoConnection.json'; import redshiftConnection from '../jsons/connectionSchemas/connections/database/redshiftConnection.json'; import salesforceConnection from '../jsons/connectionSchemas/connections/database/salesforceConnection.json'; +import sapHanaConnection from '../jsons/connectionSchemas/connections/database/sapHanaConnection.json'; import singleStoreConnection from '../jsons/connectionSchemas/connections/database/singleStoreConnection.json'; import snowflakeConnection from '../jsons/connectionSchemas/connections/database/snowflakeConnection.json'; import sqliteConnection from '../jsons/connectionSchemas/connections/database/sqliteConnection.json'; @@ -187,6 +188,11 @@ export const getDatabaseConfig = (type: DatabaseServiceType) => { break; } + case DatabaseServiceType.SapHana: { + schema = sapHanaConnection; + + break; + } default: { schema = mysqlConnection; diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/ServiceUtils.tsx b/openmetadata-ui/src/main/resources/ui/src/utils/ServiceUtils.tsx index 0eec6e175de..395aed011ca 100644 --- a/openmetadata-ui/src/main/resources/ui/src/utils/ServiceUtils.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/utils/ServiceUtils.tsx @@ -88,6 +88,7 @@ import { REDSHIFT, SAGEMAKER, SALESFORCE, + SAP_HANA, SCIKIT, serviceTypes, SERVICE_TYPE_MAP, @@ -204,6 +205,9 @@ export const serviceTypeLogo = (type: string) => { case DatabaseServiceType.Salesforce: return SALESFORCE; + case DatabaseServiceType.SapHana: + return SAP_HANA; + case DatabaseServiceType.DeltaLake: return DELTALAKE;