Databricks JDBC Driver では、ビジネス インテリジェンス (BI) ツールとアプリケーションが標準の JDBC メタデータ メソッドを使用してメトリック ビューを検出し、その中のメジャー列を識別できるようにする拡張メタデータ操作がサポートされています。
BI ツールでは、データ ソース ブラウザーでメトリック ビューを個別にフィルター処理および表示したり、メジャーとディメンションを区別して適切な SQL を生成したり、豊富なセマンティック レイヤー機能を構築したりできます。 データ探索ツールは、ユーザーがカタログ全体で使用可能なビジネス メトリックを検出して理解するのに役立ちます。
拡張メタデータを有効にする
下位互換性を維持するために、メトリック ビューの拡張メタデータは既定で無効になっています。 JDBC 接続プロパティまたは Spark SQL 構成設定を使用して有効にします。
JDBC 接続を確立するときに、 EnableMetricViewMetadata 接続プロパティを 1 に設定します。
接続プロパティの使用
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);
JDBC URL パラメーターの使用
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() メソッドを使用します。 拡張メタデータを有効にすると、このメソッドはメトリック ビューのMETRIC_VIEWとしてTABLE_TYPEを返します。そのため、通常のビューやテーブルと区別できます。
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 に設定されます。 Azure Databricks は、メトリック ビューを通常の VIEW 型として返し、メジャー列には、 measure サフィックスのない基本データ型が表示されます。