CData Virtuality がサポートする標準的なスカラー関数に加え、基盤となるDBMS 関数に基づいて特定のコネクタに固有の定義済み関数があります。これらの関数の詳細については、CData Virtuality Studio の各データソースの「Functions」セクションを参照してください。これらの関数は、それぞれのデータソース内で排他的に使用するためにプッシュダウンされます。
データソースに対してこれらの定義済み関数を有効にするには、インポータープロパティimporter.loadSourceSystemFunctionsをTRUEに設定します。
現在、定義済み関数は以下のDBMSで完全にサポートされています:
Microsoft SQL Server:CData Virtuality はMicrosoft SQL Server v14、v15、v16 の関数をサポートしています。それ以下のバージョンも使用できますが、完全にはサポートされていません;
Microsoft Azure Database: v12 関数がサポートされています;
Snowflake: v8 関数がサポートされています。
Built-in Connector-specific Functions に関する情報は、SYS.FunctionsおよびSYS.FunctionParamsテーブルに記載されています。
Example
SELECT mssql.CHOOSE(a, 'First', 'Second', 'Third'), a FROM mssql.test_a;;Aggregate Functions Usage
Aggregate Functionsは、GROUP BY、1つの引用符で囲まれた文字列を集約式として使用する必要があります。
Example
SELECT mssql.MAX('a') FROM mssql.test_agg GROUP BY b ORDER BY b desc;;この例では、MAX関数のパラメータとして使用されているaは列名です。
IIF, ISNULL, TRY_PARSE Usage
IIF , ISNULL , TRY_PARSEは、一重引用符で囲まれた文字列式で使用する必要があります。文字列定数は三重の一重引用符で囲む必要があります。
Examples
SELECT mssql.IIF('45 > 60', 'a', 'b');;SELECT mssql.IIF('a > b', a, b) FROM mssql.test_a WHERE b=10;; SELECT mssql.ISNULL('NULL', 'replacement');;SELECT mssql.ISNULL('''test''', 'replacement');;SELECT mssql.ISNULL(mssql.ERROR_MESSAGE(), 'replacement');; SELECT mssql.TRY_PARSE('''Monday, 13 December 2010''', 'AS datetime2 USING ''en-US''');;SELECT mssql.TRY_PARSE('CHAR_1_COL', 'AS real') FROM mssql.test_cast_funcs;;Asterisk and DISTINCT Usage
COUNT , COUNT_BIG , BINARY_CHECKSUM , CHECKSUMは、アスタリスクを1つ引用符で囲んで使用してください。
関数の中には、DISTINCTを一重引用符で囲んだパラメータで使用できるものがあります。
Examples
SELECT mssql.COUNT('*') FROM mssql.test_agg;;SELECT mssql.VARP('DISTINCT a') FROM mssql.test_agg;;Window Expression as a Parameter
一部の関数(解析関数など)では、最後のパラメータとしてWindow式を使用します。
Examples
SELECT mssql.LAG(a, 1, 0, 'OVER(ORDER BY b)') FROM mssql.test_a;;SELECT mssql.LEAD(a, 1, 0, 'OVER(ORDER BY b)') FROM mssql.test_a;;SELECT mssql.FIRST_VALUE(b, 'OVER (ORDER BY a)') FROM mssql.test_a;;SELECT mssql.ROW_NUMBER('OVER(ORDER BY a)'), a FROM mssql.test_a;;Restrictions
Usage Within Same Data Source Only
データソースの組み込み関数は、同じデータソースのテーブルと列でのみ使用できます。
有効な使用例:
SELECT mssql.CHOOSE(a, 'First', 'Second', 'Third'), a FROM mssql.test_a;;無効な使用例です:
SELECT mssql.CHOOSE(a, 'First', 'Second', 'Third'), a FROM mssql_other_db.test_a;;SELECT mssql.CHOOSE(a, 'First', 'Second', 'Third'), a FROM postgres.test_a;;Materialized Tables
マテリアライズド・テーブルは物理的に別のデータ・ソースにあるため、組み込み関数を使用することはできません。代わりに、Analytical Storageデータ・ソースが同様の関数をサポートしている場合は、Analytical Storageの同様の関数を使用するようにクエリを書き換えることができます。
例えば、mssql.test_aテーブルがanalytical_storageにマテリアライズされ、対応する推奨最適化が有効になっている場合:
有効な使用例(Analytical Storageとソース・データベースの両方がMicrosoft SQL Serverの場合):
SELECT analytical_storage.CHOOSE(a, 'First', 'Second', 'Third'), a FROM mssql.test_a;;無効な使用例です:
SELECT mssql.CHOOSE(a, 'First', 'Second', 'Third'), a FROM mssql.test_a;;Combining Built-in Functions with CData Virtuality Functions
コネクタ固有の組み込み関数と、プッシュダウンできないCData Virtuality 関数を組み合わせることはできません。例えば、以下のクエリはエラーを生成します:
SELECT URLENCODE(mssql.Fun_Concat('http//', a), 'UTF-8') FROM mssql.test_a;;SELECT mssql.Fun_Concat(URLDECODE('http//' + a, 'UTF-8'), a) FROM mssql.test_a;;Developer Preview Functions
以下の Microsoft SQL Server 関数は、現在開発者プレビューです:
APPLOCK_MODE, APPLOCK_TEST, APPROX_PERCENTILE_CONT, APPROX_PERCENTILE_DISC, ASSEMBLYPROPERTY, ASYMKEY_ID, ASYMKEYPROPERTY, CERT_ID, CERTENCODED, CERTPROPERTY, DECRYPTBYASYMKEY, DECRYPTBYCERT, DECRYPTBYKEY, DECRYPTBYKEYAUTOASYMKEY, DECRYPTBYKEYAUTOCERT, DECRYPTBYPASSPHRASE, EDGE_ID_FROM_PARTS, ENCRYPTBYASYMKEY, ENCRYPTBYCERT, ENCRYPTBYKEY, ENCRYPTBYPASSPHRASE, ERROR_LINE, ERROR_MESSAGE, ERROR_NUMBER, ERROR_PROCEDURE, ERROR_SEVERITY, ERROR_STATE, EVENTDATA, GRAPH_ID_FROM_EDGE_ID, GRAPH_ID_FROM_NODE_ID, GROUPING, GROUPING_ID, INDEX_COL, INDEXKEY_PROPERTY, INDEXPROPERTY, IS_OBJECTSIGNED, KEY_GUID, KEY_ID, KEY_NAME, NODE_ID_FROM_PARTS, OBJECT_ID_FROM_EDGE_ID, OBJECT_ID_FROM_NODE_ID, PERCENTILE_CONT, PERCENTILE_DISC, SCOPE_IDENTITY, SIGNBYASYMKEY, SIGNBYCERT, SQL_VARIANT_PROPERTY, SYMKEYPROPERTY, TRIGGER_NESTLEVEL, VERIFYSIGNEDBYASYMKEY, VERIFYSIGNEDBYCERT