カスタム クエリ
カスタム クエリは、特定の要件に従ってデータベース内のデータを取得または操作するために特別に作成された命令です。 データベース管理システムの事前定義クエリとは異なり、カスタム クエリは、独自のまたは複雑なデータの取得と操作のニーズを満たすように調整されています。
サポート マトリックス:
| データ ソース | カスタム クエリ | パラメーター化カスタム クエリ |
|---|---|---|
| Amazon Athena | Yes | Yes |
| Amazon Redshift | Yes | Yes |
| ClickHouse | Yes | Yes |
| Databricks | Yes | Yes |
| DuckDB | Yes | No |
| Elasticsearch | Yes | Yes |
| Google BigQuery | Yes | Yes |
| MariaDB | Yes | Yes |
| Microsoft Azure SQL Database | Yes | Yes |
| Microsoft Azure Synapse Analytics | Yes | Yes |
| Microsoft SQL Server | Yes | Yes |
| MySQL | Yes | Yes |
| Oracle | Yes | No |
| PostgreSQL | Yes | Yes |
| Snowflake | Yes | Yes |
| SQLite | Yes | No |
注記
CustomQuery に値を直接埋め込むのではなく、CustomQueryParameters を使用してください。クエリ文字列には @salesPersonId のような名前付きプレースホルダーを追加し、一致する値は別に渡します。
データ ソースの対応状況については、上記のサポート マトリックスを参照してください。DuckDB、SQLite、Oracle は CustomQuery をサポートしていますが、現時点では CustomQueryParameters をサポートしていません。MariaDB のパラメーター化されたカスタム クエリも、Java SDK ではサポートされていません。
手順 1 - クライアント上のデータ ソース項目を定義します。
RevealView.onDataSourcesRequested イベントのイベント ハンドラーを追加します。この手順では、カスタム クエリでオー バーライドするデータ ソースを作成します。
この例では、RVSqlServerDataSource を使用して SQL Server に接続しています。
revealView.onDataSourcesRequested = (callback) => {
const sqlServerDataSource = new RVSqlServerDataSource();
sqlServerDataSource.id = "MySqlServerDataSource";
sqlServerDataSource.title = "My SQL Server";
const sqlServerDataSourceItem = new RVSqlServerDataSourceItem(sqlServerDataSource);
sqlServerDataSourceItem.id = "MySqlServerDataSourceItem";
sqlServerDataSourceItem.title = "John Orders";
callback(new RevealDataSources([sqlServerDataSource], [sqlServerDataSourceItem], true));
};
手順 2 - サーバー上のデータ ソース項目をオーバーライドします。
if (sqlDataSourceItem.Id == "MySqlServerDataSourceItem")
{
//get the sales-person-id from the userContext
var salesPersonId = userContext.Properties["sales-person-id"];
//parametrize your custom query with the property obtained before
sqlDataSourceItem.CustomQuery =
"SELECT * FROM [Sales].[SalesOrderHeader] WHERE [SalesPersonId] = @salesPersonId";
sqlDataSourceItem.CustomQueryParameters = new Dictionary<string, object>
{
["@salesPersonId"] = salesPersonId
};
}