メインコンテンツまでスキップ

Databricks JDBC Driver を使用してメトリクス ビューのメタデータを操作する

Databricks JDBCドライバーは、ビジネス インテリジェンス ( BI ) ツールとアプリケーションが標準のJDBCメタデータ メソッドを使用してメトリクス ビューを検出し、ビュー内のメジャー列を識別できるようにする拡張メタデータ操作をサポートします。

BIツールは、データ ソース ブラウザーでメトリクス ビューを個別にフィルターして表示したり、メジャーとディメンションを区別して適切なSQLを生成したり、豊富なセマンティック レイヤー機能を構築したりできます。 データ探索ツールは、ユーザーがカタログ全体で利用可能なビジネス メトリックを発見して理解するのに役立ちます。

拡張メタデータを有効にする

メトリクス ビューの拡張メタデータは、下位互換性を維持するために当然無効になっています。 JDBC 接続プロパティまたは Spark SQL 構成設定を使用して有効にします。

JDBC 接続を確立するときに、 EnableMetricViewMetadata接続プロパティを1に設定します。

Java
Properties properties = new Properties();
properties.setProperty("UID", "<username>");
properties.setProperty("PWD", "<password>");
properties.setProperty("EnableMetricViewMetadata", "1");

String url = "jdbc:databricks://<workspace-host>:443/default;httpPath=<http-path>";
Connection connection = DriverManager.getConnection(url, properties);

あるいは、SQL セッションでspark.databricks.metadata.metricview.enabled1に設定します。

Java
Connection connection = DriverManager.getConnection(url, properties);
Statement statement = connection.createStatement();
statement.execute("SET spark.databricks.metadata.metricview.enabled=1");
// Metadata operations now return enhanced metric view information

メトリクス ビューの特定

メトリクス ビューを検出するには、 DatabaseMetaData.getTables()メソッドを使用します。 拡張メタデータを有効にすると、このメソッドはメトリクス ビューのTABLE_TYPEとしてMETRIC_VIEWを返すため、メトリクス ビューを通常のビューやテーブルと区別できます。

Java
Connection connection = DriverManager.getConnection(url, properties);
DatabaseMetaData metadata = connection.getMetaData();
ResultSet tables = metadata.getTables(catalog, schema, "<metric_view>", null);

while (tables.next()) {
String tableName = tables.getString("TABLE_NAME");
String tableType = tables.getString("TABLE_TYPE"); // Returns "METRIC_VIEW"
System.out.println("Metric View: " + tableName);
}

メジャー列を識別する

メトリクス ビュー内のメジャー列を識別するには、 DatabaseMetaData.getColumns()メソッドを使用します。 拡張メタデータを有効にすると、 TYPE_NAME列はメジャー列に対して<data_type> measureを返します (例: int measuredouble measure )。

Java
Connection connection = DriverManager.getConnection(url, properties);
DatabaseMetaData metadata = connection.getMetaData();
ResultSet columns = metadata.getColumns(catalog, schema, metricViewName, "%");

while (columns.next()) {
String columnName = columns.getString("COLUMN_NAME");
String typeName = columns.getString("TYPE_NAME");

if (typeName.endsWith(" measure")) {
System.out.println("Measure column: " + columnName + " (" + typeName + ")");
} else {
System.out.println("Dimension column: " + columnName + " (" + typeName + ")");
}
}

テーブルの種類でフィルタリング

カタログ内で使用可能なテーブル タイプを検出するには、 DatabaseMetaData.getTableTypes()メソッドを使用します。拡張メタデータが有効になっている場合、このメソッドでは使用可能なテーブル タイプのリストにMETRIC_VIEWが含まれます。

Java
Connection connection = DriverManager.getConnection(url, properties);
DatabaseMetaData metadata = connection.getMetaData();
ResultSet tableTypes = metadata.getTableTypes();

while (tableTypes.next()) {
String tableType = tableTypes.getString("TABLE_TYPE");
System.out.println("Available table type: " + tableType);
// Output includes: TABLE, VIEW, METRIC_VIEW, ...
}

下位互換性

デフォルトでは、既存のアプリケーションとの下位互換性を維持するために、 EnableMetricViewMetadata0に設定されています。Databricksメトリクス ビューを通常のVIEW型として返し、メジャー列は接尾辞measureを付けずに基本データ型を表示します。

次のステップ