Databricks JDBC Driver を使用してメトリクス ビューのメタデータを操作する
Databricks JDBCドライバーは、ビジネス インテリジェンス ( BI ) ツールとアプリケーションが標準のJDBCメタデータ メソッドを使用してメトリクス ビューを検出し、ビュー内のメジャー列を識別できるようにする拡張メタデータ操作をサポートします。
BIツールは、データ ソース ブラウザーでメトリクス ビューを個別にフィルターして表示したり、メジャーとディメンションを区別して適切なSQLを生成したり、豊富なセマンティック レイヤー機能を構築したりできます。 データ探索ツールは、ユーザーがカタログ全体で利用可能なビジネス メトリックを発見して理解するのに役立ちます。
拡張メタデータを有効にする
メトリクス ビューの拡張メタデータは、下位互換性を維持するために当然無効になっています。 JDBC 接続プロパティまたは Spark SQL 構成設定を使用して有効にします。
JDBC 接続を確立するときに、 EnableMetricViewMetadata接続プロパティを1に設定します。
- Using connection properties
- Using JDBC URL parameters
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);
String url = "jdbc:databricks://<workspace-host>:443/default;" +
"httpPath=<http-path>;" +
"EnableMetricViewMetadata=1";
Connection connection = DriverManager.getConnection(url, properties);
あるいは、SQL セッションでspark.databricks.metadata.metricview.enabledを1に設定します。
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を返すため、メトリクス ビューを通常のビューやテーブルと区別できます。
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 measure 、 double measure )。
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が含まれます。
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, ...
}
下位互換性
デフォルトでは、既存のアプリケーションとの下位互換性を維持するために、 EnableMetricViewMetadataは0に設定されています。Databricksメトリクス ビューを通常のVIEW型として返し、メジャー列は接尾辞measureを付けずに基本データ型を表示します。