SuiteQL
以下の機能が、NetSuite に2020.1 で導入されました。これを使用するには、Version を2020.1 以降に設定する必要があります。さらに、NetSuite の[Company]->[Enable Features]->[SuiteCloud]->[REST Web Services]で、そのための機能を有効化する必要があります。
本製品 はこの接続をSchema 接続プロパティでサポートします。Schema をSuiteQL に設定するだけでサービスにアクセスできます。
SuiteTalk とSuiteQL の違い
SuiteQL はNetSuite からデータをクエリするためのOracle 構文を提供します。SuiteTalk でサポートされているデフォルトサービスは、代わりに、多くのSOAP リクエストを使用して、NetSuite の保存検索とより密接に関連する形式でデータを取得するように設計されています。 つまり、SuiteQL はSuiteTalk よりもはるかに複雑なクエリを扱うことができるということです。例えば、joins、aggregations、group by、order by、およびformulas はすべてSuiteQL を使ってサーバーサイドで処理することができます。 対照的に、SuiteTalk は、一部のjoins とpredicates のみをサポートします。 一般的に、SuiteQL はSQL を処理するサポートがより充実しているため、NetSuite に対してより高速にクエリを実行するためのよりパワフルなオプションです。
メタデータの取り扱い
SuiteQL のメタデータは次の2つの方法で扱われます。Custom Fields / Columns およびNative tables / column です。カスタムフィールドとカラムにはメタデータサービスが含まれており、データを取得するために使用できます。 そのため、IncludeCustomFieldColumns とIncludeCustomRecordTables がtrue に設定されると、このメタデータが自動的に正しく取得される場合があります。
NetSuite には、ネイティブテーブルとカラムについてのメタデータを取得するAPI メソッドは含まれていません。したがって、アカウントテーブルのようなネイティブテーブルでは、ドライバー内でメタデータがハードコードされている必要があります。 不思議なことに、SuiteQL 内で定義されていても、アカウントやロールに特定のテーブルやカラムを表示する権限がない場合、送信されたSuiteQL に問題があったことを示す例外がAPI からスローされます。 これらの例外を回避するために、RowScanDepth 接続プロパティを追加しました。デフォルトは1000で、これは1ページ分のデータです。 この設定を有効にしておくと、接続時にテーブルのリストされたカラムを利用できるようになります。ただし、SuiteQL はフィールドがNULL の場合は返しません。 そのため、アクセスを必要とするフィールドが表示されない可能性があります。このオプションを無効にするにはRowScanDepth を0に設定しますが、データを取得しようとする際にSuiteQL が例外をスローするカラムをリストする可能性を考慮する必要があります。
SuiteQL の制限
NetSuite およびCData ADO.NET Provider for NetSuite 全般の比較的新しい機能として、SuiteQL にはいくつかの制限があります。以下の制限が含まれます。
- INSERT / 更新 / 削除をサポートしていません。SELECT クエリのみサポートされています。
- OAuth / Token ベースの認証のみサポートされています。SuiteQL REST API はユーザー / パスワード認証をサポートしていません。
- SuiteQL では、すべてのOracle 関数がサポートされているわけではありません。
サポートされる関数
以下は、バージョン2020.1 時点でSuiteQL で利用可能な関数のリストです。
- ABS
- ACOS
- ADD_MONTHS
- APPROX_COUNT_DISTINCT
- ASCII
- ASCIISTR
- ASIN
- ATAN
- ATAN2
- AVG
- BFILENAME
- BITAND
- CEIL
- CHARTOROWID
- CHR
- COALESCE
- COMPOSE
- CONCAT
- CORR
- CORR_K
- CORR_S
- COS
- COSH
- COUNT
- COVAR_POP
- COVAR_SAMP
- CURRENT_DATE
- CURRENT_TIMESTAMP
- DECODE
- DECOMPOSE
- DENSE_RANK
- EMPTY_BLOB
- EMPTY_CLOB
- EXP
- EXPR
- FLOOR
- FROM_TZ
- GREATEST
- INITCAP
- INSTR
- LAST_DAY
- LEAST
- LENGTH
- LENGTH2
- LENGTH4
- LENGTHB
- LENGTHC
- LN
- LOCALTIMESTAMP
- LOG
- LOWER
- LPAD
- LTRIM
- MAX
- MEDIAN
- MIN
- MOD
- MONTHS_BETWEEN
- NANVL
- NEW_TIME
- NEXT_DAY
- NLSSORT
- NLS_INITCAP
- NLS_LOWER
- NLS_UPPER
- NULLIF
- NVL
- NVL2
- ORA_HASH
- POWER
- RANK
- REGEXP_INSTR
- REGEXP_REPLACE
- REGEXP_SUBSTR
- REMAINDER
- REPLACE
- ROUND
- ROW_NUMBER
- RPAD
- RTRIM
- SIGN
- SIN
- SINH
- SOUNDEX
- SQRT
- SUBSTR
- SUM
- SYS_EXTRACT_UTC
- TAN
- TANH
- TO_BINARY_DOUBLE
- TO_BINARY_FLOAT
- TO_CHAR
- TO_CLOB
- TO_DATE
- TO_MULTI_BYTE
- TO_NCHAR
- TO_NCLOB
- TO_NUMBER
- TO_SINGLE_BYTE
- TO_TIMESTAMP
- TO_TIMESTAMP_TZ
- TRANSLATE
- TRUNC
- TZ_OFFSET
- UNISTR
- UPPER
- VSIZE
- WIDTH_BUCKET