CData Sync App は、JSON データをデータベース、データレイク、またはデータウェアハウスに継続的にパイプライン化する簡単な方法を提供し、分析、レポート、AI、および機械学習で簡単に利用できるようにします。
JSON コネクタはCData Sync アプリケーションから使用可能で、JSON からデータを取得して、サポートされている任意の同期先に移動できます。
The Sync App models local and remote JSON data sources as bidirectional tables. These can be local JSON files or remote JSON streams: RESTful APIs or file stores hosted on FTP servers or popular cloud storage providers. The Sync App abstracts processing JSON data and connecting to the remote data: HTTP/FTP, SSL/TLS, and authentication: The major authentication schemes are supported, including HTTP Basic, Digest, FTP, NTLM, and OAuth.
CData Sync App は、JSON ストリーミング専用です。
このストリームファイルのコンテンツには、リモートで保存されたJSON ファイルに関連するファイル名やフォルダ名などのメタデータはすべて含まれていません。
ファイルのメタデータとファイルの実際のコンテンツの両方にアクセスする必要がある場合は、CData Sync App は、JSON ファイルがリモートで格納されているサービスの関連ファイルシステムドライバーと併せて使用する必要があります。
以下のファイルシステムドライバーが利用可能です。
保存されているJSON ファイルメタデータに接続するための設定方法については、関連するCData ファイルシステムドライバーのドキュメントを参照してください。
必須プロパティについては、設定タブを参照してください。
通常必須ではない接続プロパティについては、高度な設定タブを参照してください。
CData Sync App を使用すると、ローカルおよびリモートのJSON リソースに接続できます。データソースへの接続に必要なプロパティに加えて、URI プロパティをJSON リソースの場所に設定します。
ConnectionType をLocal に設定します。ローカルファイルは、SELECT\INSERT\UPDATE\DELETE をサポートします。
URI を1つのJSON ファイル、またはJSON ファイルを含むフォルダ:C:\folder1 に設定します。フォルダを指定すると、そのフォルダ内のすべてのJSON ファイルから1つの集計テーブルが生成されることに注意してください。
クラウド上のファイルをINSERT、UPDATE、DELETE する必要がある場合は、そのクラウドサービスに対応するCData Sync App をダウンロードし(ストアドプロシージャでサポートされています)、ローカルファイルの対応するSync App に変更を加え、そのクラウドソース用のストアドプロシージャを使ってファイルをアップロードできます。
例えば、SharePoint 上に格納されたファイルをアップデートしたい場合、CData SharePoint Sync App のDownloadDocument プロシージャを使用してJSON ファイルをダウンロードし、CData JSON Sync App でローカルのJSON ファイルをアップデートして、最後にSharePoint Sync App のUploadDocument プロシージャを使って変更されたファイルをSharePoint にアップロードできます。
URI 接続プロパティの先頭にある一意の接頭辞は、Sync App が対象とするクラウドデータストアを識別するために使用され、残りのパスは目的のフォルダ(1ファイルにつき1テーブル)または単一ファイル(単一テーブル)への相対パスとなります。
Amazon S3 に格納されているJSON リソースを識別するために以下を設定します。
Amazon S3 でホストされているJSON ファイルへの接続および認証について詳しくは、Amazon S3 への接続 を参照してください。
Azure Blob Storage に格納されているJSON リソースを識別するために以下を設定します。
Amazon Blob Storage でホストされているJSON ファイルへの接続および認証について詳しくは、Azure Blob Storage への接続 を参照してください。
Azure Data Lake Storage に格納されているJSON リソースを識別するために以下を設定します。
Azure Data Lake Storage でホストされているJSON ファイルへの接続および認証について詳しくは、Azure Data Lake Storage への接続 を参照してください。
接続するには次のプロパティを設定します。
Azure アクセスキーまたはAzure 共有アクセス署名のいずれかで認証できます。次のいずれか1つを設定してください。
Box に格納されているJSON リソースを識別するために以下を設定します。
Box でホストされているJSON ファイルへの接続および認証について詳しくは、Box への接続 を参照してください。
Dropbox に格納されているJSON リソースを識別するために以下を設定します。
Dropbox でホストされているJSON ファイルへの接続および認証について詳しくは、Dropbox への接続 を参照してください。
Sync App は、FTP サーバーへのプレーンテキスト接続およびSSL/TLS 接続の両方をサポートします。
次の接続プロパティを設定して接続します。
Google Cloud Storage に格納されているJSON リソースを識別するために以下を設定します。
Google Cloud Storage でホストされているJSON ファイルへの接続および認証について詳しくは、Google Cloud Storage への接続 を参照してください。
Google Drive に格納されているJSON リソースを識別するために以下を設定します。
Google Drive でホストされているJSON ファイルへの接続および認証について詳しくは、Google Drive への接続 を参照してください。
HDFS に格納されているJSON リソースを識別するために以下を設定します。
HDFS データソースへの接続に使用できる認証方法は、匿名認証とKerberos 認証の2つがあります。
匿名認証
状況によっては、認証接続プロパティなしでHDFS に接続できます。 そのためには、AuthScheme プロパティをNone(デフォルト)に設定します。
Kerberos を使用した認証
認証資格情報が必要な場合、認証にKerberos を使用することができます。 Kerberos で認証する方法についての詳細は、Kerberos の使用 を参照してください。
HTTP streams に格納されているJSON リソースを識別するために以下を設定します。
HTTP Streams でホストされているJSON ファイルへの接続および認証について詳しくは、HTTP Streams への接続 を参照してください。
IBM Cloud Object Storage に格納されているJSON リソースを識別するために以下を設定します。
IBM Cloud Object Storage でホストされているJSON ファイルへの接続および認証について詳しくは、IBM Object Storage への接続 を参照してください。
OneDrive に格納されているJSON リソースを識別するために以下を設定します。
OneDrive でホストされているJSON ファイルへの接続および認証について詳しくは、OneDrive への接続 を参照してください。
OneLake に格納されているJSON リソースを識別するために以下を設定します。
OneLake でホストされているJSON ファイルへの接続および認証について詳しくは、OneLake への接続 を参照してください。
HMAC で認証するには、次のプロパティを設定します。
SFTP に格納されているJSON リソースを識別するために以下を設定します。
SFTP でホストされているJSON ファイルへの接続および認証について詳しくは、SFTP への接続 を参照してください。
SharePoint Online に格納されているJSON リソースを識別するために以下を設定します。
SharePoint Online でホストされているJSON ファイルへの接続および認証について詳しくは、SharePoint Online への接続 を参照してください。
デフォルトでは、Sync App はサーバーの証明書をシステムの信頼できる証明書ストアと照合してSSL/TLS のネゴシエーションを試みます。別の証明書を指定するには、利用可能なフォーマットについてSSLServerCert プロパティを参照してください。
データソースに接続したら、DataModel を設定して、データ表現とデータ構造をより密接に一致させます。
以下は、Sync App のデフォルトのデータモデリング設定を使用したJSON ファイルまたはストリームへの接続文字列の例です。
| サービスプロバイダー | URI 形式 | 接続例 |
| ローカル | Single File Path (One table) file://localPath/file.json | URI=C:/folder1/file.json; |
| Directory Path (One aggregated table from all files) file://localPath | ||
| HTTP またはHTTPS | http://remoteStream https://remoteStream | URI=http://www.host1.com/streamname1; |
| Amazon S3 | Single File Path (One table) s3://remotePath/file.json | URI=s3://bucket1/folder1/file.json; AWSSecretKey=secret1; AWSRegion=OHIO; |
| Directory Path (One aggregated table from all files) s3://remotePath | ||
| Azure Blob Storage | azureblob://mycontainer/myblob/file.json | URI=azureblob://mycontainer/myblob/file.json; AzureStorageAccount=myAccount; AzureAccessKey=myKey; URI=azureblob://mycontainer/myblob/file.json; AzureStorageAccount=myAccount; AuthScheme=OAuth; |
| Google Drive | Single File Path (One table) gdrive://remotePath/file.json gdrive://SharedWithMe/remotePath/file.json | URI=gdrive://folder1/file.json; AuthScheme=OAuth; URI=gdrive://SharedWithMe/folder1/file.json; AuthScheme=OAuth; |
| Directory Path (One aggregated table from all files) gdrive://remotePath gdrive://SharedWithMe/remotePath | ||
| One Drive | Single File Path (One table) onedrive://remotePath/file.json onedrive://SharedWithMe/remotePath/file.json | URI=onedrive://folder1/file.json; AuthScheme=OAuth; URI=onedrive://SharedWithMe/folder1/file.json; AuthScheme=OAuth; |
| Directory Path (One aggregated table from all files) onedrive://remotePath onedrive://SharedWithMe/remotePath | ||
| Box | Single File Path (One table) box://remotePath/file.json | URI=box://folder1/file.json; AuthScheme=OAuth; |
| Directory Path (One aggregated table from all files) box://remotePath | ||
| Dropbox | Single File Path (One table) dropbox://remotePath/file.json | URI=dropbox://folder1/file.json; AuthScheme=OAuth; OAuthClientId=oauthclientid1; OAuthClientSecret=oauthcliensecret1; CallbackUrl=http://localhost:12345; |
| Directory Path (One aggregated table from all files) dropbox://remotePath | ||
| SharePoint SOAP | Single File Path (One table) sp://remotePath/file.json | URI=sp://Documents/folder1/file.json; User=user1; Password=password1; StorageBaseURL=https://subdomain.sharepoint.com; |
| Directory Path (One aggregated table from all files) sp://remotePath | ||
| SharePoint REST | Single File Path (One table) sprest://remotePath/file.json | URI=sprest://Documents/folder1/file.json; AuthScheme=OAuth; StorageBaseURL=https://subdomain.sharepoint.com; |
| Directory Path (One aggregated table from all files) sprest://remotePath | ||
| FTP またはFTPS | Single File Path (One table) ftp://server:port/remotePath/file.json ftps://server:port/remotepath/file.json | URI=ftps://localhost:990/folder1/file.json; User=user1; Password=password1; |
| Directory Path (One aggregated table from all files) ftp://server:port/remotePath ftps://server:port/remotepath; | ||
| SFTP | Single File Path (One table) sftp://server:port/remotePath/file.json | URI=sftp://127.0.0.1:22/folder1/file.json; User=user1; Password=password1; URI=sftp://127.0.0.1:22/folder1/file.json; SSHAuthmode=PublicKey; SSHClientCert=myPrivateKey |
| Directory Path (One aggregated table from all files) sftp://server:port/remotePath | ||
| Azure Data Lake Store Gen1 | adl://remotePath/file.json adl://Account.azuredatalakestore.net@remotePath/file.json | URI=adl://folder1/file.json; AuthScheme=OAuth; AzureStorageAccount=myAccount; AzureTenant=tenant; URI=adl://myAccount.azuredatalakestore.net@folder1/file.json; AuthScheme=OAuth; AzureTenant=tenant; |
| Azure Data Lake Store Gen2 | abfs://myfilesystem/remotePath/file.json abfs://[email protected]/remotepath/file.json | URI=abfs://myfilesystem/folder1/file.json; AzureStorageAccount=myAccount; AzureAccessKey=myKey; URI=abfs://[email protected]/folder1/file.json; AzureAccessKey=myKey; |
| Azure Data Lake Store Gen2 with SSL | abfss://myfilesystem/remotePath/file.json abfss://[email protected]/remotepath/file.json | URI=abfss://myfilesystem/folder1/file.json; AzureStorageAccount=myAccount; AzureAccessKey=myKey; URI=abfss://[email protected]/folder1/file.json; AzureAccessKey=myKey; |
| Wasabi | Single File Path (One table) wasabi://bucket1/remotePath/file.json | URI=wasabi://bucket/folder1/file.json; AccessKey=token1; SecretKey=secret1; Region='us-west-1'; |
| Directory Path (One aggregated table from all files) wasabi://bucket1/remotePath | ||
| Google Cloud Storage | Single File Path (One table) gs://bucket/remotePath/file.json | URI=gs://bucket/folder1/file.json; AuthScheme=OAuth; ProjectId=test; |
| Directory Path (One aggregated table from all files) gs://bucket/remotePath | ||
| Oracle Cloud Storage | Single File Path (One table) os://bucket/remotePath/file.json | URI=os://bucket/folder1/file.json; AccessKey='myKey'; SecretKey='mySecretKey'; OracleNameSpace='myNameSpace' Region='us-west-1'; |
| Directory Path (One aggregated table from all files) os://bucket/remotePath | ||
| Azure File | Single File Path (One table) azurefile://fileShare/remotePath/file.json | URI=azurefile://bucket/folder1/file.json; AzureStorageAccount='myAccount'; AzureAccessKey='mySecretKey'; URI=azurefile://bucket/folder1/file.json; AzureStorageAccount='myAccount'; AzureSharedAccessSignature='mySharedAccessSignature'; |
| Directory Path (One aggregated table from all files) azurefile://fileShare/remotePath | ||
| IBM Object Storage Source | Single File Path (One table) ibmobjectstorage://bucket1/remotePath/file.json | URI=ibmobjectstorage://bucket/folder1/file.json; AuthScheme='HMAC'; AccessKey=token1; SecretKey=secret1; Region='eu-gb'; URI=ibmobjectstorage://bucket/folder1/file.json; ApiKey=key1; Region='eu-gb'; AuthScheme=OAuth; InitiateOAuth=GETANDREFRESH; |
| Directory Path (One aggregated table from all files) ibmobjectstorage://bucket1/remotePath | ||
| Hadoop Distributed File System | Single File Path (One table) webhdfs://host:port/remotePath/file.json | URI=webhdfs://host:port/folder1/file.json |
| Directory Path (One aggregated table from all files) webhdfs://host:port/remotePath | ||
| Secure Hadoop Distributed File System | Single File Path (One table) webhdfss://host:port/remotePath/file.json | URI=webhdfss://host:port/folder1/file.json |
| Directory Path (One aggregated table from all files) webhdfss://host:port/remotePath |
DataModel プロパティは、データをテーブルにどのように表現するかを制御するプロパティです。
データへの接続には、以下を設定してください。
JSON への接続に使用できる認証方法は、以下を含めいくつかあります。
アカウントのルートクレデンシャルで認証するには、次の設定パラメータを設定します。
Note: この認証スキームの使用は、簡単なテスト以外ではAmazon では推奨されていません。アカウントのルート認証情報はユーザーの完全な権限を持つため、これが最も安全性の低い認証方法になります。
多要素認証が必要な場合は、以下を指定します。
Note: 一時的な認証情報の有効期間(デフォルトは3600秒)を制御するには、TemporaryTokenDuration プロパティを設定します。
AuthScheme をAwsEC2Roles に設定します。
EC2 インスタンスからSync App を使用していて、そのインスタンスにIAM ロールが割り当てられている場合は、 認証にIAM ロールを使用できます。Sync App は自動的にIAM ロールの認証情報を取得し、それらを使って認証するため、AWSAccessKey およびAWSSecretKey を指定する必要はありません。
認証にIAM ロールも使用している場合は、さらに以下を指定する必要があります。
JSON Sync App は、IMDSv2 をサポートしています。IMDSv1 とは異なり、新バージョンでは認証トークンが必須です。エンドポイントおよびレスポンスは、両バージョンで同じです。
IMDSv2 では、JSON Sync App はまずIMDSv2 メタデータトークンの取得を試み、それを使用してAWS メタデータエンドポイントを呼び出します。トークンを取得できない場合、Sync App はIMDSv1 を使用します。
AuthScheme をAwsWebIdentity に設定します。
Web ID でロールを割り当てられるように構成されたコンテナ(OpenID Provider を持つEKS クラスタ内のPod など)からSync App を使用する場合、またはIAM ロールに関連付けられたWeb ID プロバイダーで認証してID トークンを取得する場合は、Web ID トークンとIAM ロールの情報を一時的なセキュリティ認証情報と交換し、AWS サービスを認証してアクセスすることができます。コンテナの環境変数にAWS_ROLE_ARN とAWS_WEB_IDENTITY_TOKEN_FILE が指定されている場合、Sync App は自動的に認証情報を取得します。または、AWSRoleARN とAWSWebIdentityToken の両方を指定し、AssumeRoleWithWebIdentity API 操作を実行して認証することもできます。
AuthScheme をAwsIAMRoles に設定します。
多くの場合、認証にはAWS ルートユーザーのダイレクトなセキュリティ認証情報ではなく、IAM ロールを使用することをお勧めします。AWS ルートユーザーのAWSAccessKey およびAWSSecretKey を指定している場合、ロールは使用できない場合があります。
AWS ロールとして認証するには、次のプロパティを設定します。
多要素認証が必要な場合は、以下を指定します。
Note: 一時的な認証情報の有効期間(デフォルトは3600秒)を制御するには、TemporaryTokenDuration プロパティを設定します。
ADFS に接続するには、AuthScheme をADFS に設定し、次のプロパティを設定します。
ADFS への認証を行うには、次のSSOProperties を設定します。
接続文字列の例:
AuthScheme=ADFS;User=username;Password=password;SSOLoginURL='https://sts.company.com';SSOProperties='RelyingParty=https://saml.salesforce.com';
ADFS 統合フローでは、現在ログインしているWindows ユーザーの資格情報で接続します。 ADFS 統合フローを使用するには、User およびPassword を指定せず、それ以外の設定は上記のADFS ガイドと同じ手順を実行してください。
Okta に接続するには、AuthScheme をOkta に設定し、次のプロパティを設定します。
Okta クライアントリクエストコンテキストをオーバーライドする信頼されたアプリケーションまたはプロキシを使用する場合、またはMFA を設定している場合は、Okta を使用して認証するためにSSOProperties を組み合わせて使用する必要があります。必要に応じて、以下のいずれかを設定します。
接続文字列の例:
AuthScheme=Okta;SSOLoginURL='https://example.okta.com/home/appType/0bg4ivz6cJRZgCz5d6/46';User=oktaUserName;Password=oktaPassword;
PingFederate に接続するには、AuthScheme をPingFederate に設定し、次のプロパティを設定します。
SSOLoginURL 用の相互SSL 認証(WS-Trust STS エンドポイント)を有効化するには、次の SSOProperties を設定します。
接続文字列の例:
authScheme=pingfederate;SSOLoginURL=https://mycustomserver.com:9033/idp/sts.wst;SSOExchangeUrl=https://us-east-1.signin.aws.amazon.com/platform/saml/acs/764ef411-xxxxxx;user=admin;password=PassValue;AWSPrincipalARN=arn:aws:iam::215338515180:saml-provider/pingFederate;AWSRoleArn=arn:aws:iam::215338515180:role/SSOTest2;
一時クレデンシャルで認証するには、次を設定します。
Sync App は、一時クレデンシャルの有効期間中、長期的な認証情報(IAM ユーザー認証情報など)によって提供されるものと同じ権限を使用してリソースをリクエストできるようになりました。
一時クレデンシャルおよびIAM ロールの両方を使用して認証するには、上記のすべてのパラメータを設定し、さらに以下のパラメータを指定します。
多要素認証が必要な場合は、以下を指定します。
Note: 一時的な認証情報の有効期間(デフォルトは3600秒)を制御するには、TemporaryTokenDuration プロパティを設定します。
認証にはクレデンシャルファイルを使用することができます。AccessKey/SecretKey 認証、一時クレデンシャル、ロール認証、またはMFA に関連するすべての設定が使用できます。 これを行うには、次のプロパティを設定して認証します。
この設定では、2つの別個のAzure AD アプリケーションが必要になります。
Azure AD に接続するには、AuthScheme をAzureAD に設定し、次のプロパティを設定します。
Azure AD を認証するには、これらのSSOProperties を設定します。
接続文字列の例:
AuthScheme=AzureAD;OAuthClientId=3ea1c786-d527-4399-8c3b-2e3696ae4b48;OauthClientSecret=xxx;CallbackUrl=https://localhost:33333;SSOProperties='Resource=https://signin.aws.amazon.com/saml;AzureTenant=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx';
AzureBlob ユーザーの認証情報を取得するには、以下の手順に従ってください。
AzureStorageAccount をAzure Blob Storage アカウント名に設定します。
Azure Blob Storage への認証には、アクセスキー、Shared Access Signature(SAS)、Azure AD ユーザー、Azure MSI、またはAzure サービスプリンシパルを使用できます。
Azure アクセスキーで認証するには、以下のように設定します。
AuthScheme は、すべてのユーザーアカウントフローでAzureAD に設定する必要があります。
Azure サービスプリンシパルとしての認証は、OAuth クライアントクレデンシャルフローを介して処理されます。直接のユーザー認証は行われません。代わりに、クレデンシャルはアプリケーション自体のためだけに作成されます。アプリで実行されるすべてのタスクは、デフォルトユーザーコンテキストなしで実行されます。リソースへのアプリケーションのアクセスは、割り当てられたロールの権限によって制御されます。
AzureAD アプリとAzure サービスプリンシパルの作成
Azure サービスプリンシパルを使用して認証する場合、Azure AD テナントにAzure AD アプリケーションを作成して登録する必要があります。詳しくは、Azure AD アプリケーションの作成 を参照してください。
portal.azure.com の[アプリの登録]で[API のアクセス許可]に移動し、Microsoft Graph アクセス許可を選択します。アクセス許可には2つの異なるアクセス許可セットがあります。委任されたアクセス許可とアプリケーションの許可です。クライアントの資格情報認証時に使用されるアクセス許可は、[アプリケーションの許可]の下にあります。
アプリケーションへのロールの割り当て
サブスクリプションのリソースにアクセスするには、アプリケーションにロールを割り当てる必要があります。
クライアントシークレット
次の接続プロパティを設定します。
証明書
次の接続プロパティを設定します。
これで接続する準備が整いました。クライアント資格情報での認証は、他の接続同様に自動的に行われますが、ユーザーにプロンプトするウィンドウは表示されません。ユーザーコンテキストがないため、ブラウザのポップアップは必要ないからです。接続が行われ、内部的に処理されます。
Azure Data Lake Storage のアクセス許可を持つAzure VM で接続する場合は、AuthScheme をAzureMSI に設定します。
クライアントシークレットではなくサービスプリンシパルで認証したい場合は、クライアント証明書で認証できます。認証するには以下のように設定します。
カスタムAzureAD アプリケーションには、AzureAD とAzure サービスプリンシパルを使用するAzureAD の2種類があります。いずれもOAuth ベースです。
以下の場合はユーザー自身のAzureAD アプリケーションクレデンシャルを選択できます。
下記の手順に従って、アプリケーションのAzureAD 値、OAuthClientId およびOAuthClientSecret を取得します。
Azure サービスプリンシパルを使用して認証する場合は、カスタムAzureAD アプリケーションと必要なリソースにアクセスできるサービスプリンシパル両方の作成が必要です。次の手順に従って、カスタムAzureAD アプリケーションを作成し、Azure サービスプリンシパル認証用の接続プロパティを取得します。
下記の手順に従って、アプリケーションのAzureAD 値を取得します。
AzureStorageAccount をAzure Data Lake Storage アカウント名に設定します。
Azure Data Lake Storage への認証には、アクセスキー、Shared Access Signature(SAS)、Azure AD ユーザー、Azure MSI、またはAzure サービスプリンシパルを使用できます。
Azure アクセスキーで認証するには、以下のように設定します。
AuthScheme は、すべてのユーザーアカウントフローでAzureAD に設定する必要があります。
Azure サービスプリンシパルとしての認証は、OAuth クライアントクレデンシャルフローを介して処理されます。直接のユーザー認証は行われません。代わりに、クレデンシャルはアプリケーション自体のためだけに作成されます。アプリで実行されるすべてのタスクは、デフォルトユーザーコンテキストなしで実行されます。リソースへのアプリケーションのアクセスは、割り当てられたロールの権限によって制御されます。
AzureAD アプリとAzure サービスプリンシパルの作成
Azure サービスプリンシパルを使用して認証する場合、Azure AD テナントにAzure AD アプリケーションを作成して登録する必要があります。詳しくは、Azure AD アプリケーションの作成 を参照してください。
portal.azure.com の[アプリの登録]で[API のアクセス許可]に移動し、Microsoft Graph アクセス許可を選択します。アクセス許可には2つの異なるアクセス許可セットがあります。委任されたアクセス許可とアプリケーションの許可です。クライアントの資格情報認証時に使用されるアクセス許可は、[アプリケーションの許可]の下にあります。
アプリケーションへのロールの割り当て
サブスクリプションのリソースにアクセスするには、アプリケーションにロールを割り当てる必要があります。
クライアントシークレット
次の接続プロパティを設定します。
証明書
次の接続プロパティを設定します。
これで接続する準備が整いました。クライアント資格情報での認証は、他の接続同様に自動的に行われますが、ユーザーにプロンプトするウィンドウは表示されません。ユーザーコンテキストがないため、ブラウザのポップアップは必要ないからです。接続が行われ、内部的に処理されます。
Azure Data Lake Storage のアクセス許可を持つAzure VM で接続する場合は、AuthScheme をAzureMSI に設定します。
クライアントシークレットではなくサービスプリンシパルで認証したい場合は、クライアント証明書で認証できます。認証するには以下のように設定します。
カスタムAzureAD アプリケーションには、AzureAD とAzure サービスプリンシパルを使用するAzureAD の2種類があります。いずれもOAuth ベースです。
以下の場合はユーザー自身のAzureAD アプリケーションクレデンシャルを選択できます。
下記の手順に従って、アプリケーションのAzureAD 値OAuthClientId およびOAuthClientSecret を取得します。
Azure サービスプリンシパルを使用して認証する場合は、カスタムAzureAD アプリケーションと必要なリソースにアクセスできるサービスプリンシパル両方の作成が必要です。次の手順に従って、カスタムAzureAD アプリケーションを作成し、Azure サービスプリンシパル認証用の接続プロパティを取得します。
下記の手順に従って、アプリケーションのAzureAD 値を取得します。
Box への接続には、OAuth 認証標準を使用します。ユーザーアカウントまたはサービスアカウントで認証できます。組織全体のアクセススコープをSync App に許可するには、サービスアカウントが必要です。下記で説明するとおり、Sync App はこれらの認証フローをサポートします。
AuthScheme は、すべてのユーザーアカウントフローでOAuth に設定する必要があります。
この方法で認証するには、AuthScheme をOAuthJWT に設定します。
サービスアカウントには、ブラウザによるユーザー認証なしのサイレント認証があります。また、サービスアカウントを使用して、エンタープライズ全体のアクセススコープをSync App に委任することもできます。
このフローでは、OAuth アプリケーションを作成する必要があります。アプリの作成および認可については、カスタムOAuth アプリの作成 を参照してください。これでサービスアカウントにアクセス権があるBox データに接続できます。
次の接続プロパティを設定して、接続してください。
独自の OAuth アプリケーション認証情報を使用することもできます。
Box エンタープライズ管理コンソールで:
Note: Box は、セキュリティ上の理由から秘密キーのバックアップを行いません。公開 / 非公開JSON ファイルのバックアップに注意してください。秘密キーを忘れた場合は、キーペア全体をリセットする必要があります。
openssl genrsa -des3 -out private.pem 2048 openssl rsa -in private.pem -outform PEM -pubout -out public.pem
Note: Windows 環境でOpenSSL を実行するには、Cygwin パッケージをインストールします。
アプリケーションの作成と登録が完了したら、メインメニューから設定をクリックして設定にアクセスできます。 表示されるリダイレクトURI、クライアントID およびクライアントシークレットを控えておきます。これらの値は後で必要になります。
JWT アクセススコープを変更する場合は、エンタープライズ管理コンソールでアプリケーションを再認可する必要があります。
Dropbox はOAuth 認証標準を利用しています。
CData の埋め込みOAuth アプリを使うか、カスタムOAuth アプリの作成 のどちらかを選択してください。
埋め込みアプリは以下のスコープを含みます。
以下の場合はユーザー自身のOAuth アプリケーションクレデンシャルを選択できます。
JSON のアプリ設定でこれ以上値を指定する必要はありません。
ProjectId プロパティを接続するプロジェクトのId に設定します。
Sync App は、認証にユーザーアカウントおよびGCP インスタンスアカウントの使用をサポートします。
以下のセクションでは、Google Cloud Storage の利用可能な認証スキームについて説明します。
AuthScheme は、すべてのユーザーアカウントフローでOAuth に設定する必要があります。
OAuth アクセストークンの取得
次の接続プロパティを設定し、OAuthAccessToken を取得します。
続いてストアドプロシージャを呼び出し、OAuth 交換を完了します。
アクセストークンとリフレッシュトークンを取得すると、データに接続し、OAuth アクセストークンを自動または手動でリフレッシュすることができるようになります。
OAuth アクセストークンの自動リフレッシュ
ドライバーがOAuth アクセストークンを自動的にリフレッシュするようにするには、最初のデータ接続で次のように設定します。
OAuth アクセストークンの手動リフレッシュ
データ接続時に手動でOAuth アクセストークンをリフレッシュするために必要な値は、OAuth リフレッシュトークンのみです。
GetOAuthAccessToken によって返されたExpiresIn パラメータ値が経過した後に、RefreshOAuthAccessToken ストアドプロシージャを使用し、手動でOAuthAccessToken をリフレッシュします。次の接続プロパティを設定します。
次に、RefreshOAuthAccessToken を呼び出し、OAuthRefreshToken にGetOAuthAccessToken によって返されたOAuth リフレッシュトークンを指定します。新しいトークンが取得できたら、OAuthAccessToken プロパティにRefreshOAuthAccessToken によって返された値を設定し、新しい接続をオープンします。
最後に、OAuth リフレッシュトークンを保存し、OAuth アクセストークンの有効期限が切れた後に手動でリフレッシュできるようにします。
オプション1:Verifier code を取得および交換
Verifier code を取得するには、OAuth Authorization URL で認証する必要があります。
インターネットブラウザに対応したマシンから認証してOAuthVerifier 接続プロパティを取得する方法は次のとおりです。
ヘッドレスマシンでは、次の接続プロパティを設定してOAuth 認証値を取得します。
OAuth 設定ファイルが生成されたら、以下のように接続プロパティをリセットする必要があります。
オプション2:OAuth 設定を転送
ヘッドレスマシンでの接続に先立ち、インターネットブラウザに対応したデバイスでドライバとの接続を作成し、インストールする必要があります。上述の「デスクトップアプリケーション」の説明に従って、接続プロパティを設定します。
「デスクトップアプリケーション」の手順が完了すると、生成された認証値は、OAuthSettingsLocation で指定された場所に暗号化されて書き込まれます。デフォルトのファイル名はOAuthSettings.txt です。
接続が正常にテストされたら、OAuth 設定ファイルをヘッドレスマシンにコピーします。
ヘッドレスマシンで、次の接続プロパティを設定し、データに接続します。
GCP 仮想マシン上で実行している場合は、Sync App は仮想マシンに関連付けられたサービスアカウントを使用して認証できます。 このモードを使用するには、AuthScheme をGCPInstanceAccount に設定します。
(OAuthAccessToken およびその他の設定パラメータを取得および設定する方法についての情報は、「JSON への接続」の デスクトップ認証セクションを参照してください。)
ただし、Web 経由で接続するには、カスタムOAuth アプリケーションの作成が必要です。また、カスタムOAuth アプリケーションは、一般的に使用される3つの認証フローをすべてシームレスにサポートするため、これらの認証フロー用にカスタムOAuth アプリケーションを作成(独自のOAuth アプリケーションクレデンシャルを使用)することもできます。
カスタムOAuth アプリケーションは、次のような場合に有用です。
以下のセクションでは、Directory API を有効化し、ユーザーアカウント(OAuth)およびサービスアカウント(OAuth / JWT)用のカスタムOAuth アプリケーションを作成する方法について説明します。
AuthScheme がOAuth であり、Web アプリケーション上で認証する必要があるユーザーの場合は、必ずカスタムOAuth アプリケーションを作成する必要があります。 (デスクトップおよびヘッドレスフローでのカスタムOAuth アプリケーションの作成は任意です。)
以下の手順に従います。
Note: クライアントシークレットはGoogle Cloud コンソールからアクセス可能です。
新しいサービスアカウントを作成するには:
サービスアカウントフローを完了させるには、Google Cloud Console で秘密キーを生成します。サービスアカウントフローにおいて、ドライバーはOAuthAccessToken へのJSON Web Token (JWT) を交換します。秘密キーはJWT の署名に必要です。ドライバーには、サービスアカウントに付与されているのと同じ権限が与えられます。
Sync App は、認証にユーザーアカウントおよびGCP インスタンスアカウントの使用をサポートします。
以下のセクションでは、Google Drive の利用可能な認証スキームについて説明します。
AuthScheme は、すべてのユーザーアカウントフローでOAuth に設定する必要があります。
GCP 仮想マシン上で実行している場合は、Sync App は仮想マシンに関連付けられたサービスアカウントを使用して認証できます。 このモードを使用するには、AuthScheme をGCPInstanceAccount に設定します。
(OAuthAccessToken およびその他の設定パラメータを取得および設定する方法についての情報は、「JSON への接続」の デスクトップ認証セクションを参照してください。)
ただし、Web 経由で接続するには、カスタムOAuth アプリケーションの作成が必要です。また、カスタムOAuth アプリケーションは、一般的に使用される3つの認証フローをすべてシームレスにサポートするため、これらの認証フロー用にカスタムOAuth アプリケーションを作成(独自のOAuth アプリケーションクレデンシャルを使用)することもできます。
カスタムOAuth アプリケーションは、次のような場合に有用です。
以下のセクションでは、Directory API を有効化し、ユーザーアカウント(OAuth)およびサービスアカウント(OAuth / JWT)用のカスタムOAuth アプリケーションを作成する方法について説明します。
AuthScheme がOAuth であり、Web アプリケーション上で認証する必要があるユーザーの場合は、必ずカスタムOAuth アプリケーションを作成する必要があります。 (デスクトップおよびヘッドレスフローでのカスタムOAuth アプリケーションの作成は任意です。)
以下の手順に従います。
Note: クライアントシークレットはGoogle Cloud コンソールからアクセス可能です。
新しいサービスアカウントを作成するには:
サービスアカウントフローを完了させるには、Google Cloud Console で秘密キーを生成します。サービスアカウントフローにおいて、ドライバーはOAuthAccessToken へのJSON Web Token (JWT) を交換します。秘密キーはJWT の署名に必要です。ドライバーには、サービスアカウントに付与されているのと同じ権限が与えられます。
Sync App は、HTTP(S) ストリームに格納されたJSON データへの接続を汎用的にサポートします。
ユーザー / パスワード、Digest アクセス、OAuth、OAuthJWT、OAuth PASSWORD フローなど、複数の認証方式に対応しています。
また、認証設定のないストリームに接続することも可能です。
認証なしでHTTP(S)ストリームに接続するには、AuthScheme 接続プロパティをNone に設定します。
接続するには以下を設定します。
接続するには以下を設定します。
OAuth では認証するユーザーにブラウザでJSON との通信を要求します。次のセクションで説明するとおり、Sync App はさまざまな方法でこれをサポートします。
次の手順を実行する前に、操作したいJSON データを持つサービスにOAuth アプリを登録する必要があります。
ほとんどのサービスではカスタムアプリケーションを作成する場合、開発者登録をしてサービスのUI でアプリを作成する必要があります。
ただし、すべてのサービスに当てはまるわけではありません。アプリの作成をサービスプロバイダーに依頼しなければならない場合もあります。どんな場合でも、OAuthClientId、OAuthClientSecret、およびCallbackURL の値を取得する必要があります。
AuthScheme をOAuthJWT に設定します。
Sync App は、ユーザーが双方向のサインオンを実行できない状況で、認可グラントとしてのJWT の使用をサポートします。 次の接続プロパティを設定して、接続してください。
JWT 署名のアルゴリズムを直接設定できないことに注意してください。Sync App は、RS256 アルゴリズムにのみ対応しています。
Sync App は以下のフィールドを含むJWT を構築してOAuthAccessTokenURL にアクセストークンを送信します。
AuthScheme:OAuthPassword に設定。
OAuth では認証するユーザーにブラウザでJSON との通信を要求します。次のセクションで説明するとおり、Sync App はさまざまな方法でこれをサポートします。
次の手順を実行する前に、操作したいJSON データを持つサービスにOAuth アプリを登録する必要があります。
ほとんどのサービスではカスタムアプリケーションを作成する場合、開発者登録をしてサービスのUI でアプリを作成する必要があります。
ただし、すべてのサービスに当てはまるわけではありません。アプリの作成をサービスプロバイダーに依頼しなければならない場合もあります。どんな場合でも、OAuthClientId、OAuthClientSecret、およびCallbackURL の値を取得する必要があります。
次の接続プロパティを設定して、接続してください。
IBM Cloud アカウントにCloud Object Storage がまだない場合は、以下の手順に従ってアカウントにSQL Query のインスタンスをインストールできます。
IBM Cloud Object Storage に接続するにはApiKey が必要です。これは次のようにして取得できます。
Region をIBM インスタンスリージョンに設定します。
HMAC またはOAuth のいずれかを使用して、IBM Cloud Object Storage への認証ができます。
次のプロパティを設定して認証します。
次に例を示します。ConnectionType=IBM Object Storage Source;URI=ibmobjectstorage://bucket1/folder1; AccessKey=token1; SecretKey=secret1; Region=eu-gb;
OAuth 認証を使用して認証するには以下を設定します。
ConnectionType=IBM Object Storage Source;URI=ibmobjectstorage://bucket1/folder1; ApiKey=key1; Region=eu-gb; AuthScheme=OAuth; InitiateOAuth=GETANDREFRESH;
接続すると、Sync App がOAuth プロセスを完了します。
OneDrive への認証には、Azure AD ユーザー、MSI 認証、Azure サービスプリンシパルを使用できます。
AuthScheme は、すべてのユーザーアカウントフローでAzureAD に設定する必要があります。
Azure サービスプリンシパルとしての認証は、OAuth クライアントクレデンシャルフローを介して処理されます。直接のユーザー認証は行われません。代わりに、クレデンシャルはアプリケーション自体のためだけに作成されます。アプリで実行されるすべてのタスクは、デフォルトユーザーコンテキストなしで実行されます。リソースへのアプリケーションのアクセスは、割り当てられたロールの権限によって制御されます。
AzureAD アプリとAzure サービスプリンシパルの作成
Azure サービスプリンシパルを使用して認証する場合、Azure AD テナントにAzure AD アプリケーションを作成して登録する必要があります。詳しくは、Azure AD アプリケーションの作成 を参照してください。
portal.azure.com の[アプリの登録]で[API のアクセス許可]に移動し、Microsoft Graph アクセス許可を選択します。アクセス許可には2つの異なるアクセス許可セットがあります。委任されたアクセス許可とアプリケーションの許可です。クライアントの資格情報認証時に使用されるアクセス許可は、[アプリケーションの許可]の下にあります。
アプリケーションへのロールの割り当て
サブスクリプションのリソースにアクセスするには、アプリケーションにロールを割り当てる必要があります。
クライアントシークレット
次の接続プロパティを設定します。
証明書
次の接続プロパティを設定します。
これで接続する準備が整いました。クライアント資格情報での認証は、他の接続同様に自動的に行われますが、ユーザーにプロンプトするウィンドウは表示されません。ユーザーコンテキストがないため、ブラウザのポップアップは必要ないからです。接続が行われ、内部的に処理されます。
Azure Data Lake Storage のアクセス許可を持つAzure VM で接続する場合は、以下AuthScheme をAzureMSI に設定します。
クライアントシークレットではなくサービスプリンシパルで認証したい場合は、クライアント証明書で認証できます。認証するには以下のように設定します。
カスタムAzureAD アプリケーションには、AzureAD とAzure サービスプリンシパルを使用するAzureAD の2種類があります。いずれもOAuth ベースです。
以下の場合はユーザー自身のAzureAD アプリケーションクレデンシャルを選択できます。
下記の手順に従って、アプリケーションのAzureAD 値OAuthClientId およびOAuthClientSecret を取得します。
Azure サービスプリンシパルを使用して認証する場合は、カスタムAzureAD アプリケーションと必要なリソースにアクセスできるサービスプリンシパル両方の作成が必要です。次の手順に従って、カスタムAzureAD アプリケーションを作成し、Azure サービスプリンシパル認証用の接続プロパティを取得します。
下記の手順に従って、アプリケーションのAzureAD 値を取得します。
OneLake への認証には、Azure AD ユーザー、Azure MSI、またはAzure サービスプリンシパルを使用できます。
AuthScheme は、すべてのユーザーアカウントフローでAzureAD に設定する必要があります。
Azure サービスプリンシパルとしての認証は、OAuth クライアントクレデンシャルフローを介して処理されます。直接のユーザー認証は行われません。代わりに、クレデンシャルはアプリケーション自体のためだけに作成されます。アプリで実行されるすべてのタスクは、デフォルトユーザーコンテキストなしで実行されます。リソースへのアプリケーションのアクセスは、割り当てられたロールの権限によって制御されます。
AzureAD アプリとAzure サービスプリンシパルの作成
Azure サービスプリンシパルを使用して認証する場合、Azure AD テナントにAzure AD アプリケーションを作成して登録する必要があります。詳しくは、Azure AD アプリケーションの作成 を参照してください。
portal.azure.com の[アプリの登録]で[API のアクセス許可]に移動し、Microsoft Graph アクセス許可を選択します。アクセス許可には2つの異なるアクセス許可セットがあります。委任されたアクセス許可とアプリケーションの許可です。クライアントの資格情報認証時に使用されるアクセス許可は、[アプリケーションの許可]の下にあります。
アプリケーションへのロールの割り当て
サブスクリプションのリソースにアクセスするには、アプリケーションにロールを割り当てる必要があります。
クライアントシークレット
次の接続プロパティを設定します。
証明書
次の接続プロパティを設定します。
これで接続する準備が整いました。クライアント資格情報での認証は、他の接続同様に自動的に行われますが、ユーザーにプロンプトするウィンドウは表示されません。ユーザーコンテキストがないため、ブラウザのポップアップは必要ないからです。接続が行われ、内部的に処理されます。
Azure Data Lake Storage のアクセス許可を持つAzure VM で接続する場合は、AuthScheme をAzureMSI に設定します。
クライアントシークレットではなくサービスプリンシパルで認証したい場合は、クライアント証明書で認証できます。認証するには以下のように設定します。
カスタムAzureAD アプリケーションには、AzureAD とAzure サービスプリンシパルを使用するAzureAD の2種類があります。いずれもOAuth ベースです。
以下の場合、独自のAzureAD アプリケーション認証情報を使用することもできます。
下記の手順に従って、アプリケーションのAzureAD 値OAuthClientId およびOAuthClientSecret を取得します。
Azure サービスプリンシパルを使用して認証する場合は、カスタムAzureAD アプリケーションと必要なリソースにアクセスできるサービスプリンシパル両方の作成が必要です。次の手順に従って、カスタムAzureAD アプリケーションを作成し、Azure サービスプリンシパル認証用の接続プロパティを取得します。
下記の手順に従って、アプリケーションのAzureAD 値を取得します。
以下の手順に従って、ワークスペースにサービスプリンシパルを追加します。
SFTP に認証するには、ユーザーとパスワード、またはSSH 証明書を使用します。さらに、認証なしでの接続が有効なSFTP サーバーに接続することもできます。
サーバーが認証なしでの接続に対応している場合、接続するには、SSHAuthMode をNone に設定します。
SFTP サーバーに紐づいているユーザー資格情報を入力します。
接続するには以下を設定します。
| サービスプロバイダ | Okta | OneLogin | ADFS | AzureAD |
| Amazon S3 | Y | Y | Y | |
| Azure Blob Storage | ||||
| Azure Data Lake Store Gen1 | ||||
| Azure Data Lake Store Gen2 | ||||
| Azure Data Lake Store Gen2 with SSL | ||||
| Google Drive | ||||
| OneDrive | ||||
| Box | ||||
| Dropbox | ||||
| SharePoint Online SOAP | Y | Y | Y | |
| SharePoint Online REST | ||||
| Wasabi | ||||
| Google Cloud Storage | ||||
| Oracle Cloud Storage | ||||
| Azure File |
Azure AD の設定
この構成の背景にあるメインテーマはOAuth 2.0 On-Behalf-Of flow です。 これにはAzure AD アプリケーションが2つ必要です。
"Azure AD テストユーザーの割り当て" の手順は、ユーザーを割り当てる際にAWS ロールを選択できるように、プロビジョニング後まで保存しておきます。
CData ドライバーの共通プロパティ
次のSSOProperties がAzure Active Directory への認証に必要です。すべてのサービスプロバイダーに指定する必要があります。
OAuth 2.0 On-Behalf-Of フローからSSO SAML レスポンスを取得するので、次のOAuth 接続プロパティを指定する必要があります。
Amazon S3
Amazon S3 サービスプロバイダーに接続するときは、共通プロパティに加えて、次のプロパティを指定する必要があります。
AuthScheme=AzureAD;InitiateOAuth=GETANDREFRESH;OAuthClientId=d593a1d-ad89-4457-872d-8d7443aaa655;OauthClientSecret=g9-oy5D_rl9YEKfN-45~3Wm8FgVa2F;SSOProperties='Tenant=94be7-edb4-4fda-ab12-95bfc22b232f;Resource=https://signin.aws.amazon.com/saml;';AWSRoleARN=arn:aws:iam::2153385180:role/AWS_AzureAD;AWSPrincipalARN=arn:aws:iam::215515180:saml-provider/AzureAD;
OneLogin の設定
特定のプロバイダーへのシングルサインオン処理に使用するアプリケーションを、作成する必要があります。
SharePoint SOAP
以下のプロパティは、SharePoint SOAP サービスプロバイダーに接続する際には指定する必要があります。
AuthScheme='OneLogin';User=test;Password=test;SSOProperties='Domain=test.cdata;';
Okta の設定
特定のプロバイダーへのシングルサインオン処理に使用するアプリケーションを、作成する必要があります。
SharePoint SOAP
以下のプロパティは、SharePoint SOAP サービスプロバイダーに接続する際には指定する必要があります。
AuthScheme='Okta';User=test;Password=test;SSOProperties='Domain=test.cdata;';
Amazon S3
以下のプロパティは、Amazon S3サービスプロバイダーに接続する際には指定する必要があります。
AuthScheme=Okta;User=OktaUser;Password=OktaPassword;SSOLoginURL='https://{subdomain}.okta.com/home/amazon_aws/0oan2hZLgQiy5d6/272';
ADFS の設定
特定のプロバイダーへのシングルサインオン処理に使用するアプリケーションを、作成する必要があります。
SharePoint SOAP
以下のプロパティは、SharePoint SOAP サービスプロバイダーに接続する際には指定する必要があります。
AuthScheme='ADFS';User=test;Password=test;SSOProperties='Domain=test.cdata;';
Amazon S3
以下のプロパティは、SharePoint SOAP サービスプロバイダーに接続する際には指定する必要があります。
AuthScheme=ADFS;User=username;Password=password;SSOLoginURL='https://sts.company.com';ADFS 統合
ADFS 統合フローでは、現在ログインしているWindows ユーザーの資格情報で接続します。 ADFS 統合フローを使用するには、User およびPassword を指定せず、それ以外の設定は上記のADFS ガイドと同じステップを実行してください。
Kerberos でJSON への認証を行うには、AuthScheme をNEGOTIATE に設定します。
Kerberos 経由でJSON への認証を行うには、認証プロパティを定義し、Kerberos が認証チケットを取得する方法を選択する必要があります。
Sync App は、 KRB5CCNAME および / またはKerberosKeytabFile 変数が存在するかどうかに応じて、必要なKerberos チケットを取得する3 つの方法を提供します。
MIT Kerberos 資格情報キャッシュファイル
このオプションを使用すると、MIT Kerberos チケットマネージャーまたはkinit コマンドを使ってチケットを取得できます。このオプションでは、User またはPassword 接続プロパティを設定する必要はありません。
このオプションは、KRB5CCNAME がシステムに作成されている必要があります。
MIT Kerberos 資格情報キャッシュファイル経由でチケット検索を有効にするには:
チケットの取得に成功すると、チケット情報がKerberos チケットマネージャーに表示され、クレデンシャルキャッシュファイルに保存されます。
Sync App はキャッシュファイルを使用してJSON に接続するためのKerberos チケットを取得します。
Note: KRB5CCNAME を編集したくない場合は、KerberosTicketCache プロパティを使用してファイルパスを手動で設定することができます。この設定後に、Sync App は指定されたキャッシュファイルを使用してJSON に接続するためのKerberos チケットを取得します。
Keytab ファイル
お使いの環境にKRB5CCNAME 環境変数がない場合、Keytab ファイルを使用してKerberos チケットを取得できます。
この方法を使用するには、User プロパティを目的のユーザー名に設定し、KerberosKeytabFile プロパティをユーザーに関連付けられたキータブファイルを指すファイルパスに設定します。
User およびPassword
お使いの環境にKRB5CCNAME 環境変数およびKerberosKeytabFile プロパティが設定されていない場合、ユーザーとパスワードの組み合わせを使用してチケットを取得できます。
この方法を使用するには、User およびPassword プロパティを、JSON での認証に使用するユーザー / パスワードの組み合わせに設定します。
このようなクロスレルム認証を有効にするには、KerberosRealm およびKerberosKDC プロパティをユーザー認証に必要な値に設定します。また、KerberosServiceRealm およびKerberosServiceKDC プロパティを、 サービスチケットの取得に必要な値に設定します。
CData Sync App を使うと、より複雑な開発やネットワークトポロジに役立つきめ細かな制御が可能になります。次のプロパティを使用して、データアクセスを微調整したり、ファイアウォールを介して接続したり、接続のトラブルシューティングを行ったりできます。
Sync App は単一ディレクトリ内の複数のファイルの読み込みとパースをサポートし、データを単一の結果セットにマージします。
この機能を有効にするには、URI プロパティをファイルマスクのディレクトリ(例:C:\MyDataFiles\*.json)、またはディレクトリ(例:C:\MyDataFiles)に設定できます。
ディレクトリがURI として指定されている場合、IncludeFiles を使用して含めるファイルの種類を識別します。
この機能は、Google Drive (e.g. gdrive://remotepath/*.json)、Amazon S3 (e.g. s3://remotepath/*.json)、FTP (ftp://server:port/remotepath/*.json) などクラウドベースのサービスプロバイダーでも利用できます。
URI をディレクトリに設定するときは、ディレクトリであることを示すために必ずスラッシュ (e.g. s3://remotepath/) を最後に含めてください。
複数のファイルを含めるために、カンマ区切りのURI のリストがサポートされています。
すべてのファイル(ファイル拡張子のないファイルを含む)を取得するには、'*' のファイルマスクを使用するか (e.g. s3://remotepath/*)、'*' エントリを含めるようにIncludeFiles を設定します。
拡張子のないファイルだけを含めるには、IncludeFiles を設定して'NOEXT' エントリを含めます。
ファイル一式をパースするとき、ファイルはキューに入れられます。
各ファイルはストリーミング形式で取得され、パースされます。各行はパースされるときにプッシュされます。
したがって、ファイルは決してメモリに格納されたり、ディスク上のテンポラリロケーションに格納されたりすることはありません。
そのため、必要なメモリ使用量が制限されます。
複数のファイルを読み込むとき、Sync App は最初に識別されたファイルをメタデータ検出に使用します。
パフォーマンス上の理由から、メタデータの検出には1つのファイルが使用されます。
最初に識別されたファイルに、部分的なJSON データが含まれている場合
(ディレクトリ内の他のファイルと比較して)、他のファイルのカラム/データは返されないことがあります。
これは、Sync App が、メタデータ検出に使用される単一のファイルから、選択したファイルで使用可能なすべてのカラムを適切に識別できないためです。
これらのケースを回避するには、"MetadataDiscoveryURI" オプションをOther プロパティから設定できます(例:MetadataDiscoveryURI=file:///C:\MyDataFiles\main.json)。
MetadataDiscoveryURI が指定された場合、Sync App は
指定されたURI を使用してテーブルとカラムを検出します。
メタデータが検出されると、URI の値がJSON データの取得と解析に使用されます。
複数のファイルをパースする場合、ファイルをパースできない場合があります(無効なJSON、ネットワーク接続の問題、など)。
そのような場合、Sync App は例外メッセージを返しませんが、ErrorInfo#TEMP という
テンポラリテーブルにエラーを記録します。
これは、大きなバッチのファイルを読み込んでいる最中に、失敗してやり直しが発生しないためです。代わりに、初期クエリが終了した後でテンポラリテーブル(ErrorInfo#TEMP)をクエリすることができます。
これにより、パースに失敗したファイルがあるかどうかを識別でき、失敗した要求を再試行して、それらを最初の結果セットとマージすることができるようになります。
エラーリストを取得するには、次のクエリを発行します:SELECT * FROM ErrorInfo#TEMP。
このテーブルには次の2つのカラムが含まれます:URI およびDescription。URI には、失敗した1つのファイルのURI が含まれます(URI プロパティで設定して再試行できます)。
Description には、ファイルがパースに失敗した理由に関する説明が含まれています。エラーが発生しなかった場合、空の結果セットが返されます。
Sync App は、ローカルファイルをパースするときにサブディレクトリの移動をサポートします。
この機能は、URI 値のディレクトリ名に'*' ワイルドカード文字を使用することで公開されます。
例えば、一意の名前(日付値など)を持つフォルダを含む'Data' ディレクトリがあり、それぞれに似たようなJSON データファイルがあるとします。
URI を'file:///C:\Data\*\*.json' に設定するか、ファイルマスクなしのディレクトリ
'file:///C:\Data\*' に設定することで、これらすべてのファイルを単一のテーブルに読み込むことができます。
また、ディレクトリの部分一致もサポートされています。
例えば、 '2018' で始まるフォルダ内のすべてのJSON ファイルを取得するには、次のURI 値:file:///C:\Data\2018*\*.json を使用できます。
Note:クラウドリソースに接続するときは、ディレクトリ名にワイルドカードを使用することはできません。
このセクションでは、Sync App がリレーショナルSQL とJSON サービスのギャップを埋めるために提供するさまざまなスキームを制御する方法を説明します。CData Sync App には、ネストされたJSON データを扱うための2つの一般的な管理された方法があります。
デフォルトでは、Sync App はドキュメント内の行を自動的に検出するため、SQL でクエリするために基底のデータの構造を知る必要はありません。DataModel プロパティを設定して、Sync App がどのようにオブジェクト配列をテーブルにモデル化するかの基礎構成を選択します。階層データの解析 を参照してください。
Sync App は、JSON 配列内の設定された数のオブジェクトをスキャンすることで、カラムおよびデータ型を自動的に検出します。FlattenObjects およびFlattenArrays プロパティを設定して、ネストされたデータをカラムにフラット化する方法を設定します。例については、自動スキーマ検出 を参照してください。
フラット化でアクセスできるあらゆるリレーションへは、アドホックなSQL クエリを使ってもアクセスが可能です。Sync App を使用すると、次の機能を使用してネストされたデータをクエリできます。
スキーマのカスタマイズ を使用すると、JSON ドキュメントの上に選択されたリレーショナル構造を投射することもできます。これにより、カラム名、データ型、 コレクション内の値の位置を選択することができます。
システムテーブル は設定したスキーマ(カスタムスキーマ、または動的に検出されたスキーマ)を反映しています。Stored Procedures は、Sync App のデータ処理操作において、SELECT、INSERT、UPDATE、またはDELETE としてモデル化できない追加機能を表します。レポートされたストアドプロシージャは、Location で指定されたフォルダ内の.api ファイルで定義されています。Location が指定されていない場合は、インストールディレクトリのdb サブフォルダにあります。
以下は、この章で使用されている生データです。データには人、所有する自動車、およびさまざまな保守サービスのエントリが含まれます。
{
"people": [
{
"personal": {
"age": 20,
"gender": "M",
"name": {
"first": "John",
"last": "Doe"
}
},
"vehicles": [
{
"type": "car",
"model": "Honda Civic",
"insurance": {
"company": "ABC Insurance",
"policy_num": "12345"
},
"maintenance": [
{
"date": "07-17-2017",
"desc": "oil change"
},
{
"date": "01-03-2018",
"desc": "new tires"
}
]
},
{
"type": "truck",
"model": "Dodge Ram",
"insurance": {
"company": "ABC Insurance",
"policy_num": "12345"
},
"maintenance": [
{
"date": "08-27-2017",
"desc": "new tires"
},
{
"date": "01-08-2018",
"desc": "oil change"
}
]
}
],
"source": "internet"
},
{
"personal": {
"age": 24,
"gender": "F",
"name": {
"first": "Jane",
"last": "Roberts"
}
},
"vehicles": [
{
"type": "car",
"model": "Toyota Camry",
"insurance": {
"company": "Car Insurance",
"policy_num": "98765"
},
"maintenance": [
{
"date": "05-11-2017",
"desc": "tires rotated"
},
{
"date": "11-03-2017",
"desc": "oil change"
}
]
},
{
"type": "car",
"model": "Honda Accord",
"insurance": {
"company": "Car Insurance",
"policy_num": "98765"
},
"maintenance": [
{
"date": "10-07-2017",
"desc": "new air filter"
},
{
"date": "01-13-2018",
"desc": "new brakes"
}
]
}
],
"source": "phone"
}
]
}
Sync App には、オブジェクト配列をテーブルとしてモデル化するための3つの基本的な設定があります。次のセクションで説明します。Sync App はJSON ドキュメントを解析してオブジェクト配列を識別します。または、JSONPath を設定してテーブルとしてモデル化するオブジェクト配列を指定します。
JSON データ全体に単純にアクセスする必要があるユーザーにとっては、データを単一テーブルにフラット化することは最善のオプションです。このモードでは、Sync App はストリーミングを使用し、クエリごとにJSON データを1回だけパースします。
DataModel を"FlattenedDocuments" に設定すると、ネストされたJSONPath 値はSQL JOIN と同じ方法で動作します。ネストされた任意の兄弟JSONPath 値(同じ高さの子パス)は、SQL CROSS JOIN として扱われます。
以下は、Raw データ のサンプルドキュメントと、JSON パス$.people、$.people.vehicles、$.people.vehicles.maintenance に基づく解析のサンプルクエリとその結果です。これは、暗黙的にvehicles コレクションをpeople コレクションと結合し、暗黙的にvehicles コレクションをmaintenance コレクションと結合します。
次の接続文字列を使用して、この例ではRaw データ をクエリします。
URI=C:\people.txt;DataModel=FlattenedDocuments;JSONPath='$.people;$.people.vehicles;$.people.vehicles.maintenance;'
次のクエリは、各people オブジェクトのネストされたエレメントをドリルします。JSONPath プロパティはvehicles コレクションをJSON パスとして含んだため、vehicle のエレメントを明示的にクエリできます。
SELECT
[personal.age] AS age,
[personal.gender] AS gender,
[personal.name.first] AS name_first,
[personal.name.last] AS name_last,
[source],
[type],
[model],
[insurance.company] AS ins_company,
[insurance.policy_num] AS ins_policy_num,
[date] AS maint_date,
[desc] AS maint_desc
FROM
[people]
記述されたパスに基づいて水平および垂直フラット化を行うと、各vehicle オブジェクトはその親people オブジェクトに暗黙的に結合され、各maintenance オブジェクトはその親vehicle オブジェクトに暗黙的に結合されます。
| age | gender | first_name | last_name | source | type | model | ins_company | ins_policy_num | maint_date | maint_desc | |
| 20 | M | John | Doe | internet | car | Honda Civic | ABC Insurance | 12345 | 2017-07-17 | oil change | |
| 20 | M | John | Doe | internet | car | Honda Civic | ABC Insurance | 12345 | 2018-01-03 | new tires | |
| 20 | M | John | Doe | internet | truck | Dodge Ram | ABC Insurance | 12345 | 2017-08-27 | new tires | |
| 20 | M | John | Doe | internet | truck | Dodge Ram | ABC Insurance | 12345 | 2018-01-08 | oil change | |
| 24 | F | Jane | Roberts | phone | car | Toyota Camry | Car Insurance | 98765 | 2017-05-11 | tires rotated | |
| 24 | F | Jane | Roberts | phone | car | Toyota Camry | Car Insurance | 98765 | 2017-11-03 | oil change | |
| 24 | F | Jane | Roberts | phone | car | Honda Accord | Car Insurance | 98765 | 2017-10-07 | new air filter | |
| 24 | F | Jane | Roberts | phone | car | Honda Accord | Car Insurance | 98765 | 2018-01-13 | new brakes |
JSON データのトップレベルドキュメントビューを使用すると、トップレベルのエレメントにすぐにアクセスできます。Sync App は、集計にネストされたエレメントを単一のカラムとして返します。
考慮すべき一つの側面はパフォーマンスです。ネストされたエレメントを処理してパースする時間とリソースを控えます。Sync App は、JSON データを読み込むためにストリーミングを使用して、返されたデータを一度パースします。もう一つ考慮すべきは、ネストされた親エレメントに格納されているデータにアクセスする必要があることと、ツールやアプリケーションがJSON を処理する能力です。
DataModel が"Document"(デフォルト)に設定されている場合、Sync App はデフォルトでトップレベルのオブジェクト配列である単一のオブジェクト配列のみをスキャンします。デフォルトのオブジェクトフラット化により、トップレベルのオブジェクトエレメントはカラムとして利用可能です。ネストされたオブジェクト配列は、集計されたJSON として返されます。
JSONPath を設定すると、トップレベル以外のオブジェクト配列を指定できます。
以下は、Raw データ のサンプルドキュメントに基づいたサンプルクエリとその結果です。クエリの結果、JSON パス"$.people" に基づいた単一の"people" テーブルが作成されます。
DataModel 接続プロパティを"Document" に設定して次のクエリを実行し、サンプル結果セットを表示します。Sync App は以下のJSONPath 値のみをスキャンします。
URI=C:\people.txt;DataModel=Document;JSONPath='$.people';
次のクエリは、トップレベルのオブジェクトエレメントと車両配列を結果にプルします。
SELECT
[personal.age] AS age,
[personal.gender] AS gender,
[personal.name.first] AS name_first,
[personal.name.last] AS name_last,
[source],
[vehicles]
FROM
[people]
データのドキュメントビューでは、パーソナルオブジェクトが4カラムにフラット化され、ソースと車両エレメントが個別のカラムとして返され、結果として6カラムのテーブルが作成されます。
| age | gender | name_first | name_last | source | vehicles | |
| 20 | M | John | Doe | internet | [{"type":"car","model":"Honda Civic","insurance":{"company":"ABC Insurance","policy_num":"12345"},"maintenance":[{"date":"07-17-2017","desc":"oil change"},{"date":"01-03-2018","desc":"new tires"}]},{"type":"truck","model":"Dodge Ram","insurance":{"company":"ABC Insurance","policy_num":"12345"},"maintenance":[{"date":"08-27-2017","desc":"new tires"},{"date":"01-08-2018","desc":"oil change"}]}]
| |
| 24 | F | Jane | Roberts | phone | [{"type":"car","model":"Toyota Camry","insurance":{"company":"Car Insurance","policy_num":"98765"},"maintenance":[{"date":"05-11-2017","desc":"tires rotated"},{"date":"11-03-2017","desc":"oil change"}]},{"type":"car","model":"Honda Accord","insurance":{"company":"Car Insurance","policy_num":"98765"},"maintenance":[{"date":"10-07-2017","desc":"new air filter"},{"date":"01-13-2018","desc":"new brakes"}]}]
|
The CData Sync App can be configured to create a relational model of the data, treating nested object arrays as individual tables containing a primary key and a foreign key that links to the parent document. This is particularly useful if you need to work with your JSON data in existing BI, reporting, and ETL tools that expect a relational data model.
With DataModel set to "Relational", any JOINs are controlled by the query. Any time you perform a JOIN query, the JSON file or source will be queried once for each table (nested array) included in the query.
Below is a sample query against the sample document in Raw データ, using a relational model based on the JSON paths "$.people", "$.people.vehicles", and "$.people.vehicles.maintenance".
Set the DataModel connection property to "Relational" and set the JSONPath connection property to "$.people;$.people.vehicles;$.people.vehicles.maintenance;" to perform the following query and see the example result set.
URI=C:\people.txt;DataModel=Relational;JSONPath='$.people;$.people.vehicles;$.people.vehicles.maintenance;'
The following query explicitly JOINs the people, vehicles, and maintenance tables.
SELECT
[people].[personal.age] AS age,
[people].[personal.gender] AS gender,
[people].[personal.name.first] AS first_name,
[people].[personal.name.last] AS last_name,
[people].[source],
[vehicles].[type],
[vehicles].[model],
[vehicles].[insurance.company] AS ins_company,
[vehicles].[insurance.policy_num] AS ins_policy_num,
[maintenance].[date] AS maint_date,
[maintenance].[desc] AS maint_desc
FROM
[people]
JOIN
[vehicles]
ON
[people].[_id] = [vehicles].[people_id]
JOIN
[maintenance]
ON
[vehicles].[_id] = [maintenance].[vehicles_id]
In the example query, each maintenance object is JOINed to its parent vehicle object, which is JOINed to its parent people object to produce a table with 8 rows (2 maintenance entries for each of 2 vehicles each for 2 people).
| age | gender | first_name | last_name | source | type | model | ins_company | ins_policy_num | maint_date | maint_desc | ||
| 20 | M | John | Doe | internet | car | Honda Civic | ABC Insurance | 12345 | 2017-07-17 | oil change | ||
| 20 | M | John | Doe | internet | car | Honda Civic | ABC Insurance | 12345 | 2018-01-03 | new tires | ||
| 20 | M | John | Doe | internet | truck | Dodge Ram | ABC Insurance | 12345 | 2017-08-27 | new tires | ||
| 20 | M | John | Doe | internet | truck | Dodge Ram | ABC Insurance | 12345 | 2018-01-08 | oil change | ||
| 24 | F | Jane | Roberts | phone | car | Toyota Camry | Car Insurance | 98765 | 2017-05-11 | tires rotated | ||
| 24 | F | Jane | Roberts | phone | car | Toyota Camry | Car Insurance | 98765 | 2017-11-03 | oil change | ||
| 24 | F | Jane | Roberts | phone | car | Honda Accord | Car Insurance | 98765 | 2017-10-07 | new air filter | ||
| 24 | F | Jane | Roberts | phone | car | Honda Accord | Car Insurance | 98765 | 2018-01-13 | new brakes |
デフォルトでは、Sync App は配列内の一連のJSON オブジェクトを調べ、自動的にリレーショナルスキーマを提案します。このセクションでは、これらの動的スキーマを設定するために使用できる接続プロパティについて説明します。
このセクションでは、行スキャンを微調整することによって検出されたスキーマを微調整する方法を示します。 検出される行は、RowScanDepth、DataModel、およびJSONPath プロパティに依存します。
検出プロセスで特定されるカラムはFlattenArrays およびFlattenObjects プロパティに依存します。FlattenObjects が設定されている場合(これがデフォルトです)、ネストされたオブジェクトは連続したカラムにフラット化されます。
例えば、次のドキュメントを考えましょう。
{
id: 12,
name: "Lohia Manufacturers Inc.",
address: {street: "Main Street", city: "Chapel Hill", state: "NC"},
offices: ["Chapel Hill", "London", "New York"],
annual_revenue: 35,600,000
}
デフォルトのオブジェクトフラット化では、このドキュメントは次のカラムで表されます:
| カラム名 | データ型 | サンプル値 |
| id | Integer | 12 |
| name | String | Lohia Manufacturers Inc. |
| address.street | String | Main Street |
| address.city | String | Chapel Hill |
| address.state | String | NC |
| offices | String | ["Chapel Hill", "London", "New York"] |
| annual_revenue | Double | 35,600,000 |
FlattenObjects が設定されていない場合、address.street、address.city、およびaddress.state カラムは別々にはなりません。文字列型の住所カラムは一つのオブジェクトとして表されます。値は次のようになります:
{street: "Main Street", city: "Chapel Hill", state: "NC"}
FlattenArrays プロパティは配列の値をフラット化してそれぞれのカラムとするために使われます。これは次の例のように短い配列の場合にのみ推奨されます。
"coord": [ -73.856077, 40.848447 ]FlattenArrays プロパティは2に設定して上の配列を次のように表すことができます:
| カラム名 | データ型 | サンプル値 |
| coord.0 | Float | -73.856077 |
| coord.1 | Float | 40.848447 |
アンバウンドの配列をそのままにしておき、必要な際にJSON 関数 を使ってデータを取り出すことをお勧めします。
自動スキーマ検出 の説明にあるとおり、直感的なテーブルスキーマは非構造化 データへのSQL アクセスを可能にします。スキーマのカスタマイズ では静的なテーブルを定義でき、データのリレーショナルビューでの緻密な制御を可能にします。例えば、報告されたデータ型を変更することができます。ただし、データのスキーマのビューに限定されるわけではありません。
どんなネストされた構造でもデータをフラット化せずにクエリできます。自動スキーマ検出 を介してアクセスできるあらゆるリレーションへは、アドホックなSQL クエリを使ってもアクセスが可能です。
次のクエリのように、SELECT 句で、ドット表記を使用してデータへのXPath を指定します。
SELECT [personal.name.last], [personal.name.first], [vehicles.1.type], [vehicles.1.model] FROM people WHERE [personal.name.last] = 'Roberts' AND [personal.name.first] = 'Jane'
特定の配列エレメントへのパスを指定するには、エレメントの順序位置を指定します。配列のインデックスはゼロオリジンなので、上記のクエリは2番目の車両を取得します。
上記のクエリは、サンプルのRaw データ のpeople ドキュメントからカラム名を引きます。以下はpeople 配列からのperson オブジェクトです。
{
"people": [
{
"personal": {
"age": 24,
"gender": "F",
"name": {
"first": "Jane",
"last": "Roberts"
}
},
"vehicles": [
{
"type": "car",
"model": "Toyota Camry",
"insurance": {
"company": "Car Insurance",
"policy_num": "98765"
},
"maintenance": [
{
"date": "05-11-2017",
"desc": "tires rotated"
},
{
"date": "11-03-2017",
"desc": "oil change"
}
]
},
{
"type": "car",
"model": "Honda Accord",
"insurance": {
"company": "Car Insurance",
"policy_num": "98765"
},
"maintenance": [
{
"date": "10-07-2017",
"desc": "new air filter"
},
{
"date": "01-13-2018",
"desc": "new brakes"
}
]
}
],
"source": "phone"
}
]
}
次の接続文字列を使用すると、Sync App はネストされたデータをパースしません。データはクエリを実行すると処理されます。トップレベルオブジェクトのプロパティは、デフォルトのFlattenObjects 機能によって変わらずフラット化されます。 ネストされたデータはJSON の集計として返されます。
URI=C:\people.txt;DataModel=Document;JSONPath='$.people;'
Raw データ ドキュメントのあらゆるネスト構造にカラムとしてアクセスできます。
SELECT [personal.name.last], [personal.name.first], [vehicles.1.type], [vehicles.1.model] FROM people WHERE [personal.name.last] = 'Roberts' AND [personal.name.first] = 'Jane'
配列のインデックスはゼロオリジンです。例えば、次のクエリではサンプル内のperson のsecond vehicle を取得します。
先のクエリは、次の結果を返します。
| カラム名 | データ型 | サンプル値 |
| personal.name.first | String | Jane |
| personal.name.last | String | Roberts |
| vehicles.1.type | String | car |
| vehicles.1.model | String | Honda Accord |
垂直フラット化クエリを使用すると、ドキュメントの配列を個別のテーブルのように取得することが可能です。
FROM 句では、ドット表記を使用してネストされた配列にドリルダウンできます。
SELECT * FROM [people.vehicles]
Raw データ のpeople コレクションのJSON 構造について考えてみましょう。以下はコレクションのオブジェクトです。
{
"people": [
{
"personal": {
"age": 24,
"gender": "F",
"name": {
"first": "Jane",
"last": "Roberts"
}
},
"vehicles": [
{
"type": "car",
"model": "Toyota Camry",
"insurance": {
"company": "Car Insurance",
"policy_num": "98765"
},
"maintenance": [
{
"date": "05-11-2017",
"desc": "tires rotated"
},
{
"date": "11-03-2017",
"desc": ["oil change","fan belt replaced","coolant reservoir replaced"]
}
]
},
{
"type": "car",
"model": "Honda Accord",
"insurance": {
"company": "Car Insurance",
"policy_num": "98765"
},
"maintenance": [
{
"date": "10-07-2017",
"desc": "new air filter"
},
{
"date": "01-13-2018",
"desc": "new brakes"
}
]
}
],
"source": "phone"
}
]
}
次の接続文字列を使用すると、Sync App はネストされたデータをパースしません。データはクエリを実行すると処理されます。デフォルトのFlattenObjects 機能により、トップレベルオブジェクトのプロパティはフラット化されます。ネストされたデータはJSON の集計として返されます。
URI=C:\people.txt;DataModel=Documents;JSONPath='$.people;'
垂直フラット化ではvehicles 配列を別々のテーブルとして取得することを許可します。
SELECT * FROM [people.vehicles]このクエリは、次のデータセットを返します。
| insurance.policy_num | maintenance | model | type |
| 12345 | [{"date":"07-17-2017","desc":"oil change"},{"date":"01-03-2018","desc":"new tires"}] | Honda Civic | car |
| 12345 | [{"date":"08-27-2017","desc":"new tires"},{"date":"01-08-2018","desc":"oil change"}] | Dodge Ram | truck |
| 98765 | [{"date":"05-11-2017","desc":"tires rotated"},{"date":"11-03-2017","desc":"oil change"}] | Toyota Camry | car |
| 98765 | [{"date":"10-07-2017","desc":"new air filter"},{"date":"01-13-2018","desc":"new brakes"}] | Honda Accord | car |
Sync App では、JSON ストラクチャーをカラム値として返すことができます。Sync App を使って、これらのJSON ストラクチャーにおいて標準SQL 関数を使用できます。このセクションの例では、次の配列を使用します。
[
{ "grade": "A", "score": 2 },
{ "grade": "A", "score": 6 },
{ "grade": "A", "score": 10 },
{ "grade": "A", "score": 9 },
{ "grade": "B", "score": 14 }
]
SELECT Name, JSON_EXTRACT(grades,'[0].grade') AS Grade, JSON_EXTRACT(grades,'[0].score') AS Score FROM Students;
| カラム名 | サンプル値 |
| Grade | A |
| Score | 2 |
SELECT Name, JSON_COUNT(grades,'[x]') AS NumberOfGrades FROM Students;
| カラム名 | サンプル値 |
| NumberOfGrades | 5 |
SELECT Name, JSON_SUM(score,'[x].score') AS TotalScore FROM Students;
| カラム名 | サンプル値 |
| TotalScore | 41 |
SELECT Name, JSON_MIN(score,'[x].score') AS LowestScore FROM Students;
| カラム名 | サンプル値 |
| LowestScore | 2 |
SELECT Name, JSON_MAX(score,'[x].score') AS HighestScore FROM Students;
| カラム名 | サンプル値 |
| HighestScore | 14 |
自動スキーマ検出 で検出されたテーブルスキーマをカスタマイズして、カラム名やデータ型を変更したり、更新機能を有効にしたりできます。CData Sync App の処理操作は、データの処理およびリモートデータソースとの通信の複雑さを解決しながら、カスタムスキーマを介してこれらのレイヤーを制御することも可能です。
カスタムスキーマは、コンフィギュレーションファイルで定義されます。この章では、これらのファイルの構造を概説します。
スキーマ生成 を使用すると、自動スキーマ検出 で検出された動的スキーマを永続化およびカスタマイズできます。
テーブルとビューは、APIScript でスキーマファイルを作成することによって定義されます。APIScript は、テーブルのカラムとその動作を定義するシンプルなAPIScript コンフィギュレーション言語にて書かれています。また、JSON を処理可能にするビルトインオペレーションがあります。これらのデータ処理構造に加えて、APIScript は、条件分岐やループなどに対応して構成されているフル機能の言語です。ただし、サンプルスキーマに示すように、ほとんどのテーブル定義ではこれらの機能を使用する必要はありません。
スキーマは次の接続文字列を反映します。これにより、指定されたXPaths によって記述されたデータを含む単一のテーブルが返されます。異なるDataModel 設定についてのガイドは、階層データの解析 を参照してください。
DataModel=FLATTENEDDOCUMENTS;URI=C:\people.xml;XPath='/root/people;/root/people/vehicles;/root/people/vehicles/maintenance';Location=C:\myschemas;GenerateSchemaFiles=OnStart;
スキーマの各コンポーネントの詳細は、カラム定義、SELECT 実行、INSERT 実行、UPDATE 実行、およびDELETE 実行 で確認できます。ストアドプロシージャを作成して、SELECT、INSERT、UPDATE、またはDELETE ステートメントとしてモデル化できないAPI の機能を実装することもできます。詳しくは、ストアドプロシージャの定義 を参照してください。
<api:script xmlns:api="http://apiscript.com/ns?v1" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<api:info title="people" desc="Generated schema file." xmlns:other="http://apiscript.com/ns?v1">
<!-- You can modify the name, type, and column size here. -->
<!-- See Column Definitions to specify column behavior and use XPaths to extract column values from JSON. -->
<attr name="date" xs:type="date" readonly="false" other:xPath="/json/people/vehicles/maintenance/date" />
<attr name="desc" xs:type="string" readonly="false" other:xPath="/json/people/vehicles/maintenance/desc" />
<attr name="insurance.company" xs:type="string" readonly="false" other:xPath="/json/people/vehicles/insurance/company" />
<attr name="insurance.policy_num" xs:type="string" readonly="false" other:xPath="/json/people/vehicles/insurance/policy_num" />
<attr name="maintenance:_id" xs:type="string" readonly="false" key="true" other:xPath="/json/people/vehicles/maintenance/_id" />
<attr name="model" xs:type="string" readonly="false" other:xPath="/json/people/vehicles/model" />
<attr name="people:_id" xs:type="string" readonly="false" key="true" other:xPath="/json/people/_id" />
<attr name="personal.age" xs:type="integer" readonly="false" other:xPath="/json/people/personal/age" />
<attr name="personal.gender" xs:type="string" readonly="false" other:xPath="/json/people/personal/gender" />
<attr name="personal.name.first" xs:type="string" readonly="false" other:xPath="/json/people/personal/name/first" />
<attr name="personal.name.last" xs:type="string" readonly="false" other:xPath="/json/people/personal/name/last" />
<attr name="source" xs:type="string" readonly="false" other:xPath="/json/people/source" />
<attr name="type" xs:type="string" readonly="false" other:xPath="/json/people/vehicles/type" />
<attr name="vehicles:_id" xs:type="string" readonly="false" key="true" other:xPath="/json/people/vehicles/_id" />
</api:info>
<api:set attr="DataModel" value="FLATTENEDDOCUMENTS" />
<api:set attr="URI" value="C:\\tmp\\people.json" />
<api:set attr="JSONPath" value="$.people;$.people.vehicles;$.people.vehicles.maintenance" />
<!-- The GET method corresponds to SELECT. Here you can change the parameters of the request for data. The results of processing are pushed to the schema's output. See SELECT Execution for more information. -->
<api:script method="GET">
<api:call op="jsonproviderGet">
<api:push/>
</api:call>
</api:script>
<!-- To add support for INSERTS please see the INSERT Execution page within the help for further information and examples. -->
<api:script method="POST">
<api:set attr="method" value="POST"/>
<api:call op="jsonproviderGet">
<api:throw code="500" desc="INSERTs are not currently supported."/>
<api:push/>
</api:call>
</api:script>
<!-- To add support for UPDATES please see the UPDATE Execution page within the help for further information and examples. -->
<api:script method="MERGE">
<api:set attr="method" value="PUT"/>
<api:call op="jsonproviderGet">
<api:throw code="500" desc="Updates are not currently supported."/>
<api:push/>
</api:call>
</api:script>
<!-- To add support for DELETES please see the DELETE Execution page within the help for further information and examples. -->
<api:script method="DELETE">
<api:set attr="method" value="DELETE"/>
<api:call op="jsonproviderGet">
<api:throw code="500" desc="Deletes are not currently supported."/>
<api:push/>
</api:call>
</api:script>
</api:script>
自動スキーマ検出 を使用して動的に検出されたスキーマをより細かく制御するには、スキーマをコンフィギュレーションファイルに保存することができます。GenerateSchemaFiles プロパティを使用すると、接続文字列で設定されたデータモデリング設定に基づいてスキーマを自動的に生成できます。CreateSchema ストアドプロシージャを使用すると、接続後に他のXPath のスキーマを作成できます。
接続時、もしくはクエリ実行時にスキーマを生成することができます。Sync App は、Location で指定したフォルダにスキーマを保存します。
CreateSchema ストアドプロシージャを呼び出して、指定したXPaths のスキーマファイルを生成できます。以下は、ストアドプロシージャの入力と出力です。
| Name | Type | Description |
| TableName | String | テーブル名およびスキーマ(RSD)ファイル名。 |
| URI | String | JSON リソースのUniform Resource Identifier (URI)。 |
| JSONPath | String | JSON ドキュメント内で同じ階層で繰り返すエレメントのJSONPath。(これは、ドキュメントを複数の行に分割するために使われます)。複数のパスをセミコロン区切りリストで指定します。 |
| FileLocation | String | 生成されたスキーマ(RSD)ファイルが保存されるフォルダパス。指定された場合には、TableName はスキーマファイル名として使われます。 |
| FileName | String | 生成されたスキーマの完全なスキーマ(RSD)ファイル名。このインプットはFileLocation よりも優先されます。 |
| Name | Type | Description |
| Result | String | Success またはFailure を返します。 |
接続文字列のDataModel をFLATTENDOCUMENTS に設定すると、下のサンプルストアドプロシージャコールでは、すべてのJSONPath 配列を単一テーブルにフラット化するスキーマが生成されます。このデータモデルについて詳しくは、フラット化されたドキュメントモデル を参照してください。
EXECUTE CreateSchema TableName='GenPeople',
FileLocation='C:\\tests\\scripts',
URI='C:\\tests\\people.json',
JSONPath='$.people;$.people.vehicles;$.people.vehicles.maintenance'
カラムの基本属性は、カラム名、データ型、カラムが主キーかどうか、およびXPath です。Sync App は、XPath を使って階層構造データのノードを取得します。
スキーマファイルのapi:info ブロックにカラム属性をマークアップします。以下の例で示すように、other:xPath プロパティにXPath を設定することができます。
<api:info title="people" desc="People and their vehicles." xmlns:other="xmlns:other="http://apiscript.com/ns?v1">
<!-- You can modify the name, type, and column size here. -->
<attr name="personal.age" xs:type="integer" readonly="false" other:xPath="/json/people/personal/age" />
<attr name="personal.gender" xs:type="string" readonly="false" other:xPath="/json/people/personal/gender" />
<attr name="personal.name.first" xs:type="string" readonly="false" other:xPath="/json/people/personal/name/first" />
<attr name="personal.name.last" xs:type="string" readonly="false" other:xPath="/json/people/personal/name/last" />
<attr name="source" xs:type="string" readonly="false" other:xPath="/json/people/source" />
<attr name="vehicles" xs:type="string" readonly="false" other:xPath="/json/people/vehicles" />
</api:info>
次のセクションでは、XPath を使用してカラムと行を抽出する方法について詳しく説明します。完全なスキーマでカラム定義を見るには、スキーマのカスタマイズ を参照してください。
other:xPath プロパティは、JSON からカラム値を取得するXPath を指定するために使われます。 XPath は絶対パスです。絶対パスは'/' で始まり、JSON にネストされたデータへのフルXPath を含みます。
<attr name="ID" xs:type="int" key="true" other:xPath="/value/ID" />
インデックスされたXPath 値は、同じ名前の複数のエレメントが同じレベルにネストされている場合、JSON ドキュメント内のエレメントを指定するために使われます。インデックスはゼロベースです。
<attr name=Employee1 xs:type="string" other:xPath="value[0]"/>
<attr name=Employee2 xs:type="string" other:xPath="value[1]"/>
Notes:
行XPath(JSONPath)は、同じ階層で繰り返すエレメントへのパスを指定します。これはSync App が行に分割するオブジェクト配列です。DataModel をFlattenedDocuments またはRelational に設定すると、複数のJSONPath をセミコロン区切りのリストで指定できます。これらのデータモデリングストラテジーのガイドについては、階層データの解析 を参照してください。
接続文字列でJSONPath を定義するか、JSONPath を個々のスキーマの属性として定義できます。api:set キーワードを使用して、スキーマの行のXPath を定義します。DataModel をFlattenedDocuments またはRelational に設定すると、複数のXPath をセミコロン区切りのリストで指定できます。
<api:set attr="JSONPath" value="$.people;$.people.vehicles;$.people.vehicles.maintenance"/>
ワイルドカードのJSONPath はすべてのJSONPaths が同じ階層にあるが異なる名前を含む場合には有効です。
<api:set attr="JSONPath" value="$.feed.*" />
other:valueFormat プロパティを"aggregate" に設定して、カラムを集計として識別することができます。
{
"repeat": {
"name": "TestAggregate",
"myobjcol1": {
"myobjcol1": "myData1",
"myobjcol2": "myData2",
"myobjcol3": "myData3"
}
}
}
次の例では、myobjcol1 エレメントをMyObjCol1 という名前のカラムに抽出します。
<api:info>
<attr name="MyObjCol1" xs:type="string" other:xPath="myobjcol1" other:valueFormat="aggregate"/>
</api:info>
<api:set attr="XPath" value="/repeat"/>
カラム値は次のようになります。
{
"myobjcol1": "myData1",
"myobjcol2": "myData2",
"myobjcol3": "myData3"
}
一部のAPI では、クエリパラメータを指定することでリクエスト結果をフィルタリングできます。このパラメータがWHERE 句にマップされている場合は、other:filter プロパティを使用してこのマッピングをプログラムできます。
以下は、2つのクエリパラメータ'modifiedSince' および'modifiedBefore' の例です。'modifiedAt' カラムに基づいて結果をフィルタ処理します。
<attr name="ModifiedAt" xs:type="datetime" readonly="false" other:xPath="content/properties/modifiedAt" other:filter="modifiedBefore:<;modifiedSince:>,>=,=" />
この例では、次のクエリステートメントを使用します。
SELECT * FROM <table> WHERE modifedAt < '<datetime>'そして、クエリパラメータ'&modifiedBefore=<url encoded datetime>' をURL に追加するリクエストを生成します。
SELECT クエリが発行されると、Sync App はスキーマのGET メソッドを実行します。これは、JSON を処理するためのSync App のビルトインオペレーションを呼び出します。GET メソッドでは、データの要求を制御できます。次のプロシージャは、これを使用するいくつかの方法を示します。SELECT WHERE を使ったサーバー側でのリモートデータの検索、サーバーから返される結果のLIMIT、またはページングを実装します。
次の手順を実行すると、SQL-92クエリを実行できるスクリプトが作成されます。クエリはクライアント側で処理されます。 データ処理操作を呼び出す前に、URI とJSONPath(オプション)を指定する必要があります。api:set キーワードを使って、これらの属性を宣言します。
URI 属性を、ローカルファイルまたはHTTP アクセス可能なアドレスに設定します。
<api:set attr="uri" value="NorthwindOData.json" />
必要であれば、JSONPath 属性を、個々の行を構成するデータのXPath に設定します。通常はオブジェクト配列です。デフォルトでは、Sync App はドキュメントをスキャンしてネストされたオブジェクト配列を検出します(階層データの解析 を参照してください)。
<api:set attr="JSONPath" value="$.people" />
GET メソッドで処理を呼び出します。スクリプトブロック内でapi:push キーワードを使用して処理を呼び出します。op パラメータを使って処理を指定します。このキーワードは、処理の結果をスキーマの出力にプッシュします。
<api:script method="GET">
<api:set attr="method" value="GET"/>
<api:call op="jsonproviderGet">
<api:push />
</api:call>
</api:script>
次のセクションでは、SELECT WHERE ステートメントをJSON API に対する検索リクエストに変換する方法を示します。プロシージャは次のステートメントを使用します。
SELECT * FROM <table> WHERE modifedAt < '2017-10-10' AND modifedAt > '2017-09-01'
このフィルタがクエリパラメータを介してサーバーでサポートされている場合は、api:info カラム定義のother:filter プロパティを使用して、希望するマッピングを指定できます。上記のクエリでは、このプロパティを使用して、modifiedAt < '<date>' フィルタを特定の日付より前に修正された結果を返すクエリパラメータにマッピングします。そして、modifedAt > '<date>' フィルタを後で修正された結果をフィルタリングするクエリパラメータにマッピングします。other:filter は次のように指定します。
このマッピングを実行するには、modifedAt カラム定義に次のマークアップを使用します:
<attr name="modifiedAt" xs:type="datetime" readonly="false" other:xPath="content/properties/modifiedAt" other:filter="modifiedBefore:<;modifiedSince:>" />
このクエリは次のリクエストになります:
[url]?modifedBefore=2017-10-10&modifedSince=2017-09-01
API フィルタがクエリパラメータで渡されない場合は、スクリプトで渡す必要があります。例えば、/persons/{name}/data endpoint をクエリして名前でフィルタするAPI を考えてみましょう。
SELECT * FROM Persons WHERE (Name = 'Fran Wilson')
スキーマのGET メソッドでは、Items in API Script のいずれかの_input アイテムの属性を使用して検索条件にアクセスし、HTTP データ取得要求を作成します。
対応する以下のスクリプトはリクエストをビルドします。api:check エレメントは、その値にアクセスを試みる前に、属性の有無をチェックするのに便利です。さまざまなValue Formatters を使用して、URL エンコードのような変換を行うことができます。
<api:script method="GET">
<api:check attr="_input.Name">
<api:set attr="uri" value="[uri]/[_input.name|urlencode]/data"/>
</api:check>
</api:script>
WHERE 句に疑似カラムを指定して、結果に戻されたカラム以外の入力を使用して検索条件を作成できます。
例えば、Weather Underground API では、指定された場所の予測を返すことができます。Location 自体は予測データの一部ではなく、以下のリクエストのようにリクエストURL に指定されます。
http://api.wunderground.com/api/{MyAPIKey}/hourly/q/MyLocation.json
次にSQL で表された予測クエリの例を示します。
SELECT * FROM Hourly WHERE Location="27516"
下記の手順に従って、Location 疑似カラムを追加し、先のクエリを実装します。
<api:info>
...
<input name="Location" required="true"/>
</api:info>
<api:set attr='uri' value="http://api.wunderground.com/api/[_connection.APIKey]/hourly/q/[_input.Location].json"/><api:script method="GET" >
<api:push op="jsonproviderGet"/>
</api:script> 自動ページングをサポートするには、Rows@Next 入力をapi:info ブロックのカラムリストに追加します。
<input name="rows@next" desc="Identifier for the next page of results. Do not set this value manually." />
これをattr パラメータではなくinput パラメータにすると、カラムリストに情報が表示されなくなります。
また、ドライバーの内部ページングメカニズムを無効にするには、
'EnablePaging' 属性をTRUE に設定する必要があります。
<api:set attr="EnablePaging" value="TRUE" />
ドライバーは4種類のページング実装を自動的にサポートします。1つ目は、次のページのURL がレスポンスに返されたときです。2つ目は、クエリパラメータに現在のページオフセットを指定するタイプです。3つ目は、クエリパラメータで現在のページ番号を送信するものです。4つ目は、次のリクエストのクエリパラメータにページトークンを送信する必要があります。API がこれらのページングパターンのいずれかを利用している場合は、以下の例に従ってページングを実装してください。
サービスが次のページのURL をレスポンスボディやヘッダに返すときは、'pageurlpath' 属性をこのデータの場所に設定します。この場所に値が存在する場合は、次のリクエストのURL を設定するために使用されます。
<api:set attr="pageurlpath" value="/data/nextPage" /> <api:set attr="pageurlpath" value="header:Link" /> 後続リクエストでページングパラメータに渡す必要があるトークンがレスポンスボディに返されることがあります。この場合は、'pagetokenparam' と'pagetokenpath' 属性を設定できます。'pagetokenpath' はエレメントのXPath に設定する必要があります。他のページがあるかどうかを示す変数を送信するサービスもあります。その場合は、'hasmorepath' 属性をXPath に設定することもできます。
<api:set attr="pagetokenpath" value="/data/token" />
<api:set attr="hasmorepath" value="/data/has_more" />
<api:set attr="pagetokenparam" value="nextpagetoken" />
has_more がtrue の場合、これは/data/token にあるトークンを次のクエリに渡します:?nextpagetoken=<token><api:set attr="pagetokenpath" value="/request/nextpagetoken" /> サービスがページングを制御するレコードオフセットクエリパラメータを提供する場合は、オフセットクエリパラメータの名前、ページサイズクエリパラメータの名前、および渡されるページサイズを設定することによってこれを実装できます。これを制御するパラメータがない場合は、ページサイズパラメータを設定する必要はありません。この場合、pagesize をデフォルトのページサイズに設定する必要があります。
<api:set attr="pageoffsetparam" value="offset" />
<api:set attr="pagesizeparam" value="limit" />
<api:set attr="pagesize" value="100" />
レコードオフセットと同様に、サービスがページ番号を設定するクエリパラメータを提供する場合は、ページ番号クエリパラメータの名前、ページサイズクエリパラメータの名前、および渡されるページサイズを設定することによってこれを実装できます。これを制御するパラメータがない場合は、ページサイズパラメータを設定する必要はありません。この場合、pagesize をデフォルトのページサイズに設定する必要があります。
<api:set attr="pagenumberparam" value="page" />
<api:set attr="pagesizeparam" value="pagesize" />
<api:set attr="pagesize" value="100" />
API がこれらのページングパターンのどれにも従わない場合は、カスタムページング実装が必要になります。これは、最初のページから必要な情報を'Rows@Next' 属性に設定することによって行われます。 出力に'Rows@Next' 値が設定されている場合、Sync App はこのページの結果を返した後、入力に'Rows@Next' 値を使用してこのメソッドを自動的に再度呼び出します。この入力の値を使用して、次のパスのリクエストを変更して、次ページのデータを取得することができます。 次ページのデータをリクエストするために必要なあらゆる情報にRows@Next 入力を設定します。
例えば、API が次ページのURL を応答で返す場合があります。URL にXPath を指定することでこの値を取得できます。
<api:set attr="elementmappath#" value="/next_page" />
<api:set attr="elementmapname#" value="rows@next" />
値が設定されている場合は、リクエストが行われたURL を変更できます。api:check エレメントを使用して、Rows@Next 入力が値を持つかどうかを最初にチェックします。Rows@Next 入力は、_input アイテムの属性としてアクセスできます。
<api:check attr="_input.rows@next">
<api:set attr="uri" value="[_input.rows@next]" />
<api:else>
<api:set attr="uri" value="<first page's URL>" />
</api:else>
<api:check>
任意のHTTP 要求をGET メソッドで作成できます。SELECT クエリの他のコンポーネントにアクセスするには、_query アイテムを使用します。 GET メソッドでは、_query アイテムには、Sync App に発行されたクエリを表す次の属性があります。
| query | SQL クエリ。次に例を示します。
SELECT Id, Name FROM Accounts WHERE City LIKE '%New%' AND COUNTRY = 'US' GROUP BY CreatedDate ORDER BY Name LIMIT 10,50; |
| selectcolumns | SELECT ステートメントで指定されたカラムを含むカンマ区切りのリスト。例えば、この例ではId およびName カラムです。 |
| table | SELECT ステートメントで指定されたテーブル名。例えば、この例ではAccounts です。 |
| criteria | ステートメントのWHERE 句。
City LIKE '%New%' AND COUNTRY = 'US' |
| orderby | ORDER BY 句で指定されたカラム。例えば、この例ではName です。 |
| groupby | SELECT ステートメントのGROUP BY 句。例えば、この例ではCreatedDate です。 |
| limit | SELECT ステートメントのLIMIT またはTOP 句で指定されたリミット。例えば、この例では50 です。 |
| offset | SELECT ステートメントのLIMIT またはTOP 句で指定されたオフセット。例えば、この例では10 です。 |
| isjoin | クエリが結合かどうか。 |
| jointable | 結合するテーブル。 |
| isschemaonly | クエリがスキーマ情報のみを取得するかどうか。 |
API がサポートしている場合は、LIMIT 句を実装して、サーバーから取得する必要がある結果の数を制限できます。
API リクエストを作成するときに、_query アイテムのlimit 属性の値を参照します。OData API では、$top クエリ文字列パラメータを使用して制限を指定できます。以下に示します。
http://services.odata.org/V3/Northwind/Northwind.svc/Customers?$top=10
以下は対応するスクリプトです。
<api:check attr="_query.limit">
<api:set attr="uri" value="http://services.odata.org/V3/Northwind/Northwind.svc/Customers?$top=[_query.limit]" />
</api:check>
このセクションで使われているキーワードの詳細情報は、API Script Reference を参照してください。
INSERT ステートメントが実行されると、Sync App は、スキーマのPOST メソッドを実行し、HTTP 挿入リクエストを作成します。
POST メソッドでは、Items in API Script の1つである_input アイテムに、挿入するカラムが含まれます。
例えば、次のステートメントを考えてみましょう。
INSERT INTO Persons
(Name, Id)
VALUES
('Maria Anders','7')
_input アイテムの属性を使用して、HTTP 挿入リクエストでこれらのカラム値を設定できます。OData API では、これはHTTP POST です。OData API で先の挿入を行うためのPOST データは次のとおりです。
{
"@odata.type": "#ODataDemo.Person",
"Name": "Maria Anders",
"ID": 7
}
サンプルスキーマの対応するPOST メソッドでは、必須カラムが最初に検証され、それからPOST データを定義するために使用されます。カラムが提供されたかをチェックし、api:validate キーワードを伴わない場合には、ユーザーにアラートを出すことができます。
必要な属性が存在することを検証したら、POST データにカラムの値を設定できます。データ属性をPOST データに設定します。api:set キーワードのボディは、このように長い、もしくは複数行の値を設定する際に便利です。
api:call キーワードは、HTTP 要求を行う操作を呼び出します。操作を呼び出す前に、api:set を使用してメソッド属性をapi:script キーワードのスコープ内で必要なHTTP メソッドに設定します。
<api:script method="POST">
<api:set attr="method" value="POST"/>
<api:validate attr="_input.Name" desc="Name and Id are required to insert." />
<api:validate attr="_input.Id" desc="Name and Id are required to insert." />
<api:set attr="data">
{
"@odata.type": "#ODataDemo.Person",
"Name": "[_input.Name]",
"ID": [_input.Id]
}
</api:set>
<api:call op="jsonproviderGet"/>
</api:script>
INSERT 構文はデータを返すことがあります。例えば、新しいレコードからの発行されたId です。挿入から返された値にアクセスしたい場合には、api:callキーワードの代わりにapi:push キーワードを使います。
POST メソッドでは、_query アイテムに次の属性が含まれます。
| query | 次のステートメントのような、SQL ステートメント。
INSERT INTO Account (account_name, account_type) VALUES ('Contoso','Company') |
| table | SQL ステートメント内のテーブル。例えば、先のクエリのAccount です。 |
このセクションで使われているキーワードの詳細情報は、API Script Reference を参照してください。
UPDATE ステートメントが実行されると、Sync App はスキーマのMERGE メソッドを実行し、HTTP 更新リクエストを作成します。
このメソッドの詳細な例を見るには、スキーマのカスタマイズ を参照してください。
MERGE メソッドでは、Items in API Script の1つである_input アイテムに、更新するカラムが含まれます。例えば、次のステートメントを考えてみましょう。
UPDATE Persons SET Name='Ana Trujilo' WHERE Id = '7'
_input アイテムの属性を使用して、HTTP 更新リクエストでこれらのカラム値を設定できます。OData API では、これはHTTP OUT またはPATCH です。OData API で先の更新を行うためのPUT データは次のとおりです。
{
"@odata.type": "#ODataDemo.Person",
"@odata.id": "http://services.odata.org/V4/OData/(S(wcpddcnfsjih2ecg0izcegfs))/OData.svc/Persons(7)",
"Name": "Ana Trujilo"
}
サンプルスキーマの対応するMERGE メソッドでは、必須カラム、主キーが検証され、その後PUT データおよびURL で使用されます。インプットが提供されたかをチェックし、api:validate キーワードを伴わない場合には、ユーザーにアラートを出すことができます。
必要な属性が存在することを検証したら、PUT データにカラムの値を設定できます。データ属性をPUT データに設定します。api:set キーワードのボディは、このように長い、もしくは複数行の値を設定する際に便利です。
api:call キーワードは、HTTP 要求を行う操作を呼び出します。操作を呼び出す前に、api:set を使用してメソッド属性をapi:script キーワードのスコープ内で必要なHTTP メソッドに設定します。
<api:script method="MERGE">
<api:set attr="method" value="PUT"/>
<api:validate attr="_input.Id" desc="An Id is required to update." />
<api:set attr="uri" value="http://services.odata.org/V4/OData/abc123/OData.svc/Persons(ID=[_input.Id])" />
<api:set attr="data">
{
"@odata.type": "#ODataDemo.Person",
"@odata.id": "[uri]",
<api:check attr="_input.Name">
"Name": "[_input.Name]"
</api:check>
}
</api:set>
<api:call op="jsonproviderGet"/>
</api:script>
MERGE メソッドでは、_query アイテムに次の属性が含まれます。
| query | 次のステートメントのような、SQL ステートメント。
UPDATE Account SET Name='John' WHERE Id = @myId |
| table | SQL ステートメント内のテーブル。例えば、先のクエリのAccount です。 |
| criteria | ステートメントのWHERE 句。例えば、この例では次のWHERE 句です。
Id = @myId |
| nullupdates | null 値またはnull パラメータ値を含む、UPDATE ステートメントのカンマ区切りのカラム。 |
このセクションで使われているキーワードの詳細情報は、API Script Reference を参照してください。
DELETE ステートメントが実行されると、Sync App は、スキーマのDELETE メソッドを実行し、HTTP 削除リクエストを作成します。
このメソッドの詳細な例を見るには、スキーマのカスタマイズ を参照してください。
DELETE メソッドでは、Items in API Script の1つである_input アイテムに、削除するレコードの主キーが含まれます。
例えば、次のステートメントを考えてみましょう。
DELETE FROM Persons WHERE Id = '7'
以下は、OData API の対応する削除リクエストです。
DELETE myapi.com/Persons(7)
以下の対応するDELETE メソッドでは、必須カラム、主キーが最初に検証され、それからHTTP DELETE リクエスト内のURI を変更するために使用されます。
<api:script method="DELETE">
<api:set attr="method" value="DELETE"/>
<api:validate attr="_input.Id" desc="An Id is required to delete." />
<api:set attr="uri" value="[uri]([_input.Id])" />
<api:call op="jsonproviderGet"/>
</api:script>
インプットが提供されたかをチェックし、api:validate キーワードを伴わない場合には、ユーザーにアラートを出すことができます。主キー属性が存在することを確認したら、リクエストURL に主キーを指定できます。api:set キーワードを使ってURI 値を設定します。
api:call キーワードは、HTTP 要求を行う操作を呼び出します。操作を呼び出す前に、メソッド属性をapi:script キーワードのスコープ内で必要なHTTP メソッドに設定します。
DELETE スクリプトでは、_query アイテムに次の属性が含まれます。
| query | 次のステートメントのような、SQL ステートメント。
DELETE FROM Account WHERE Id = @myId |
| table | SQL ステートメント内のテーブル。例えば、先のクエリのAccount です。 |
| criteria | ステートメントのWHERE 句。例えば、この例では次のWHERE 句です。
Id = @myId |
このセクションで使われているキーワードの詳細情報は、API Script Reference を参照してください。
ストアドプロシージャはデータソースのファンクションライクなインターフェースです。データの検索、変更、削除に使用できます。ストアドプロシージャは、SELECT、INSERT、UPDATE、またはDELETE ステートメントで一般的に表すことができないアクションをモデルします。ストアドプロシージャのモデリングは、ストアドプロシージャを実装するために同じ組み込みのデータ処理操作を使用できる点で、テーブルのモデリングと同様のプロセスです。
少しの変更で、同じプロセスに従って、INSERT、UPDATE、DELETE ステートメントのサポートを追加するためのストアドプロシージャを作成できます。.rsd ファイル同様、info ブロックとデータ処理操作を呼び出すscript で構成される.api ファイルにストアドプロシージャを定義します。
カラムの代わりに、info ブロックでストアドプロシージャの入力パラメータと出力パラメータを定義します。attr エレメントの代わりに、info ブロックのinput エレメントを使用して入力を定義します。
他のSQL ステートメント同様、ストアドプロシージャが実行されるときは、_input 項目には入力パラメータが含まれます。_input 項目を使用すると、ストアドプロシージャの入力を操作入力にマッピングできます。
テーブルスキーマ同様、info ブロックを使用してレスポンスを処理できます。info ブロックのoutput 属性を使用して、ストアドプロシージャの出力を記述します。出力属性では、XPath を指定して階層データのノードを抽出できます。
次のストアドプロシージャは、Id を指定してPerson レコードを取得します。この完全に機能的なスキーマでは、要求の構築方法とXPath を使用して応答を解析する方法について示します。
ストアドプロシージャはスキーマのGET メソッドを実行します。このメソッドでAPI リクエストを構築します。必要な入力が提供されていることを確認し、ない場合はapi:validate キーワードでユーザーに警告します。文字列、日付、および数式での作業を簡素化するには、Value Formatters を使用します。
api:call キーワードで操作を呼び出します。データを返すには、オペレーション呼び出しのスコープ内にapi:push キーワードを挿入します。
<api:script xmlns:api="http://apiscript.com/ns?v1" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<api:info title="GetODataPersonById" description="Retrieves the OData Person specified by Id.">
<output name="ID" other:jsonPath="/" />
<output name="EmployeeID" other:jsonPath="/json/EmployeeID" />
<output name="Name" other:jsonPath="/json/Name" />
<output name="TotalExpense" other:jsonPath="/json/TotalExpense" />
<output name="HireDate" other:jsonPath="/json/HireDate" />
<output name="Salary" other:jsonPath="/json/Salary" />
</api:info>
<api:set attr="uri" value="http://services.odata.org/V4/OData/(S(5cunewekdibfhpvoh21u2all))/OData.svc/Persons" />
<!-- The JSONPath attribute of the schema splits the JSON into rows based on elements that repeat at the same level. -->
<api:set attr="JSONPath" value="/json/" />
<!-- See the jsonproviderGet page in the Operations subchapter to set any needed HTTP parameters. -->
<api:set attr="ContentType" value="application/json" />
<!-- The GET method corresponds to EXECUTE. Within the script block, you can see the URI modified to append a query string parameter. The results of processing are pushed to the schema's output. -->
<api:script method="GET">
<api:set attr="method" value="GET"/>
<api:set attr="uri" value="[uri]([_input.Id])?$format=json"/>
<api:call op="jsonproviderGet">
<api:push />
</api:call>
</api:script>
</api:script>
このセクションで使われているキーワードの詳細情報は、API Script Reference を参照してください。
Sync App は、JSON データソースの処理において高いパフォーマンスのオペレーションを持ちます。これらのオペレーションはプラットフォームを問いません:これらのオペレーションを呼び出すスキーマファイルは、.NET およびJava 両方で使うことができます。Sync App を、.NET またはJava で書かれたユーザー自身のオペレーションによって拡張することも可能です。
Sync App では、次のオペレーションを持ちます:
| オペレーション名 | 説明 | |
| jsonproviderGet | jsonproviderGet オペレーションは JSON コンテントを処理するAPIScript オペレーションです。これにより、JSON コンテントを行に分割できます。 | |
| oauthGetAccessToken | OAuth 1.0 では、リクエストトークンとアクセストークンとを交換します。 OAuth 2.0 では、アクセストークンを取得するか、リフレッシュトークンで新しいアクセストークンを取得します。 | |
| oauthGetUserAuthorizationURL | ユーザー認可URL を生成します。OAuth 2.0 は、この処理ではネットワークにアクセスしません。 | |
| utiladoSleep | 指定された時間(秒単位)プロセスを一時停止します。 | |
| utiladoPushPageToken | 結果セットに行をプッシュせずに、ページトークンの値をrows@next にプッシュします。 |
The jsonproviderGet operation is an APIScript operation that is used to process local JSON files or remote JSON data stores. It allows you to split JSON content into rows.
JSONPath: The JSONPath parameter is used to split the document into multiple rows. The Sync App will detect the paths to the rows when the DataModel property is set to FlattenedDocuments or Relational. See 階層データの解析 for a guide to configuring how the data is modeled.
The JSONPath connection property can also provide the row JSONPaths. Specify the JSONPaths as absolute paths; define multiple paths in a semicolon-separated list.
A wildcard JSONPath can also be used and is helpful in the case that the JSONPaths are all at the same height but contain different names:
<api:set attr="JSONPath" value="/feed/*" />
The jsonproviderGet operation can be used to make HTTP requests to JSON data sources and process the results. It abstracts the complexity of connecting to JSON-based REST APIs but also gives you control over the layers involved, providing the following inputs to configure authentication, the HTTP request and headers, and firewall traversal.
The jsonproviderGet operation reads the カラム定義 from the api:info section of the table schema file. In the column definition, the other:xPath property maps the column value to a JSON element.
You can use api:set to specify the operation's input parameters, listed below. The connection properties also pass inputs to the operation; setting an attribute in the schema will override the connection property.
<api:set attr="uri" value="NorthwindOData.json" />
JSONPath: The JSONPath parameter specifies the XPath to an array element that is used to split the document into rows. Specify multiple paths in a semicolon-separated list; see DataModel to configure the tables discovered based on these paths. By default the Sync App will detect the object arrays in the document as the rows -- see 自動スキーマ検出 to configure the row scan.
A wildcard JSONPath can also be used and is helpful in the case that the JSONPaths are all at the same height but contain different names:
<api:set attr="JSONPath" value="/feed/*" />
The allowed values are TRUE, FALSE. The default value is FALSE.
<api:call op="jsonproviderGet" out="output">
<api:map from="output" to="temp" map="* = *" />
<api:push item="temp" />
</api:call>
The items produced by this operation are required to have the same layout for performance reasons, which may not be the case if different documents are used with
calls to this operation. Performing this map converts the item into a more flexible form which does not have the same layout restriction.
The flexible layout has different restrictions to be aware of:
The oauthGetAccessToken operation is an RSBScript operation that is used to facilitate the OAuth authentication and refresh flows.
The Sync App includes stored procedures that invoke this operation to complete the OAuth exchange. The following example schema briefly lists some of the typically required inputs before the following sections explain them in more detail.
See ストアドプロシージャの定義 for more information on working with custom stored procedures. For a guide to using the Sync App to authenticate, see the "Getting Started" chapter.
Invoke the oauthGetAccessToken with the GetOAuthAccessToken stored procedure. The following inputs are required for most data sources and will provide default values for the connection properties of the same name.
<rsb:script xmlns:rsb="http://www.rssbus.com/ns/rsbscript/2">
<rsb:info title="GetOAuthAccessToken" description="Obtains the OAuth access token to be used for authentication with various APIs." >
<input name="AuthMode" desc="The OAuth flow. APP or WEB." />
<input name="CallbackURL" desc="The URL to be used as a trusted redirect URL, where the user will return with the token that verifies that they have granted your app access. " />
<input name="OAuthAccessToken" desc="The request token. OAuth 1.0 only." />
<input name="OAuthAccessTokenSecret" desc="The request token secret. OAuth 1.0 only." />
<input name="Verifier" desc="The verifier code obtained when the user grants permissions to your app." />
<output name="OAuthAccessToken" desc="The access token." />
<output name="OAuthTokenSecret" desc="The access token secret." />
<output name="OAuthRefreshToken" desc="A token that may be used to obtain a new access token." />
</rsb:info>
<!-- Set OAuthVersion to 1.0 or 2.0. -->
<rsb:set attr="OAuthVersion" value="MyOAuthVersion" />
<!-- Set RequestTokenURL to the URL where the request for the request token is made. OAuth 1.0 only.-->
<rsb:set attr="OAuthRequestTokenURL" value="http://MyOAuthRequestTokenURL" />
<!-- Set OAuthAuthorizationURL to the URL where the user logs into the service and grants permissions to the application. -->
<rsb:set attr="OAuthAuthorizationURL" value="http://MyOAuthAuthorizationURL" />
<!-- Set OAuthAccessTokenURL to the URL where the request for the access token is made. -->
<rsb:set attr="OAuthAccessTokenURL" value="http://MyOAuthAccessTokenURL" />
<!-- Set GrantType to the authorization grant type. OAuth 2.0 only. -->
<rsb:set attr="GrantType" value="CODE" />
<!-- Set SignMethod to the signature method used to calculate the signature of the request. OAuth 1.0 only.-->
<rsb:set attr="SignMethod" value="HMAC-SHA1" />
<rsb:call op="oauthGetAccessToken">
<rsb:push/>
</rsb:call>
</rsb:script>
You can also use oauthGetAccessToken to refresh the access token by providing the following inputs:
<rsb:script xmlns:rsb="http://www.rssbus.com/ns/rsbscript/2">
<rsb:info title="RefreshOAuthAccessToken" description="Refreshes the OAuth access token used for authentication." >
<input name="OAuthRefreshToken" desc="A token that may be used to obtain a new access token." />
<output name="OAuthAccessToken" desc="The authentication token returned." />
<output name="OAuthTokenSecret" desc="The authentication token secret returned. OAuth 1.0 only." />
<output name="OAuthRefreshToken" desc="A token that may be used to obtain a new access token." />
<output name="ExpiresIn" desc="The remaining lifetime on the access token." />
</rsb:info>
<!-- Set OAuthVersion to 1.0 or 2.0. -->
<rsb:set attr="OAuthVersion" value="MyOAuthVersion" />
<!-- Set GrantType to REFRESH. OAuth 2.0 only. -->
<rsb:set attr="GrantType" value="REFRESH" />
<!-- Set SignMethod to the signature method used to calculate the signature of the request. OAuth 1.0 only.-->
<rsb:set attr="SignMethod" value="HMAC-SHA1" />
<!-- Set OAuthAccessTokenURL to the URL where the request for the access token is made. -->
<rsb:set attr="OAuthAccessTokenURL" value="http://MyOAuthAccessTokenURL" />
<!-- Set AuthMode to 'WEB' when calling RefreshOAuthAccessToken -->
<rsb:set attr="AuthMode" value="WEB"/>
<rsb:call op="oauthGetAccessToken">
<rsb:push/>
</rsb:call>
</rsb:script>
The oauthGetUserAuthorizationURL is an RSBScript operation that is used to facilitate the OAuth authentication flow for Web apps, for offline apps, and in situations where the Sync App is not allowed to open a Web browser. To pass the needed inputs to this operation, define the GetOAuthAuthorizationURL stored procedure. The Sync App can call this internally.
Define stored procedures in .rsb files with the same file name as the schema's title. The example schema briefly lists some of the typically required inputs before the following sections explain them in more detail.
For a guide to authenticating in the OAuth flow, see the "Getting Started" chapter. You can find more information about stored procedures and how to write them in ストアドプロシージャの定義.
Call oauthGetUserAuthorizationURL in the GetOAuthAuthorizationURL stored procedure.
<rsb:script xmlns:rsb="http://www.rssbus.com/ns/rsbscript/2">
<rsb:info title="Get OAuth Authorization URL" description="Obtains the OAuth authorization URL used for authentication with various APIs." >
<input name="CallbackURL" desc="The URL to be used as a trusted redirect URL, where the user will return with the token that verifies that they have granted your app access. " />
<output name="URL" desc="The URL where the user logs in and is prompted to grant permissions to the app. " />
<output name="OAuthAccessToken" desc="The request token. OAuth 1.0 only." />
<output name="OAuthTokenSecret" desc="The request token secret. OAuth 1.0 only." />
</rsb:info>
<!-- Set OAuthVersion to 1.0 or 2.0. -->
<rsb:set attr="OAuthVersion" value="MyOAuthVersion" />
<!-- Set ResponseType to the desired authorization grant type. OAuth 2.0 only.-->
<rsb:set attr="ResponseType" value="code" />
<!-- Set SignMethod to the signature method used to calculate the signature. OAuth 1.0 only.-->
<rsb:set attr="SignMethod" value="HMAC-SHA1" />
<!-- Set OAuthAuthorizationURL to the URL where the user logs into the service and grants permissions to the application. -->
<rsb:set attr="OAuthAuthorizationURL" value="http://MyOAuthAuthorizationURL" />
<!-- Set OAuthAccessTokenURL to the URL where the request for the access token is made. -->
<rsb:set attr="OAuthAccessTokenURL" value="http://MyOAuthAccessTokenURL"/>
<!-- Set RequestTokenURL to the URL where the request for the request token is made. OAuth 1.0 only.-->
<rsb:set attr="OAuthRequestTokenURL" value="http://MyOAuthRequestTokenURL" />
<rsb:call op="oauthGetUserAuthorizationUrl">
<rsb:push/>
</rsb:call>
</rsb:script>
<p>
The utiladoRefreshOAuth operation causes the Sync App to refresh any OAuth tokens that are close to expiring. This has no effect when AuthScheme is set to a non-OAuth authentication mode .
The operation takes no parameters and may be called like this:
<api:call op="utiladoRefreshOAuth" />
The utiladoSleep operation causes the process that calls it to suspend execution for a specifed duration.
The required parameter is timeout. The units are in seconds. For example,
<api:call op="utiladoSleep?timeout=2" />
The utiladoPushPageToken operation causes the process to push a page token for rows@next without pushing a row in the result set. This is useful in some complex scenarios, such as paging the outer call while only having the nested inner call push rows.
The following list highlights examples of defining the desired page token, which can be retrieved from _input.rows@next in the next iteration:
<api:set item="page" attr="pagetoken" value="[out1._next]" /> <api:call op="utiladoPushPageToken" input="page" />
<api:set item="page" attr="pagetoken" value="[out1.cursor]" /> <api:call op="utiladoPushPageToken" input="page" />
<api:set item="page" attr="pagetoken" value="[temp.currentpage | add(1)]" /> <api:call op="utiladoPushPageToken" input="page" />
<api:set item="page" attr="pagetoken" value="[temp.offset | add([temp.pagesize])]" /> <api:call op="utiladoPushPageToken" input="page" />
このセクションでは、JSON Sync App の高度な機能を厳選して説明します。
Sync App はユーザー定義ビューの使用をサポートします。これは事前設定されたユーザー定義クエリによって内容が決定される仮想テーブルです。 このビューは、ドライバーに発行されるクエリを直接制御できない場合に有効です。 カスタムビューの作成と設定の概要については、ユーザー定義ビュー を参照してください。
SSL の設定 を使用して、Sync App が証明書のネゴシエーションをどのように扱うかを調整します。さまざまな証明書形式を選択できます。詳しくは、「接続文字列オプション」にあるSSLServerCert プロパティを参照してください。
Windows プロキシとHTTP プロキシを含むファイアウォールとプロキシ に合致するようSync App を設定します。トンネル接続を設定することもできます。
詳しくは、クエリ処理 を参照してください。
デフォルトでは、Sync App はサーバーとのTLS のネゴシエーションを試みます。サーバー証明書は、デフォルトのシステム信頼済み証明書ストアで検証されます。SSLServerCert 接続プロパティを使用して、証明書の検証方法をオーバーライドできます。
別の証明書を指定するには、SSLServerCert 接続プロパティを参照してください。
JSON Sync App はクライアント証明書の設定もサポートしています。次を設定すれば、クライアント証明書を使って接続できます。
HTTP プロキシへの認証には、以下のように設定します。
次のプロパティを設定します。
CData Sync App は、JSON に対して、ローカルおよびリモートデータをリレーショナルテーブル、ビュー、およびストアドプロシージャにモデル化することにより、標準準拠のアクセスを可能にします。JSON は、API Script と呼ばれる独自のコンフィギュレーション言語を持ち、お客様のAPI のリソースのためのスキーマをマークアップするために使うことができます。API Script は、JSON へのリクエスト生成および返されたフィードのパースを容易にします。
API Script は、データアクセスおよびプロセッシングのあらゆる側面の管理を可能にするハイレベルなプログラミング言語です。スキーマはAPI Script エンジンにより変換されたスクリプトです。
スクリプトを書く際には、キーワード、アトリビュート、アイテム、オペレーション、およびフィードを使います。
Attribute="name" value="Bob" Attribute="address" value="123 Pleasant Lane" Attribute="phone" value="123-4567"
フィードは、アイテムにより成り立ちますが、API Script ではアイテムはフィードの部品という以上の働きをします。アイテムは、オペレーションにインプットを提供するために使われることもあります。
API Script では、アイテムは、api:set キーワードを通じて作成され、名付けられ、アトリビュート値を与えられます。
<api:set item="input" attr="mask" value="*.txt" />
このラインは、"input" という名前のアイテムの、"mask" アトリビュートに"*text" という値をセットします。この場合、インプットアイテムはAPI Script の変数の働きをします。
ただし、"input" という名前のアイテムは宣言されていません。その代わりに、初回にアトリビュートをセットしようとすると、そのアイテムが生成されます。上の例では、インプットアイテムが存在していない場合、そのアイテムが生成され、mask アトリビュートがセットされます。
アトリビュートを参照するには、 item.attribute (e.g., "input.mask") シンタックスを使います。あるアトリビュート値をクエリするには、括弧 ([]) でアトリビュート名を囲います。これは、文字列リテラルとしてではなく、文字列を評価したいということを示します。
例えば、次のコードスニペットを見てください:
<api:set item="item1" attr="attr1" value="value1"/>
<api:set item="item1" attr="attr2" value="item1.attr1"/>
<api:set item="item1" attr="attr3" value="[item1.attr1]"/>
結果は次のとおりです:
API Script では、デフォルトアイテムという、アイテムの層の中に黙示的で名付けられていないアイテムがあります。 次の2つのケースでは、デフォルトアイテムは共通してスクリプトをより短く、簡単に書くために使われています。
<api:set attr="path" value="." />
スクリプト内で宣言されたアイテムに加えて、スクリプトのスコープでは、いくつかのビルトインアイテムが利用可能です。 API Script では、ビルトイン、もしくは特殊なアイテムが利用可能で、接続文字列およびSQL クエリへのアクセスのインターフェースを提供します。 これらの特殊なアイテムはインプットをデータ処理オペレーションにマッピングするために役立ちます。
以下のセクションで、特殊なアイテムについて説明します。
スクリプトへのインプットは_input アイテムから参照されます。 SQL ステートメントはテーブルおよびストアドプロシージャのスキーマへのインプットを提供します:SELECT ステートメントでは、_input アイテムは、WHERE 句において指定されたカラム、もしくは疑似カラムを含みます。
スクリプト内のデフォルトアイテムから値を読む場合、_input から値を読んでいます。同様に、デフォルトアイテムに書き込みたいアトリビュートは、インプットスクリプトと共にオペレーションのパラメータとして渡されます。情報ブロック、もしくはスクリプト内に定義された変数だけが_input アイテム内では有効です。
api:call ブロックの内部では、_input はデフォルトアイテムではなく、アクセスするためには名前を参照しなければなりません。
api:call キーワードにより生成されたフィード内の現在のアイテムは、デフォルトアイテムもしくは名前を指定された特殊アイテム"_outX" を通じてアクセスすることができます。X はapi:call のネスティングのレベルです。例えば、単一のapi:call キーワードの内部の場合、アイテム名は"_out2" です。api:call キーワードの3つのネストレベルの内部の場合、_out3 となります。
_connection アイテムはSync App の接続プロパティを持ちます。Sync App は、接続文字列プロパティの検証を行いません。どのプロパティを必須とするか、どのように使用するかなどは、スキーマ作成者の決定に委ねられています。
_connection アイテムは、接続プロパティへのアクセスを提供するだけでなく、接続にデータの一部を格納するために使用することもできます。例えば、接続が持続している間に再利用可能なセッショントークンを保持する必要がある場合が考えられます。以下のコード例に示すようにapi:set キーワードを使って任意の値を格納することができます。
<api:set attr="_connection._token" value="[oauth.connection_token]"/>
Note:_ 記号で始まる属性のみを設定することができます。これは、ユーザーが設定した接続プロパティをオーバーライドできないようにするためです。
_query アイテムには、Sync App に発行されたクエリを説明する次の属性があります。
| query | SQL ステートメント。次に例を示します。
SELECT Id, Name FROM Accounts WHERE City LIKE '%New%' AND COUNTRY = 'US' GROUP BY CreatedDate ORDER BY Name LIMIT 10,50; |
| selectcolumns | SELECT 句のカラムのカンマ区切りリスト。例えば、この例ではId およびName カラムです。SELECT 句に "*" が指定された場合、[_query.selectcolumns] の値は "*" となります。 |
| table | テーブル名。例えば、この例ではAccounts です。 |
| isjoin | クエリが結合かどうか。 |
| jointable | JOIN 句のテーブル。 |
| criteria | WHERE 句。例えば、この例では次のWHERE 句です。
City LIKE '%New%' AND COUNTRY = 'US' |
| orderby | ORDER BY 句。例えば、この例ではName です。 |
| groupby | GROUP BY 句。例えば、この例ではCreatedDate です。 |
| limit | SELECT ステートメントのLIMIT またはTOP 句で指定されたリミット。例えば、この例では50 です。 |
| offset | SELECT ステートメントのLIMIT またはTOP 句で指定されたオフセット。例えば、この例では10 です。 |
| insertselect | INSERT ステートメントにネストされたSELECT ステートメント。 |
| updateselect | UPDATE ステートメントにネストされたSELECT ステートメント。 |
| upsertselect | UPSERT ステートメントにネストされたSELECT ステートメント。 |
| deleteselect | DELETE ステートメントにネストされたSELECT ステートメント。 |
| bulkoperationcolumns | 一括操作が変更するテーブルのカラム。カンマ区切りで指定します。例えば、次のクエリを考えてみましょう:
INSERT INTO Account(account_name, account_type) SELECT customer_name, customer_type FROM Customer#TEMP[_query.bulkoperationcolumns] は次のカラムを返します。 [account_name], [account_type] |
| temptablecolumns | 一括操作でtemp テーブルから選択されたカラム。カンマ区切りで指定します。例えば、次のクエリを考えてみましょう:
DELETE FROM Account WHERE EXISTS SELECT customer_name, customer_type FROM Customer#TEMP[_query.temptablecolumns] は次のカラムを返します。 [customer_name], [customer_type] |
| nullupdates | null 値またはnull パラメータ値を含む、UPDATE ステートメントのカンマ区切りのカラム。 |
| isschemaonly | クエリがスキーマ情報のみを取得するかどうか。 |
値フォーマッタを使うと、特定のフォーマットを持つ新しい値を生成できます。値フォーマッタを使用して、値に対して文字列、日付、算術演算を実行できます。
フォーマッタを呼び出すための一般的なフォーマット:
[ item.attribute | formatter(parameters) | formatter (parameters) | ...]formatter はフォーマッタの名前で、parameters はフォーマッタのアウトプットを制御するためのオプションのパラメータセットです。フォーマッタの出力は、パイプ文字("|")を使用して別のフォーマッタへの入力として提供できます。
<api:set attr="input1.id" value="[myid | replace('*', '-')]"/><api:call op="fileListDir">
<api:check attr="name" value="[filename|tolower | endswith('.log')]">
<api:push/>
</api:check>
</api:call>
属性が存在しない場合はNULL、存在する場合は値を返します。
属性配列で文字列が見つかったときのインデックスを返します。インデックスは1ベースです。
属性値をBase64 デコードされた文字列に変換します。
属性値をBase64 エンコードされた文字列に変換します。
最初の文字のみを大文字にした元の属性値を返します。
すべての単語の最初の文字を大文字にした元の属性値を返します。
最初のパラメータで指定された幅の文字列の中心の属性値を返します。パディングは、2番目のパラメータで指定されたfillchar を使用して行われます。
属性値がパラメータ値を含む場合はtrue(またはifcontains)を返し、それ以外の場合はfalse(ifnotcontains)を返します。
最初のパラメータで指定された部分文字列の属性値の出現回数を返します。
通貨としてフォーマットされた数値を返します。
10進数としてフォーマットされた数値を返します。
属性の存在を確認し、存在しない場合は指定されたパラメータ値を返します。
属性値が空の場合は指定された値を返し、それ以外の場合は元の属性値を返します。
属性値が指定されたパラメータで終わるかどうかを決定します。属性が値で終わっている場合はtrue(またはiftrue)を返し、それ以外の場合はfalse(またはiffalse)を返します。
属性値を最初のパラメータの値と比較して、同じ場合はtrue(またはifequals)を返し、それ以外の場合はfalse(またはifnotequals)を返します。
属性値にあるすべてのタブ文字をスペースに置き換えます。パラメータで指定されたタブサイズが指定されていない場合は、デフォルトの8文字のタブサイズが使用されます。
数式を評価します。
属性値で部分文字列が見つかったときのゼロベースの最小のインデックスを返します。
属性値の文字数を返します。
渡されたキーとHmacSHAMD5 アルゴリズムで文字列を暗号化します。
渡されたキーとHmacSHA1 アルゴリズムで文字列を暗号化します。
渡されたキーとHmacSHA256 アルゴリズムで文字列を暗号化します。
渡されたキーとHmacSHA512 アルゴリズムで文字列を暗号化します。
属性値を最初のパラメータの値と比較して、同じ場合はtrue(またはifequals)を返し、それ以外の場合はfalse(またはifnotequals)を返します。
属性値が最初のパラメータと一致する場合はtrue(またはifmatch)を返し、それ以外の場合はfalse(またはifnotmatch)を返します。
属性値を確認してtrue の場合はtrue(またはiftrue)、false の場合はfalse(またはiffalse)を返します。
複数の値を区切り文字で区切られた文字列に分解します。
指定したインデックスに指定した文字列を挿入します。
属性値のすべての文字がアルファベットで、少なくとも1つの文字がある場合はtrue(またはifalpha)を返し、それ以外の場合はfalse(ifnotalpha)を返します。
属性値のすべての文字がアルファベットで、少なくとも1つの文字がある場合はtrue(またはifalpha)を返し、それ以外の場合はfalse(ifnotalpha)を返します。
属性値のすべての文字が英数字で、少なくとも1つの文字がある場合はtrue(またはifalphanum)を返し、それ以外の場合はfalse(ifnotalphanum)を返します。
属性値のすべての文字が英数字で、少なくとも1つの文字がある場合はtrue(またはifalphanum)を返し、それ以外の場合はfalse(ifnotalphanum)を返します。
属性値のすべての文字が数字で、少なくとも1つの文字がある場合はtrue(またはifnum)を返し、それ以外の場合はfalse(ifnotnum)を返します。
属性値のすべての文字が小文字で、少なくとも1つの文字がある場合はtrue(またはiflower)を返し、それ以外の場合はfalse(ifnotlower)を返します。
属性値のすべての文字が数字で、少なくとも1つの文字がある場合はtrue(またはifnum)を返し、それ以外の場合はfalse(ifnotnum)を返します。
属性値が空白文字のみで、少なくとも1つの文字がある場合はtrue(またはifspace)を返し、それ以外の場合はfalse(ifnotspace)を返します。
属性値のすべての文字が大文字で、少なくとも1つの文字がある場合はtrue(またはifupper)を返し、それ以外の場合はfalse(ifnotupper)を返します。
複数の値を区切り文字で区切られた文字列に分解します。
属性値をJSON エスケープされた単一行の文字列に変換します。
最初のパラメータで指定した長さの文字列で左揃えされた属性値を返します。パディングは、2番目のパラメータで指定されたfillchar を使用して行われます。
属性値で部分文字列が見つかったときのゼロベースの最小のインデックスを返します。
最初のパラメータで指定した長さの文字列で左揃えされた属性値を返します。パディングは、2番目のパラメータで指定されたfillchar を使用して行われます。
属性値で表される文字列を、最初のパラメータで区切られたトークンに分割し、2番目のパラメータで指定されたインデックスのトークンを返します。左から数えます。
属性値で表される文字列から、pattern パラメータで指定された正規表現が出現しているものを検索します。
属性値のMD5 ハッシュを計算します。
属性値を最初のパラメータの値と比較します。異なる場合はtrue(またはnotequals)、等しい場合はfalse(またはequals)を返します。
属性値で表される文字列から空白を削除します。
パーセンテージとしてフォーマットされた数値を返します。
属性値で表される文字列から、pattern パラメータで指定された正規表現が出現しているものを検索します。
属性値で表される文字列から、pattern パラメータで指定された正規表現が出現しているものを検索します。
属性値で見つかったすべての正規表現パターンをreplacewith で置き換えます。
属性値から文字を削除します。最初のパラメータで指定されたゼロベースのインデックスから始まります。
属性値で表される文字列内の最初のパラメータのすべての出現箇所を2番目のパラメータの値で置き換えます。
属性値で部分文字列が見つかったときのゼロベースの最大のインデックスを返します。
2番目のパラメータで指定した長さの文字列で右揃えされた属性値を返します。パディングは、最初のパラメータで指定されたfillchar を使用して行われます。
属性値で表される文字列を、最初のパラメータで区切られたトークンに分割し、2番目のパラメータで指定されたインデックスのトークンを返します。右から数えます。
属性値のSHA-1 ハッシュを計算します。
属性値の部分文字列を返します。パラメータで指定されたインデックスから始まり、右にカウントします。
属性値で表される文字列を、最初のパラメータで区切られたトークンに分割し、2番目のパラメータで指定されたインデックスのトークンを返します。左から数えます。
属性値をSQL エスケープされた単一行の文字列に変換します。
属性値が指定したパラメータから始まっている場合はtrue(またはiftrue)を返し、それ以外の場合はfalse(またはiffalse)を返します。
HTML マークアップが削除された文字列を返します。
属性値の部分文字列を返します。パラメータで指定されたインデックスから始まります。
文字列内の文字のみを返します。
文字列内の英数字のみを返します。
すべての文字が小文字に変換された属性値で表される文字列を返します。
すべての文字が大文字に変換された属性値で表される文字列を返します。
属性の先頭と末尾のスペースを削除します。
属性の末尾のスペースを削除します。
属性の先頭のスペースを削除します。
属性値を、パラメータで指定された文字数に切り捨てます。
属性値をURL エンコード文字列に変換します。
属性値をURL デコード文字列に変換します。
文字列を指定された文字数に折り返します。
指定された区切り文字を使用して連結された属性のすべての値を含む文字列を返します。
属性値をXML デコードされた文字列に変換します。
属性値をXML エンコードされた文字列に変換します。
属性値とパラメータ値によって表される日付の相対値を示す符号付き数値を返します。
現在のシステム日時を、パラメータで指定されている場合は、指定された形式で返します。
日付の指定されたdate 部分に、指定されたnumber 間隔(符号付き整数)を加算したdatetime の文字列値を返します。
現在と2つ目のパラメータで指定した日付との差を(1つ目のパラメータで指定した単位で)返します。
属性値で表される日付の、1から31までの値で表される日の部分を返します。
属性値で表される日付の曜日を返します。
属性値で表される日付の、1から366までの値で表される年日を返します。
現在のシステムファイルの時刻の日時を返します。
有効なファイル時刻を、パラメータが指定されている場合は、パラメータで指定された形式の有効な日時値に変換します。
属性値で表される4桁の年がうるう年であればtrue(またはifleap)、それ以外の場合はfalse(またはifnotleap)を返します。
属性値で表される日付の、1から12までの値で表される月の部分を返します。
現在のシステム日時を、パラメータで指定されている場合は、指定された形式で返します。
パラメータが指定されている場合は、パラメータで指定された形式の属性値で指定された日付を返します。
有効な日時を有効なファイル時刻値に変換します。
属性値で指定された数値の月の名前を返します。
属性値で指定された日付をUTC に変換し、outputformat パラメータが指定されている場合はそれに合わせてフォーマットして返します。
現在のシステムのUTC 日時を返します。
曜日を、月曜日が0、日曜日が6の整数値で返します。
属性値で表される日付の年部分を返します。
数値属性値の絶対値を返します。
数値属性値とパラメータで指定された値の合計を返します。
2つの値のAND を返します。両側の値は、1/0、yes/no、true/false である必要があります。
数値属性値以上で最小の整数を返します。
数値属性値をパラメータの指定された値で除算した結果を返します。
数値属性値をパラメータの指定された値で除算した結果を返します。
指定された数値属性値以下で最大の整数を返します。
属性値がパラメータ値より大きい場合はtrue(またはifgreater)を返し、それ以外の場合はfalse(ifnotgreater)を返します。
属性値が、1つ目のパラメータ値以上で2つ目のパラメータ値以下の場合はtrue(またはifbetween)を返し、それ以外の場合はfalse(ifnotbetween)を返します。
属性値がパラメータ値と等しい場合はtrue(またはifequal)を返し、それ以外の場合はfalse(ifnotequal)を返します。
属性値がパラメータ値より大きい場合はtrue(またはifgreater)を返し、それ以外の場合はfalse(ifnotgreater)を返します。
属性値がパラメータ値より小さい場合はtrue(またはifless)を返し、それ以外の場合はfalse(ifnotless)を返します。
属性値がパラメータ値より小さい場合はtrue(またはifless)を返し、それ以外の場合はfalse(ifnotless)を返します。
数値属性値とパラメータで指定された値の合計を返します。
数値属性値を指定されたパラメータ値で除算した係数を返します。
パラメータ値で指定された指数で累乗された数値属性値を返します。
パラメータで指定された小数点以下の桁数に丸められた数値属性値を返します。
数値属性値とパラメータで指定された値の差を返します。
数値属性値を指定されたパラメータ値で除算した係数を返します。
数値属性値をパラメータの指定された値で乗算した結果を返します。
2つの値のOR を返します。両側の値は、1/0、yes/no、true/false である必要があります。
パラメータ値で指定された指数で累乗された数値属性値を返します。
0 とパラメータ値の間のランダムな整数を返します。
0 とパラメータ値の間のランダムな整数を返します。
パラメータで指定された小数点以下の桁数に丸められた数値属性値を返します。
数値属性値の平方根を返します。
数値属性値とパラメータで指定された値の差を返します。
API Script の構文は、"api:" を接頭辞に取るXML エレメントであるキーワードを使って定義されます。キーワードは、プログラミングもしくはスクリプト言語の一般的な機能である、条件分岐、ループ、およびフロー制御を含みます。ただし、API Script は、フィード操作や生成に特化した専用のキーワードも含みます。例えば、api:call、api:enum、およびapi:set があります。
キーワードの多くは、その動作を定義もしくは変化させるパラメータを取ります。パラメータは、キーワードエレメントのXML アトリビュートとして定義されます。このセクションでは、それぞれのキーワードについて、必須およびオプションのパラメータ、コードサンプルが記載されています。
API Script では、キーワードでスコープを持つものがあります。つまり、他のキーワードのボディの内部にネストされるキーワードがあり、ネストされ方はAPI Script 言語において重要な意味を持ちます。
api:break キーワードは、api:call、もしくはapi:enum の反復を終了するために使われます。他のAPI Script キーワードのスコープ外で使われた場合には、スクリプト全体を終了するために使うこともできます。
None
None
api:enum から出る。次の例では、foo アイテムの最初の2つのアトリビュートをリストします:
<api:set attr="foo.attr1" value="value1"/>
<api:set attr="foo.attr2" value="value2"/>
<api:set attr="foo.attr3" value="value3"/>
<api:enum item="foo">
[_index]: [_attr] has the value [_value].
<api:equals attr="_index" value="2">
<api:break/>
</api:equals>
</api:enum>
api:call キーワードは、オペレーションを呼び出すことに使われます。有効なオペレーションは次のとおり:
オペレーションは、アイテムをインプットに取り、フィードをアウトプットします。api:call のスコープは、呼び出しから返されたフィード内のすべてのアイテムに対し実行されます。api:call のスコープ内では、返されたアイテムのアトリビュートを調べ、変更することができます。そして、それらのアトリビュートを他のオペレーションのインプットとして提供することができます。このようにオペレーションパイプラインが形成されます。もしくは、アイテムをアウトプットに追加することもできます。
api:call が起こるたびに、内部のアイテムスタックに新しいアイテムが追加されます。スタックの一番上のアイテムがデフォルトアイテムです。アイテム名が呼び出しのインプットで明示的に指定されていない場合には、このアイテムがapi:call にインプットを提供します。
呼び出されたオペレーションはアトリビュートにデフォルトアイテムを書き込み、api:push がデフォルトアイテムをアウトプットに追加します。アイテムを追加する際に、スタックの一番上のデフォルトアイテムからのアトリビュートだけが追加されます。
デフォルトアイテムは、アイテムが反復されると消され、api:call は次のアイテムに働きます。つまり、次の反復では、api:callの前の反復のvalue セットを読むことはできません。反復に渡って値を残すには、api:set を使って、名前を明示したアイテムにコピーします。
デフォルトのアイテムは_ もしくは明示的に_out1、_out2、_out[n]、(N はスタック の深さです)と示すことができます。これにより、実行処理におけるすべての有効な値を読むことができます。ルックアップ処理はデフォルトアイテムからはじまり、値が見つかるまでスタック内を読みます。
下の例では、それぞれの呼び出しでアイテムがスタックの一番上に追加されること、およびデフォルトアイテムがそれぞれの呼び出しスコープ内で変化することを確認できます。
<api:call op="operation1">
The default item here is _out1
A push here would push the attributes from _out1
The input item used to call operation2 is also _out1
<api:call op="operation2">
The default item here is _out2
A push here will push the attributes from _out2
If there was another api:call here the input item used would be _out2
_out2 is swept clean here for the next iteration
</api:call>
The default item here is again _out1
A push here would again push the attributes from _out1
The input item at this level is again _out1
_out1 is swept clean here for the next iteration
</api:call>
インプットを呼び出しに提供する3つの方法があります:
<api:set attr="mask" value="*.txt"/>
<api:set attr="path" value="C:\\"/>
<api:call op="fileListDir">
...
</api:call>
<api:set attr="mask" value="*.* -- Will be ignored --"/>
<api:set attr="myinput.mask" value="*.txt"/>
<api:set attr="myinput.path" value="C:\\"/>
<api:call op="fileListDir" in="myinput">
...
</api:call>
<api:set attr="myinput.mask" value="*.txt -- will be overridden --"/>
<api:set attr="myinput.path" value="C:\\"/>
<api:call op="fileListDir?mask=*.rsb" in="myinput">
...
</api:call>
out[put]:アウトプットアトリビュートが位置するアイテム。api:call のスコープで、指定されたアイテム名を使って、現在のアウトプットアイテムを取得することができます。_out[n]、または _pipe を使って、呼び出し結果を参照することができます。
Note:呼び出しのスコープ外では、呼び出し内のアトリビュートセットは使用できません。これは、呼び出しのそれぞれの反復は、前の反復のアトリビュートを削除するためで、呼び出しの最後にはなにも残りません。呼び出しのスコープ外のアトリビュートにアクセスするためには、api:set を使って呼び出しの外で使いたいアイテムにアトリビュートを明示的にコピーします。
デフォルトアイテムをインプットとしてオペレーションを呼び出します:
<api:set attr="path" value="C:\myfiles"/>
<api:call op="fileListDir">
<api:push/>
</api:call>
api:case キーワードは、api:select とともに使われます。api:case キーワードは、api:select の値がapi:caseに合致する場合に実行されるAPI Script のブロックからなります。
None
条件によりアイコンを表示する。api:case エレメントは、company_name アトリビュートの"CompanyA"および"CompanyB" に合致します。そしてケースに関連するアクションがとられます。
<api:select value="[company_name]">
<api:case value="CompanyA">
<img src="http://www.companya.com/favicon.ico" />
</api:case>
<api:case value="CompanyB">
<img src="http://www.companyb.com/favicon.ico" />
</api:case>
<api:default>
<img src="http://www.myhosting.com/generic.ico"/>
</api:default>
</api:select>
api:catch キーワードは、スクリプト内で例外処理ブロックを作成するために使われます。api:try に加え、次のキーワード内でapi:catch ブロックを有することができます。スコープは黙示的api:try セクションとして機能します:
例外をスローしキャッチする。
api:call の中で、APIException が投げられ、キャッチされます。キーワードのスコープ内で、rsb エンコードおよびrsb メッセージアトリビュートが、現在のアイテムに足され、はき出されます。
<api:call op="...">
<api:throw code="myerror" description="thedescription" details="Other Details."/>
<api:catch code="myerror">
<api:set attr="api:ecode" value="[_code]"/>
<api:set attr="api:emessage" value="[_description]: [_details]"/>
<api:push/>
</api:catch>
</api:call>
すべての例外をキャッチする:
<api:catch code="*">
An exception occurred. Code: [_code], Message: [_desc]
</api:catch>
api:check キーワードは、他の値のパラメータと同時もしくは別に使うことができます。パラメータ値が無しの場合は、api:check のボディが実行される前に、アトリビュートがアイテムの中に存在し、null 文字列ではないことを確認します。
パラメータ値が指定されている場合は、api:check ボディはエクスプレッションがtrue と評価された場合のみ実行します。他の値はfalse となります。評価は大文字・小文字の区別が必要です。
他のAPI Script のシンプルな条件文と同様に、これはapi:else キーワードとペアで使うことができます。api:equals とは異なり、api:check はアイテムにアトリビュートが存在しない場合でも例外をスローしないことに注意してください。
<api:check attr="_input.In_Stock">
...
</api:check>
api:continue キーワードは、api:call、もしくはapi:enum の次の反復に移る際に使われます。
ディレクトリ内のファイルのみをリストするフィードの作成。api:continue キーワードは、ディレクトリを表すアイテムをスキップするために使われます。
<api:call op="fileListDir">
<api:equals attr="file:isdir" value="true">
<api:continue/>
</api:equals>
<api:push/>
</api:call>
Single-value アトリビュートの値をリストする。api:continue を使って、multivalue のアトリビュートをスキップすることができます。
<api:set attr="foo.multiattr#" value="value1"/>
<api:set attr="foo.multiattr#" value="value2"/>
<api:set attr="foo.attr2" value="value3"/>
<api:enum item="foo">
<api:notequals attr="_count" value="1">
<api:continue/>
</api:notequals>
[_index]: [_attr] has the value [_value] <!-- only evaluated for attr2 -->
</api:enum>
api:default キーワードは、api:select キーワードとともに使われます。api:default キーワードは、api:select の値がapi:caseのどの値にも合致しない場合に実行されるAPI Script のブロックからなります。
<api:select value="[company_name]">
<api:case value="CompanyA">
<img src="http://www.companya.com/favicon.ico" />
</api:case>
<api:case value="CompanyB">
<img src="http://www.companyb.com/favicon.ico" />
</api:case>
<api:default>
<img src="http://www.myhosting.com/generic.ico"/>
</api:default>
</api:select>
<p>
api:else キーワードは、api:exists もしくはapi:match などのテストが失敗した場合に、代替のコードブロックを実行するために使われます。これは、呼び出しがアウトプットアイテムを生成することに失敗した場合に、api:call 内の代替コードブロックを実行するためにも使われます。
他の言語とは異なり、API Script はそれが 属するテストスコープの内部にapi:else 構文を必要とします。
<api:call op="fileListDir" out="out">
<api:null attr="filename">
<api:set attr="title" value="Unnamed File"/>
<api:else>
<api:set attr="title" value="[filename]"/>
</api:else>
</api:null>
<api:push title="[title]">
[out.*]
</api:push>
</api:call>
api:enum キーワードは、アイテム内のアトリビュート、制限のないリスト、与えられた値の範囲、および複数の値を持つアトリビュートの値を列挙することに使われます。api:enum のボディは、反復されるセットのエレメントごとに実行されます。
アトリビュート名、および"input" と名付けられたアイテムのアトリビュート値を表示:
<api:set item="input" attr="Greeting" value="Hello" />
<api:set item="input" attr="Goodbye" value="See ya" />
<api:enum item="input">
[_attr] is [_value]
<br/>
</api:enum>
goodbye is See ya greeting is Hello
値のリストを列挙するには、api:enum のリストおよびセパレータパラメータを使います。例えば、次のコードはcolors アットリビュートで指定された色をリストします。
<api:set attr="colors" value="violet, indigo, blue, green, yellow, orange, red"/>
<api:enum list="[colors]" separator=",">
[_value]
</api:enum>
値のレンジを列挙するには、レンジアトリビュートを使います。例えば、次のコードはa からz の文字セット、および1 から25 の数字をリストします:
<api:enum range="a..z">
[_value]
</api:enum>
<api:enum range="Z..A">
[_value]
</api:enum>
<api:enum range="1..25">
[_value]
</api:enum>
複数の値を持つアトリビュートの値すべてを列挙するには、複数の値を持つアトリビュートを指定するためにattr アーギュメントを使い、expand をtrue に設定します。
<api:set attr="foo.email#1" value="[email protected]"/>
<api:set attr="foo.email#2" value="[email protected]"/>
<api:enum attr="foo.email" expand="true">
([_index]) [_attr] -> [_value]
</api:enum>
上記の例は次のアウトプットになります:
(1) email#1 -> [email protected] (2) email#2 -> [email protected]
api:equals キーワードは、あるアトリビュートの値と参照値を比較します。api:check とは異なり、api:equals キーワードは指定されたアイテムが指定されたアトリビュートを含まない場合、例外をスローします。指定されたアトリビュートが存在し、その値がマッチする場合、比較が行われます。
Note:api:equals およびapi:check はどちらも与えられた値と比較される値を持つアトリビュート名を求めます。もし2つの値を比較する場合には、代わりにapi:selectを使うことができます。次に例を示します。
<api:select value="[company_name]">
<api:case value="CompanyA">
<img src="http://www.companya.com/favicon.ico" />
</api:case>
<api:case value="CompanyB">
<img src="http://www.companyb.com/favicon.ico" />
</api:case>
<api:default>
<img src="http://www.myhosting.com/generic.ico"/>
</api:default>
</api:select>
他の条件キーワードと同様に、api:equals のボディは、api:else キーワードを含むことがあり、値がマッチしない場合に実行されます。以下は、Err ファイルを除くすべてのファイルをリストします:
<api:call op="fileListDir">
<api:equals attr="file:extension" value=".err">
<api:else>
<api:push/>
</api:else>
</api:equals>
</api:call>
api:exists キーワードは、指定されたアイテムにおいてアトリビュートが値を持っているかをチェックします。api:notnull キーワードは、api:exists の類義語です。
<api:call op="fileListDir" output="out">
<api:exists attr="filename">
<api:set attr="title" value="[filename]"/>
<api:else>
<api:set attr="title" value="Unnamed File"/>
</api:else>
</api:exists>
<api:push title="[title]">
[out.file:*]
</api:push>
</api:call>
api:first キーワードは、api:call、もしくはapi:enum キーワードの反復のはじめだけ、スクリプトの一部を使うために使われます。これは、ヘッディングを生成したり、残りのフィードに行く前にフィードのはじめのアイテムを調べたりするのに便利な方法です。
反復のはじめに、api:first ボディは、api:firstがapi:call、もしくはapi:enum ボディ内のどこに位置しているかにかかわらず、api:call、もしくはapi:enum 内の他のコードより前に、実行されます。強いて言えば、api:first は、api:call、もしくはapi:enum ボディの最初に置くことを推奨します。
スコープにアイテムがない場合、api:first、およびapi:last はどちらも実行されません。
それぞれのアイテムが行として表示されているHTML テーブルを作成する:
<api:call op="listCustomers">
<api:first>
<table>
<thead>
<api:enum item="customer">
<td>[_attr]</td>
</api:enum>
</thead>
</api:first>
<tr>
<api:enum item="customer">
<td>[_value]</td>
</api:enum>
</tr>
<api:last>
</table>
</api:last>
</api:call>
api:finally キーワードは、コントロールがapi:call、api:try、、またはapi:script 構文を離れた後にスクリプトのセクションを実行するのに使われます。これは、生成されたドキュメントのフォーマットをきれいにするのに便利です。
api:finally ブロックは、ハンドルされていない例外が発生された場合に実行されます。これによりタグが閉じていることが確認できます:
<table>
<api:call op="listCustomers" out="customer">
<api:first>
<thead>
<api:enum item="customer">
<td>[_attr]</td>
</api:enum>
</thead>
</api:first>
<tr>
<api:enum item="customer">
<td>[_value]</td>
</api:enum>
</tr>
<api:finally>
</table> <!-- ensure tags are still closed -->
</api:finally>
</api:call>
api:if キーワードを、アイテム、アトリビュート、値を含むエクスプレッションを評価するために使うことができます。キーワードのスコープは、特定のエクスプレッションがtrue と評価された場合に実行されます。
None
二つの値のシンプルな比較を評価。
<api:if exp="[attr] == 10">
与えられた値と、与えられたアトリビュートの値が同じ値かどうかを評価:
<api:set attr="attr1" value="value1"/>
<api:set attr="attr2" value="value2"/>
<api:if attr="attr1" value="[attr2]" operator="notequals"> <!-- Evaluates to true -->
<api:else>
False
</api:else>
True
</api:if>
アトリビュートが存在する場合にはチェック:
<api:set attr="exists" value="true"/>
<api:if attr="exists"> <!-- Evaluates to true -->
[exists]
</api:if>
api:include キーワードは、他のファイルからのAPI Script を含むことに使われます。他のプログラミング言語においてtraditional が含まれているように、api:include はファイルパラメータで指定されるファイルの内容にリプレースされます。
重複なしにそれぞれのスクリプトのアトリビュート(会社名、著作権)をインポートする:
<api:include file="globals.rsb"/>
[companyname]
[copyright]
<api:call ...>
api:info キーワードは、スクリプトのメタデータを説明するために使われます。この情報は、Sync App でユーザーインプットベーシックなエラーチェックおよびデフォルト値の設定に使われます。api:info キーワードには、次のような情報が含まれます。
次のパラメータはtable 自体を定義します:
api:info キーワードは、スクリプトインプット、およびアウトプットに加えて、カラムを定義するスコープに含まれる追加パラメータを持ちます。これらのパラメータはAPI Script キーワードではなく、api:info の追加情報であることに注意してください。
他のオプションアトリビュートは、カラムについてより多くの情報を提供し、Sync App がさまざまなツールにおいてこれらのカラムを正しく表示することを実現します。
<attr
name="Name"
xs:type="string"
other:xPath="name/full"
readonly="true"
columnsize="100"
desc="The name of the person."
/>
インプットエレメントは、tables、およびstored procedures の双方のスキーマに使うことができます。
パラメータのアトリビュートは、ユーザーに対してインプットの追加情報を提供し、エンジンが基礎チェックを行うことを許可します。
stored procedure スキーマでは、一つもしくは複数のエレメントがstored procedure のインプットを説明するために使われます。table スキーマでは、インプットエレメントは、WHERE 句でのみ使うことできる、疑似カラムを定義します。
XML データソースでは、疑似カラムはXPath を含むことができません。
<input
name="name"
desc="Example of an input parameter"
default="defValue"
req="true"
values="value1, value2, value3"
xs:type="string"
/>
オペレーションのアウトプットを説明するアウトプットパラメータ。ただし、これらはSync App には無視されます。よって、オペレーションのアウトプットは、情報ブロックでの定義から独立しています。
<output name="Id"
desc="The unique identifier of the record."
xs:type="string"
other:xPath="content/properties/Id"
/>
<api:info title="NorthwindOData" desc="Parse an XML document (NorthwindOdata.xml) into rows.">
<attr name="ID" xs:type="int" key="true" other:xPath="content/properties/ID" />
<attr name="EmployeeID" xs:type="int" other:xPath="content/properties/EmployeeID" />
<attr name="Name" xs:type="string" other:xPath="content/properties/Name" />
<attr name="TotalExpense" xs:type="double" other:xPath="content/properties/TotalExpense" />
<attr name="HireDate" xs:type="datetime" other:xPath="content/properties/HireDate" />
<attr name="Salary" xs:type="int" other:xPath="content/properties/Salary" />
</api:info>
以下は、Bing 検索API を使ったウェブ検索のストアドプロシージャのメタデータを説明します:
<api:info title="SearchWeb" desc="Use Bing to search the Web.">
<output name="Id" xs:type="string" other:xPath="content/properties/ID" />
<output name="URL" xs:type="string" other:xPath="content/properties/Url" />
<output name="Title" xs:type="string" other:xPath="content/properties/Title" />
<output name="Description" xs:type="string" other:xPath="content/properties/Description" />
<output name="DisplayURL" xs:type="datetime" other:xPath="content/properties/DisplayUrl" />
<input name="SearchTerms" />
</api:info>
api:last キーワードのスコープ内のAPI Script キーワードは、最後のアイテムの出現後のみ、かつアイテムがapi:call、もしくはapi:enum で返された場合のみ、実行されます。
api:last 構文は、最後のアイテムが処理された後に実行されます。これはフィードの最後のアイテムとのアクセスを保持します。スコープにアイテムがない場合、api:first、およびapi:last はどちらも実行されません。
それぞれのアイテムが行として表示されているHTML テーブルを作成する:
<api:call op="listCustomers">
<api:first>
<table>
<thead>
<api:enum item="customer">
<td>[_attr]</td>
</api:enum>
</thead>
</api:first>
<tr>
<api:enum item="customer">
<td>[_value]</td>
</api:enum>
</tr>
<api:last>
</table>
</api:last>
</api:call>
api:map キーワードは、あるアイテムのアトリビュートを別のアイテムのアトリビュートにマップするために使われます。アトリビュートは、あるアイテムから参照され、マップ文字列で指定された新しい名前で別のアイテムに書かれます。api:map キーワードは、destination アイテムを削除しません:これは、単に新しいアトリビュートを追加するだけです。もしくは、destination アイテムにアトリビュートが存在する場合には、それは上書きされ、他のアトリビュートはそのまま残ります。
customer:* = soap:*有効なアトリビュート名ではない文字は無視され、名前の終わりの境界を示します。
3個のアトリビュートをマップ:マップは、"to" アトリビュート名と、それに続く"from" アトリビュート名です。
<api:set item="item1" attr="var1" value="x"/>
<api:set item="item1" attr="var2" value="y"/>
<api:set item="item2" attr="attr1" value="z"/>
<api:map to="item2" from="item1" map="attr1=var1, attr2=var2"/>
このサンプルでは、item1 のvar1 およびvar2 アトリビュートは、item2 のattr1 、attr2、アトリビュートにそれぞれマップされます。item2 でvalue z に設定されているattr1 アトリビュートは、item1 のvar1 の値x に上書きされます。item2 に存在しないattr2 アトリビュートは、新たに作成され、item1 のvar2 の値y に設定されます。
ある接頭辞のアイテムからの複数のアトリビュートを別の接頭辞のアイテムにマップすることができます。Sync App 接頭辞(例えば soap:*)からビジネスドメインの接頭辞(例えば customer:*)に接頭辞を変更する際に便利です。次の例は、soapout アイテムのすべてのsoap:* アトリビュートからcustomer アイテムのcustomer:* 接頭辞を持つアトリビュートへのマッピングを作成します。
<api:map from="soapout" to="customer" map="customer:* = soap:*"/>
すべてのアイテムから別のアイテムにすべてのアトリビュートをコピーする:
<api:map from="copyfrom" to="copyto" map="* = *"/>
api:match キーワードは、api:equals キーワードと類似します。ただし、これは複雑なマッチング規則を許容します。
type:発見するマッチのタイプ。デフォルト値は"exact" で、値のexact match を必要とします。api:match がapi:equals と全く同一の場合。他のサポートされるタイプは、正規表現マッチングの"regex"、ファイル名パターン(e.g., *.txt)に使われるのと類似したシンプルなexpression モデルをサポートする"glob"。
Sync App の.NET 版は、.NET Framework 版の正規表現マッチングを使います。Java 版は、Java 正規表現構造を使います。
None
正規表現パターンを使って浮動小数点数をチェック。パターンがマッチすれば、アイテムが追加されます。
<api:match pattern="\[-+\]?\[0-9\]*\.?\[0-9\]*" type="regex" value="-3.14">
<api:push/>
</api:match>
api:notequals キーワードは、アトリビュートが特定の値にマッチしないことを確認します。これは、api:equals キーワードと類似した動きをします。
<api:call op="fileListDir">
<api:notequals attr="file:extension" value=".err">
<api:push/>
</api:notequals>
</api:call>
api:null キーワードは、アトリビュートが指定されたアイテム内に存在しないことをチェックします。
<api:call op="fileListDir" output="out">
<api:null attr="filename">
<api:set attr="title" value="Unnamed File"/>
<api:else>
<api:set attr="title" value="[filename]"/>
</api:else>
</api:null>
<api:push title="[title]">
[out.file:*]
</api:push>
</api:call>
api:notnull キーワードは、アトリビュートが指定されたアイテムに値を持っているかどうかをチェックします。api:exists キーワードは、api:notnull の類義語です。
<api:call op="fileListDir" output="out">
<api:notnull attr="filename">
<api:set attr="[title]" value="[filename]"/>
<api:else>
<api:set attr="[title]" value="Unnamed file"/>
</api:else>
</api:notnull>
<api:push title="[title]">
[out.file:*]
</api:push>
</api:call>
api:push キーワードは、アイテムをスクリプトのアウトプットフィードに追加します。スクリプトにapi:push エレメントがない場合、ここから結果としてアウトプットアイテムは出されません。
<api:push op="myOp"/>
これは、次の簡易版です。
<api:call op="myOp">
<api:push/>
</api:call>
<api:call op="fileListDir?mask=*.log">
<api:push>
The .log file contains details about the transmission, including any error messages.
</api:push>
</api:call>
api:script キーワードは、スクリプトブロックを作成するために使われます はSQL 構文に対応する.
None
Call two operations that manipulate remote JSON.この例は、OData API、odata.org Northwind リファレンスサービスを使います。次の説明では、初めのブロックはスクリプトがPOST メソッドを使ってアクセスされた場合のみ実行されます(INSERT 構文が実行されます)、一方、二つ目のブロックはスクリプトがGET メソッドを使ってアクセスされた場合のみ実行されます(SELECT 構文が実行されます)。
<api:script method="POST">
<api:set attr="sql.rec:name" value="[_input.name]"/>
<api:set attr="sql.rec:address" value="[_input.address]"/>
<api:call op="sqliteInsert" in="sql">
<api:push/>
</api:call>
</api:script>
<api:script method="GET">
<api:set attr="sql.query" value="SELECT * FROM [sql.table];"/>
<api:call op="sqliteQuery" in="sql">
<api:push/>
</api:call>
</api:script>
api:select キーワードは、他のプログラミング言語のswitch-case ブロックに類似しており、複雑な条件分を作成するために使われます。api:select のボディは、一つかそれ以上のapi:case キーワードおよび一つのapi:default キーワードを有します。
api:select の値は、api:case で指定された値にマッチします。api:case 構文のボディは、キーワードおよび、指定された値がapi:select キーワードの値に合致する場合に実行される構文を有します。
api:default 構文のボディは、api:case 構文の結果のどれもがマッチしない場合のみ実行されます。api:default キーワードは、パラメータを持たず、api:select の中で一度のみ出現します。
None
会社名に応じてアイコンを設定。api:case エレメントは、company_name アトリビュートの"CompanyA"および"CompanyB"に合致します。そしてケースに関連するアクションがとられます。
<api:select value="[company_name]">
<api:case value="CompanyA">
<img src="http://www.companya.com/favicon.ico" />
</api:case>
<api:case value="CompanyB">
<img src="http://www.companyb.com/favicon.ico" />
</api:case>
<api:default>
<img src="http://www.myhosting.com/generic.ico"/>
</api:default>
</api:select>
<p>
api:set キーワードはアトリビュートで値を設定します。アトリビュートが、存在しないアイテム内に設定されている場合、アイテムは自動的に生成されます。
api:set を使って値を設定する方法は2種類あります。値のパラメータを設定するか、マルチラインで複雑な大きな値の場合には、キーワード自身のスコープを使って値を設定することもできます。
キーワードのスコープを使って、"input" という名前のアイテムのメッセージアトリビュートの値を設定します:
<api:set item="input" attr="message">
Dear [name],
You have won a cruise trip to Hawaii.
Please confirm your acceptance by [date].
Thanks, [sales]
</api:set>
api:setc キーワードは、API Script 内のかぎ括弧などの特殊文字をエスケープすることなく、静的なテキストを追加することを可能にします。特殊文字はバックスラッシュでエスケープできますが、このキーワードはショートカットを提供します。例えば、このキーワードはXPath を簡単に設定することができます。
None
エスケープされていないXPath を設定:
<api:setc attr="xpath" value="/root/book[1]/@name" />
api:setm キーワードは、api:set の省略であり、複数のセットを一つのキーワードから実行するために使われます。
\r\n により区切られた、それぞれのラインが異なるオペレーションセットです。Python のように、複数値はシングルクオート(''')で指定されます。
はじめのイコールサイン("=") はアトリビュート名と値を区別します。これは、アトリビュート名がスペースを含むことができることを意味します。ただし、最初と最後のスペースは無視されます。例で示されているように、最初と最後のスペースを含むためには引用符を使うことができます。
None
キーワードのスコープを使ってコンタクトアトリビュートを設定:
<api:setm>
name = ContactName
company = ContactCompany
address = 600 Market Street
includespace = " This string has a leading space"
</api:setm>
api:throw キーワードは、スクリプト内から(例外)エラーをあげるために使われます。
None
次のサンプルは、エラーコードおよび説明を明示的に定義します:
<api:throw code="myerror" desc="thedescription" />
api:try およびapi:catch キーワードは、スクリプト内で例外処理ブロックを作成するために使われます。api:try のボディ中のキーワードがAPIException をスローすると、Sync App は、スコープ内で合致するapi:catch キーワードを探し、キャッチボディを実行します。
None
None
例外をスローし、キャッチする。キーワードのスコープ内で、rsb エンコードおよびrsb メッセージアトリビュートが、現在のアイテムに足され、追加されます。
<api:call op="...">
<api:try>
<api:throw code="myerror" description="thedescription" details="Other Details."/>
<api:catch code="myerror">
<api:set attr="api:ecode" value="[_code]"/>
<api:set attr="api:emessage" value="[_description]: [_details]"/>
<api:push/>
</api:catch>
</api:try>
</api:call>
api:unset キーワードは、アイテムからのアトリビュート、もしくはアイテム自身を削除するために使われます。
追加される前にアイテムからアトリビュートを削除する:
<api:call op="fileListDir">
<api:unset attr="file:size"/>
<api:push/>
</api:call>
api:validate を使って、必須の値が提供されない場合にエラーをスローできます。
_query アイテムがId アトリビュートを含まない場合には、特定のメッセージが投げられます:
<api:validate attr="_query.Id" desc="The Id is required to delete."/>
| プロパティ | 説明 |
| AuthScheme | リモートサービスに接続する際に使用する認証の種類。 |
| AccessKey | アカウントのアクセスキー。この値にはセキュリティ認証情報ページからアクセスできます。 |
| SecretKey | アカウントのシークレットキー。この値にはセキュリティ認証情報ページからアクセスできます。 |
| ApiKey | IBM Cloud にユーザーを識別させるためのAPI キー。 |
| User | The user account used to authenticate. |
| Password | The password used to authenticate the user. |
| SharePointEdition | 使用しているSharePoint のエディション。SharePointOnline またはSharePointOnPremise のいずれかに設定します。 |
| ImpersonateUserMode | Specify the type of the user impersonation. It should be whether the User mode or the Admin mode. |
| プロパティ | 説明 |
| ConnectionType | JSON のファイルが保存および取得されるファイルストレージサービス、サーバー、またはファイルアクセスプロトコルを指定します。 |
| URI | JSON リソースロケーションのUniform Resource Identifier (URI)。 |
| JSONPath | 行の区切りを定義する配列エレメントのJSONPath。 |
| DataModel | JSON ドキュメントをパースしてデータベースのメタデータを生成するときに使用するデータモデルを指定します。 |
| JSONFormat | JSON ドキュメントのフォーマットを指定します。 |
| Region | S3ライクなWeb サービスのホスティングリージョン。 |
| ProjectId | Google Cloud Storage インスタンスが存在するプロジェクトのId。 |
| OracleNamespace | 使用するOracle Cloud Object Storage ネームスペース。 |
| StorageBaseURL | クラウドストレージサービスプロバイダーのURL。 |
| SimpleUploadLimit | この設定はしきい値をバイト単位で設定します。このしきい値を超えると、provider は1つのリクエストですべてをアップロードするのではなく、マルチパートでアップロードを実行します。 |
| UseVirtualHosting | True(デフォルト)の場合、バケットはホスト形式のリクエストを使用してリクエストで参照されます:http://yourbucket.s3.amazonaws.com/yourobject。False に設定した場合、Bean はパス形式のリクエストを使用します:http://s3.amazonaws.com/yourbucket/yourobject。S3ベースのカスタムサービスの場合、CustomURL が指定されていると、このプロパティはFalse に設定されることに注意してください。 |
| UseLakeFormation | このプロパティがtrue に設定される場合、AWSLakeFormation サービスは、設定されたIAM ロールに基づくユーザーに対してアクセスポリシーを適用する一時的な資格情報を取得するために使用されます。このサービスは、SAML アサーションを提供した上で、OKTA、ADFS、AzureAD、PingFederate 経由で認証する場合に使用できます。 |
| プロパティ | 説明 |
| AWSAccessKey | AWS アカウントのアクセスキーを指定します。この値には、AWS セキュリティ認証情報ページからアクセスできます。 |
| AWSSecretKey | AWS アカウントのシークレットキー。この値には、[AWS セキュリティ認証情報]ページからアクセスできます。 |
| AWSRoleARN | 認証時に使用するロールのAmazon リソースネーム。 |
| AWSPrincipalARN | AWS アカウントのSAML ID プロバイダーのARN。 |
| AWSRegion | Amazon Web サービスのホスティングリージョン。 |
| AWSCredentialsFile | 認証に使用するAWS クレデンシャルファイルへのパス。 |
| AWSCredentialsFileProfile | 提供されたAWSCredentialsFile から使用されるプロファイルの名前。 |
| AWSSessionToken | AWS のセッショントークン。 |
| AWSExternalId | 他のアカウントでロールを引き受ける際に必要となる一意の識別子。 |
| MFASerialNumber | MFA デバイスが使用されている場合は、そのシリアル番号。 |
| MFAToken | MFA デバイスから利用できる一時トークン。 |
| TemporaryTokenDuration | 一時トークンが持続する時間(秒単位)。 |
| AWSWebIdentityToken | ID プロバイダーが提供するOAuth 2.0 アクセストークンまたはOpenID Connect ID トークン。 |
| ServerSideEncryption | 有効にすると、Amazon S3バケットへのファイルアップロードがサーバー側で暗号化されます。 |
| SSEContext | A BASE64-encoded UTF-8 string holding JSON which represents a string-string (key-value) map. |
| SSEEnableS3BucketKeys | Configuration to use an S3 Bucket Key at the object level when encrypting data with AWS KMS. Enabling this will reduce the cost of server-side encryption by lowering calls to AWS KMS. |
| SSEKey | A symmetric encryption KeyManagementService key, that is used to protect the data when using ServerSideEncryption. |
| プロパティ | 説明 |
| AzureStorageAccount | Azure ストレージアカウント名。 |
| AzureAccessKey | Azure アカウントに関連付けられているストレージキー。 |
| AzureSharedAccessSignature | 認証に使用可能な共有アクセスキー署名。 |
| AzureTenant | データにアクセスするために使用されるJSON テナントを、名前(例えば、contoso.omnicrosoft.com)またはID で識別します。(条件付き) |
| AzureEnvironment | 接続するAzure ネットワーク環境を指定します。Azure アカウントが追加されたネットワークと同じである必要があります。 |
| プロパティ | 説明 |
| SSOLoginURL | ID プロバイダーのログインURL。 |
| SSOProperties | ID プロバイダーへの接続に必要な追加プロパティを、セミコロンで区切ったリスト形式で指定します。 |
| SSOExchangeUrl | SAML 応答を処理してサービスの資格情報と交換するために使用するURL。 |
| プロパティ | 説明 |
| OAuthJWTCert | JWT 証明書のストア。 |
| OAuthJWTCertType | JWT 証明書を格納するキーストアの種類。 |
| OAuthJWTCertPassword | OAuth JWT 証明書のパスワード。パスワードを必要とする証明書ストアにアクセスするために使用されます。証明書ストアがパスワードを必要としない場合は、このプロパティを空白のままにします。 |
| OAuthJWTCertSubject | OAuth JWT 証明書のサブジェクトで、ストアで一致する証明書を検索するために使用されます。部分一致と、先頭の証明書を選択するためのワイルドカード '*' をサポートします。 |
| OAuthJWTSubjectType | JWT 認証のサブタイプ。 |
| OAuthJWTPublicKeyId | JWT の公開キーのID。 |
| OAuthJWTAudience | JWT を使用できるエンティティのスペース区切りリスト。 |
| OAuthJWTValidityTime | JWT の有効期限(秒)。 |
| プロパティ | 説明 |
| KerberosKDC | ユーザーの認証で使用されるKerberos キー配布センター(KDC)サービス。 |
| KerberosRealm | ユーザー認証に使用されるKerberos 領域。 |
| KerberosSPN | Kerberos ドメインコントローラーのサービスプリンシパル名(SPN)。 |
| KerberosUser | Kerberos ドメインコントローラーのプリンシパル名。host/user@realm の形式で使用されます。 |
| KerberosKeytabFile | Kerberos プリンシパルと暗号化されたキーのペアを含むKeytab ファイル。 |
| KerberosServiceRealm | サービスのKerberos レルム。 |
| KerberosServiceKDC | サービスのKerberos KDC。 |
| KerberosTicketCache | MIT Kerberos 資格情報キャッシュファイルへのフルパス。 |
| プロパティ | 説明 |
| OAuthVersion | 使われているOAuth のバージョン。 |
| OAuthClientId | カスタムOAuth アプリケーションの作成時に割り当てられたクライアントId を指定します。(コンシューマーキーとも呼ばれます。)このID は、カスタムアプリケーションをOAuth 認可サーバーに登録します。 |
| OAuthClientSecret | カスタムOAuth アプリケーションの作成時に割り当てられたクライアントシークレットを指定します。( コンシューマーシークレット とも呼ばれます。)このシークレットは、カスタムアプリケーションをOAuth 認可サーバーに登録します。 |
| SubjectId | The user subject for which the application is requesting delegated access. |
| SubjectType | The Subject Type for the Client Credentials authentication. |
| Scope | 認証ユーザーのアプリケーションへのアクセス範囲を指定します。 通常は、カスタムOAuth アプリケーションが作成される際に(必要に応じて)指定されます。これにより、認証ユーザーは自身の資格情報に応じて適切なレベルのアクセス権を得ることができます。 |
| OAuthGrantType | 選択したOAuth フローのグラント種別を指定します。 この値は、OAuth カスタムアプリケーション作成時に設定されたグラント種別と同じである必要があります。 |
| OAuthPasswordGrantMode | OAuth Client Id およびClient Secret を渡す方法を指定します。サポートされるオプション:BASIC およびPOST。 |
| OAuthIncludeCallbackURL | アクセストークンリクエストにコールバックURL を含めるかどうか。 |
| OAuthAuthorizationURL | OAuth サービスの認可URL。 |
| OAuthAccessTokenURL | OAuth アクセストークンを取得するURL。 |
| OAuthRefreshTokenURL | OAuth トークンをリフレッシュするURL。 |
| OAuthRequestTokenURL | サービスがリクエストトークンを取得するために提供するURL。これは、OAuth 1.0 では必須です。 |
| AuthToken | OAuth アクセストークンをリクエストおよび取得するために使用される認証トークン。 |
| AuthKey | OAuth アクセストークンをリクエストおよび取得するために使用される認証シークレット。 |
| OAuthParams | OAuth アクセストークンのリクエストでparamname=value の形式でサブミットするその他のパラメータのカンマ区切りのリスト。 |
| プロパティ | 説明 |
| SSLClientCert | SSL クライアント認証(2-way SSL)のためのTLS/SSL クライアント証明書ストアを指定します。このプロパティは、他のSSL 関連プロパティと連動して、セキュアな接続を確立します。 |
| SSLClientCertType | SSL クライアント認証用のTLS/SSL クライアント証明書を格納するキーストアの種類を指定します。プラットフォームや証明書のソースに応じて、さまざまなキーストア形式から選択できます。 |
| SSLClientCertPassword | TLS/SSL クライアント証明書ストアにアクセスするために必要なパスワードを指定します。選択した証明書ストアの種類がアクセスにパスワードを必要とする場合、このプロパティを使用します。 |
| SSLClientCertSubject | TLS/SSL クライアント証明書のサブジェクトを指定し、証明書ストアで場所を検索します。 CN=www.server.com, C=US のように、識別名フィールドのカンマ区切りのリストを使用します。ワイルドカード * は、ストアの先頭の証明書を選択します。 |
| SSLMode | FTP またはFTPS サーバーに接続する際の認証メカニズム。 |
| SSLServerCert | TLS/SSL を使用して接続する際に、サーバーが受け入れ可能な証明書を指定します。 |
| プロパティ | 説明 |
| SSHAuthMode | サービスへのSSH トンネルを確立する際に使用される認証方法。 |
| SSHClientCert | SSHUser の認証に使用する証明書。 |
| SSHClientCertPassword | SSHClientCert キーのパスワード(ある場合)。 |
| SSHClientCertSubject | SSH クライアント証明書のサブジェクト。 |
| SSHClientCertType | SSHClientCert 秘密鍵の種類。 |
| SSHUser | SSH ユーザー。 |
| SSHPassword | SSH パスワード。 |
| プロパティ | 説明 |
| FirewallType | provider がプロキシベースのファイアウォールを介してトラフィックをトンネリングするために使用するプロトコルを指定します。 |
| FirewallServer | ファイアウォールを通過し、ユーザーのクエリをネットワークリソースに中継するために使用されるプロキシのIP アドレス、DNS 名、またはホスト名を識別します。 |
| FirewallPort | プロキシベースのファイアウォールで使用するTCP ポートを指定します。 |
| FirewallUser | プロキシベースのファイアウォールに認証するアカウントのユーザーID を識別します。 |
| FirewallPassword | プロキシベースのファイアウォールで認証するユーザーアカウントのパスワードを指定します。 |
| プロパティ | 説明 |
| ProxyAutoDetect | provider が、手動で指定されたプロキシサーバーを使用するのではなく、既存のプロキシサーバー構成についてシステムプロキシ設定をチェックするかどうかを指定します。 |
| ProxyServer | HTTP トラフィックをルートするプロキシサーバーのホストネームもしくはIP アドレス。 |
| ProxyPort | クライアントとの間でHTTP トラフィックをルーティングするために予約された、指定されたプロキシサーバー(ProxyServer 接続プロパティで設定)のTCP ポート。 |
| ProxyAuthScheme | ProxyServer 接続プロパティで指定されたプロキシサーバーに対して認証する際にprovider が使用する認証方法を指定します。 |
| ProxyUser | ProxyServer 接続プロパティで指定されたプロキシサーバーに登録されているユーザーアカウントのユーザー名。 |
| ProxyPassword | ProxyUser 接続プロパティで指定されたユーザーに紐付けられたパスワード。 |
| ProxySSLType | ProxyServer 接続プロパティで指定されたプロキシサーバーに接続する際に使用するSSL タイプ。 |
| ProxyExceptions | ProxyServer 接続プロパティで設定されたプロキシサーバー経由での接続が免除される宛先ホスト名またはIP のセミコロン区切りのリスト。 |
| プロパティ | 説明 |
| LogModules | ログファイルに含めるコアモジュールを指定します。セミコロンで区切られたモジュール名のリストを使用します。デフォルトでは、すべてのモジュールがログに記録されます。 |
| プロパティ | 説明 |
| Location | テーブル、ビュー、およびストアドプロシージャを定義するスキーマファイルを格納するディレクトリの場所を指定します。サービスの要件に応じて、これは絶対パスまたは相対パスのいずれかで表されます。 |
| BrowsableSchemas | レポートされるスキーマを利用可能なすべてのスキーマのサブセットに制限するオプション設定。例えば、 BrowsableSchemas=SchemaA,SchemaB,SchemaC です。 |
| Tables | レポートされるテーブルを利用可能なすべてのテーブルのサブセットに制限するオプション設定。例えば、 Tables=TableA,TableB,TableC です。 |
| Views | レポートされたビューを使用可能なテーブルのサブセットに制限するオプション設定。例えば、 Views=ViewA,ViewB,ViewC です。 |
| FlattenArrays | デフォルトで、ネスト配列はJSON 文字列として返されます。 FlattenArrays プロパティはネスト配列のエレメントをフラット化してそれぞれのカラムとするために使われます。ネスト配列から返すエレメントの数に FlattenArrays を設定します。 |
| FlattenObjects | フラット化されたオブジェクトプロパティとしてカラムを表示するには、 FlattenObjects をtrue に設定します。そうでなければ、配列にネストされたオブジェクトはJSON 文字列として返されます。 |
| QualifyColumns | Controls whether the provider will use relative column names. |
| プロパティ | 説明 |
| BackwardsCompatibilityMode | 2017バージョンで使用可能なJSON 機能を使用するには、 BackwardsCompatibilityMode をtrue に設定します。 |
| Charset | JSON ファイルに移行、またはJSON ファイルから移行した文字データをエンコードおよびデコードするための、セッション毎の文字セットを指定します。デフォルト値はUTF-8 です。 |
| Culture | この設定を使用して、provider に渡された特定のデータ型をprovider が解釈する方法を決定するカルチャ設定を指定できます。例えば、Culture='de-DE' の設定にすると、米国のマシンでもドイツ語形式で出力されます。 |
| CustomHeaders | 他のプロパティ(ContentType やFrom など)から作成されたリクエストヘッダーに追加する、追加HTTP ヘッダーを指定します。このプロパティは、特殊または非標準のAPI 用にリクエストをカスタマイズするために使用します。 |
| CustomUrlParams | HTTP リクエストに含めるカスタムURL パラメータの文字列で、field1=value1&field2=value2&field3=value3 の形式。 |
| ExcludeFiles | テーブルとしてモデル化されたファイル一式から除外するファイル拡張子のカンマ区切りリスト。 |
| FlattenRowLimit | The maximum number of rows that can result from a single flattened element. |
| FolderId | Google Drive のフォルダID。設定すると、URI で指定されたリソースの位置はすべての操作においてFolder ID からの相対位置となります。 |
| GenerateSchemaFiles | スキーマを生成して保存するユーザーの好みのタイミングを示します。 |
| IncludeDropboxTeamResources | Dropbox チームフォルダやファイルを含めるかどうかを示します。 |
| IncludeFiles | テーブルとしてモデル化されたファイル一式に含めるファイル拡張子のカンマ区切りリスト。 |
| IncludeItemsFromAllDrives | Google Drive の共有ドライブ項目を結果に含めるかどうか。存在しないかfalse に設定されている場合、共有ドライブ項目は返されません。 |
| MaxRows | 集計やGROUP BY を使用しないクエリで返される最大行数を指定します。 |
| MetadataDiscoveryURI | 複数のファイルを1つのテーブルに集約する際に使用します。このプロパティは、集約されたテーブルのスキーマを決定するために読み込む特定のファイルを指定します。 |
| Other | 特定のユースケースに対して追加の隠しプロパティを指定します。これらは通常のprovider の機能では必要ありません。複数のプロパティを定義するには、セミコロンで区切られたリストを使用します。 |
| Pagesize | JSON から返される、1ページあたりの結果の最大数を指定します。この設定は、ほとんどのユースケースに最適化されている、データソースによって設定されたデフォルトのページサイズをオーバーライドします。 |
| PathSeparator | Determines the character which will be used to replace the file separator. |
| PseudoColumns | テーブルカラムとして公開する擬似カラムを指定します。'TableName=ColumnName;TableName=ColumnName' という形式を使用します。デフォルトは空の文字列で、このプロパティを無効にします。 |
| RowScanDepth | 動的にテーブルのカラムを決定するためにスキャンする行数。 |
| Timeout | provider がタイムアウトエラーを返すまでにサーバーからの応答を待機する最大時間を秒単位で指定します。デフォルトは60秒です。タイムアウトを無効にするには0を設定します。 |
| TypeDetectionScheme | Determines how to determine the data types of columns. |
| URISeparator | A delimiter used to separate different values in the URI property. |
| UserDefinedViews | カスタムビューを定義するJSON 構成ファイルへのファイルパスを指定します。provider は、このファイルで指定されたビューを自動的に検出して使用します。 |
このセクションでは、本プロバイダーの接続文字列で設定可能なAuthentication プロパティの全リストを提供します。
| プロパティ | 説明 |
| AuthScheme | リモートサービスに接続する際に使用する認証の種類。 |
| AccessKey | アカウントのアクセスキー。この値にはセキュリティ認証情報ページからアクセスできます。 |
| SecretKey | アカウントのシークレットキー。この値にはセキュリティ認証情報ページからアクセスできます。 |
| ApiKey | IBM Cloud にユーザーを識別させるためのAPI キー。 |
| User | The user account used to authenticate. |
| Password | The password used to authenticate the user. |
| SharePointEdition | 使用しているSharePoint のエディション。SharePointOnline またはSharePointOnPremise のいずれかに設定します。 |
| ImpersonateUserMode | Specify the type of the user impersonation. It should be whether the User mode or the Admin mode. |
リモートサービスに接続する際に使用する認証の種類。
ConnectionType をAmazon S3 に設定する場合、以下のオプションが利用できます。
ConnectionType をAzure Blob Storage、Azure Data Lake Storage Gen1、Azure Data Lake Storage Gen2、Azure Data Lake Storage Gen2 SSL、OneDrive のいずれかに設定する場合、以下のオプションが利用可能です。
ConnectionType をOneLake に設定する場合、以下のオプションが利用できます。
ConnectionType をBox に設定する場合、以下のオプションが利用できます。
ConnectionType をDropbox に設定する場合、以下のオプションのみ利用できます。
OAuth:認可コードグラントタイプでOAuth2 を使用します。OAuthVersion は2.0に設定する必要があります。
ConnectionType をFTP またはFTPS に設定する場合、以下のオプションのみ利用できます。
Basic:基本的なユーザー資格情報(ユーザー / パスワード)。
ConnectionType がGoogle Cloud Storage またはGoogle Drive を指している場合、以下のオプションが利用できます。
ConnectionType をHDFS またはHDFS Secure に設定する場合、以下のオプションが利用できます。
ConnectionType をHTTP またはHTTPS に設定する場合、以下のオプションが利用できます。
ConnectionType をIBM Object Storage Source に設定する場合、以下のオプションも利用できます。
ConnectionType をOracle Cloud Storage に設定する場合、以下のオプションのみ利用できます。
HMAC:AccessKey およびSecretKey を使用して、Oracle Cloud Storage を認証します。
このConnectionType は、SFTP というAuthScheme を使用するのがデフォルトですが、実際は認証方式はSSHAuthMode プロパティを使用して制御されます。詳しくは、このプロパティのドキュメントを参照してください。
ConnectionType をSharePoint REST に設定する場合、以下のオプションも利用できます。
ConnectionType をSharePoint SOAP に設定する場合、以下のオプションも利用できます。
アカウントのアクセスキー。この値にはセキュリティ認証情報ページからアクセスできます。
アカウントのアクセスキー。この値には、使用しているサービスに応じたセキュリティ認証情報ページからアクセスできます。
アカウントのシークレットキー。この値にはセキュリティ認証情報ページからアクセスできます。
アカウントのシークレットキー。この値には、使用しているサービスに応じたセキュリティ認証情報ページからアクセスできます。
IBM Cloud にユーザーを識別させるためのAPI キー。
JSON REST API のリソースへのアクセスは、トークンを取得するためのAPI キーで管理されています。API キーは、[Manage(管理)]->[Access(IAM)]->[Users(ユーザー)]と移動して、[Create(作成)]をクリックすることで作成できます。
The user account used to authenticate.
Together with Password, this field is used to authenticate against the server.
This property will refer to different things based on the context, namely the value of ConnectionType and AuthScheme:
The password used to authenticate the user.
The User and Password are together used to authenticate with the server.
This property will refer to different things based on the context, namely the value of ConnectionType and AuthScheme:
Specify the type of the user impersonation. It should be whether the User mode or the Admin mode.
Specify the type of the user impersonation. It should be whether the User mode or the Admin mode. The Admin mode is available only for Enterprise with Governance accounts and will be upon request. It will not work for any other accounts.
このセクションでは、本プロバイダーの接続文字列で設定可能なConnection プロパティの全リストを提供します。
| プロパティ | 説明 |
| ConnectionType | JSON のファイルが保存および取得されるファイルストレージサービス、サーバー、またはファイルアクセスプロトコルを指定します。 |
| URI | JSON リソースロケーションのUniform Resource Identifier (URI)。 |
| JSONPath | 行の区切りを定義する配列エレメントのJSONPath。 |
| DataModel | JSON ドキュメントをパースしてデータベースのメタデータを生成するときに使用するデータモデルを指定します。 |
| JSONFormat | JSON ドキュメントのフォーマットを指定します。 |
| Region | S3ライクなWeb サービスのホスティングリージョン。 |
| ProjectId | Google Cloud Storage インスタンスが存在するプロジェクトのId。 |
| OracleNamespace | 使用するOracle Cloud Object Storage ネームスペース。 |
| StorageBaseURL | クラウドストレージサービスプロバイダーのURL。 |
| SimpleUploadLimit | この設定はしきい値をバイト単位で設定します。このしきい値を超えると、provider は1つのリクエストですべてをアップロードするのではなく、マルチパートでアップロードを実行します。 |
| UseVirtualHosting | True(デフォルト)の場合、バケットはホスト形式のリクエストを使用してリクエストで参照されます:http://yourbucket.s3.amazonaws.com/yourobject。False に設定した場合、Bean はパス形式のリクエストを使用します:http://s3.amazonaws.com/yourbucket/yourobject。S3ベースのカスタムサービスの場合、CustomURL が指定されていると、このプロパティはFalse に設定されることに注意してください。 |
| UseLakeFormation | このプロパティがtrue に設定される場合、AWSLakeFormation サービスは、設定されたIAM ロールに基づくユーザーに対してアクセスポリシーを適用する一時的な資格情報を取得するために使用されます。このサービスは、SAML アサーションを提供した上で、OKTA、ADFS、AzureAD、PingFederate 経由で認証する場合に使用できます。 |
JSON のファイルが保存および取得されるファイルストレージサービス、サーバー、またはファイルアクセスプロトコルを指定します。
ConnectionType を以下のいずれかに設定します。
JSON リソースロケーションのUniform Resource Identifier (URI)。
URI プロパティを設定して、ファイルまたはストリームへのパスを指定します。
NOTE:
複数ファイルのパースおよびマージに使用できる、より高度な機能については、データアクセスのファインチューニング を参照してください。
以下は、使用可能なデータソースのURI 形式の例です。
| サービスプロバイダ | URI 形式 | |
| Local | Single File Path One table
localPath/file.json file://localPath/file.json Directory Path (One aggregated table from all files) localPath file://localPath | |
| HTTP またはHTTPS | http://remoteStream
https://remoteStream | |
| Amazon S3 | Single File Path One table
s3://remotePath/file.json Directory Path (One aggregated table from all files) s3://remotePath | |
| Azure Blob Storage | Single File Path One table
azureblob://mycontainer/myblob//file.json Directory Path (One aggregated table from all files) azureblob://mycontainer/myblob/ | |
| OneDrive | Single File Path One table
onedrive://remotePath/file.json Directory Path (One aggregated table from all files) onedrive://remotePath | |
| Google Cloud Storage | Single File Path One table
gs://bucket/remotePath/file.json Directory Path (One aggregated table from all files) gs://bucket/remotePath | |
| Google Drive | Single File Path One table
gdrive://remotePath/file.json Directory Path (One aggregated table from all files) gdrive://remotePath | |
| Box | Single File Path One table
box://remotePath/file.json Directory Path (One aggregated table from all files) box://remotePath | |
| FTP またはFTPS | Single File Path One table
ftp://server:port/remotePath/file.json Directory Path (One aggregated table from all files) ftp://server:port/remotePath | |
| SFTP | Single File Path One table
sftp://server:port/remotePath/file.json Directory Path (One aggregated table from all files) sftp://server:port/remotePath | |
| Sharepoint | Single File Path One table
sp://https://server/remotePath/file.json Directory Path (One aggregated table from all files) sp://https://server/remotePath |
以下は、JSON ファイルまたはストリームへの接続文字列の例です。
| サービスプロバイダ | URI 形式 | Connection example |
| Local | Single File Path One table
localPath file://localPath/file.json Directory Path (One aggregated table from all files) localPath file://localPath | URI=C:\folder1/file.json |
| Amazon S3 | Single File Path One table
s3://bucket1/folder1/file.json Directory Path (One aggregated table from all files) s3://bucket1/folder1 | URI=s3://bucket1/folder1/file.json; AWSAccessKey=token1; AWSSecretKey=secret1; AWSRegion=OHIO; |
| Azure Blob Storage | Single File Path One table
azureblob://mycontainer/myblob//file.json Directory Path (One aggregated table from all files) azureblob://mycontainer/myblob/ | URI=azureblob://mycontainer/myblob/; AzureStorageAccount=myAccount; AzureAccessKey=myKey;
URI=azureblob://mycontainer/myblob/; AzureStorageAccount=myAccount; AuthScheme=OAuth; |
| OneDrive | Single File Path One table
onedrive://remotePath/file.json Directory Path (One aggregated table from all files) onedrive://remotePath | URI=onedrive://folder1/file.json; AuthScheme=OAuth;
URI=onedrive://SharedWithMe/folder1/file.json; AuthScheme=OAuth; |
| Google Cloud Storage | Single File Path One table
gs://bucket/remotePath/file.json Directory Path (One aggregated table from all files) gs://bucket/remotePath | URI=gs://bucket/folder1/file.json; AuthScheme=OAuth; ProjectId=test; |
| Google Drive | Single File Path One table
gdrive://remotePath/file.json Directory Path (One aggregated table from all files) gdrive://remotePath | URI=gdrive://folder1/file.json; |
| Box | Single File Path One table
box://remotePath/file.json Directory Path (One aggregated table from all files) box://remotePath | URI=box://folder1/file.json; OAuthClientId=oauthclientid1; OAuthClientSecret=oauthcliensecret1; CallbackUrl=http://localhost:12345; |
| FTP or FTPS | Single File Path One table
ftp://server:port/remotePath/file.json Directory Path (One aggregated table from all files) ftp://server:port/remotePath | URI=ftps://localhost:990/folder1/file.json; User=user1; Password=password1; |
| SFTP | sftp://server:port/remotePath | URI=sftp://127.0.0.1:22/remotePath/file.json; User=user1; Password=password1; |
| Sharepoint | sp://https://server/remotePath | URI=sp://https://domain.sharepoint.com/Documents/file.json; User=user1; Password=password1; |
行の区切りを定義する配列エレメントのJSONPath。
Sync App は、ドキュメント内のオブジェクト配列を自動的に検索し、行としてモデル化します。このパラメータを使用すると、XPath を使用して明示的にオブジェクト配列を定義できます。
セミコロン区切りのリストを使用して複数のパスを指定できます。 DataModel プロパティは、ネストされたオブジェクト配列がどのようにテーブルとしてモデル化されるかを制御します。
このプロパティは、スキーマファイルが存在しない場合に、スキーマ定義を生成するために使われます(スキーマのカスタマイズ 参照)。
Raw データ のpeople サンプルのJSONPath の例: $.people.vehicles.maintenance
ワイルドカードのJSONPath はすべてのJSONPaths が同じ階層にあるが異なる名前を含む場合には有効です。
<rsb:set attr="JSONPath" value="/feed/*" />
JSON ドキュメントをパースしてデータベースのメタデータを生成するときに使用するデータモデルを指定します。
Sync App は、配列にネストされたオブジェクトに基づいてJSON ドキュメントを行に分割します。DataModel 設定を選択して、Sync App がネストされたオブジェクト配列をテーブルにモデル化する方法を設定します。 さまざまな設定でデータをクエリする例については、階層データの解析 を参照してください。
次のDataModel 設定が利用可能です。さまざまな設定でデータをクエリする例については、階層データの解析 を参照してください。
Document
各トップレベルオブジェクトの行を表す単一テーブルを返します。このデータモデルでは、ネストされたオブジェクト配列はフラット化されず、集計として返されます。JSONPath 値が明示的に指定されていない限り、Sync App はXPath として見つかった一番上のオブジェクト配列を識別して使用します。
FlattenedDocuments
ファイル内で利用可能なドキュメントのJOIN を表す単一テーブルを返します。このデータモデルでは、ネストされたJSONPath 値はSQL JOIN と同じ作法で動作します。さらに、ネストされた兄弟JSONPath 値(同じ高さの子パス)は、SQL CROSS JOIN として扱われます。明示的に指定されない限り、Sync App は、ファイルを解析し、ネストされたドキュメントを含む利用可能なドキュメントを識別することによって、利用可能なJSONPath 値を識別します。
Relational
指定された各JSONPath 値に対して1つずつ、複数のテーブルを返します。このデータモデルでは、ネストされたドキュメント(オブジェクト配列)は、親テーブルにリンクする主キーと外部キーを含むリレーショナルテーブルとして返されます。明示的に指定されない限り、Sync App は、ファイルを解析し、利用可能なドキュメント(ネストされたドキュメントを含む)を識別することによって、利用可能なJSONPath 値を識別します。
JSON ドキュメントのフォーマットを指定します。
このオプションを使用すると、JSON ドキュメントのフォーマットを指定できます。これにより選択したフォーマットの解析が可能になります。
次のJSONFormat 設定が利用可能です。
JSON
これはデフォルトの形式で、多くの場合に使用されます。
JSONRows
これは、プリミティブ配列に含まれるデータの行からなるリレーショナル形式で返される特定のフォーマットです。カラム情報も別の配列に返されます。
Note:このJSONFormat を使用する場合、DataModel は適用されません。
例:
{
"dataset": {
"column_names": [
"Name",
"Age",
"Gender"
],
"data": [
[
"John Doe",
37,
"M"
],
[
"David Thomas",
25,
"M"
]
]
}
}
JSONPath プロパティには、カラムと行のパスを識別する特別な構文が必要です。構文では、"column:" と"row:" というプレフィックスを使用してそれぞれのパスを指定します。 上記の例を使用すると、JSONPath は次のように設定されます:column:$.dataset.column_names;row:$.dataset.data
追加のデータを持つオブジェクトにカラムが返される場合は、追加の"columnname:" プレフィックスを指定して、カラム名を含む値へのパスを識別できます。
例:
{
"columns": [
{
"name":"first_name",
"type":"text"
},
{
"name":"last_name",
"type":"text"
}
],
"rows": [
[
"John",
"Doe"
],
[
"David",
"Thomas"
]
]
}
上記の例では、JSONPath は次のように設定されます:column:$.columns;columnname:$.columns.name;row:$.rows
LDJSON(改行区切りのJSON)
この形式は、改行区切りのJSON ファイル(NDJSON またはJSONLines とも呼ばれます)をパースするために使用されます。改行区切りのJSON ファイルには、各行に別々のJSON ドキュメントが含まれています。
LDJSON ファイルの例:
{ "Name": "John Doe", "Age": 37, "Gender": "M" }
{ "Name": "David Thomas", "Age": 25, "Gender": "M" }
{ "Name": "Susan Price", "Age": 35, "Gender": "F" }
JSONPath 値は、通常のJSON 形式を使用した場合と同じように扱われます。唯一の違いは、ルートバス($.) が常に使用される(つまり、JSON のすべての行が配列内に含まれているように扱う)点です。
上の例では、JSONPath は"$." になり、Name、Age、およびGender カラムを含む3行を返します。
S3ライクなWeb サービスのホスティングリージョン。
S3ライクなWeb サービスのホスティングリージョン。
| 値 | リージョン |
| 商用クラウドリージョン | |
| ap-hyderabad-1 | India South (Hyderabad) |
| ap-melbourne-1 | Australia Southeast (Melbourne) |
| ap-mumbai-1 | India West (Mumbai) |
| ap-osaka-1 | Japan Central (Osaka) |
| ap-seoul-1 | South Korea Central (Seoul) |
| ap-sydney-1 | Australia East (Sydney) |
| ap-tokyo-1 | Japan East (Tokyo) |
| ca-montreal-1 | Canada Southeast (Montreal) |
| ca-toronto-1 | Canada Southeast (Toronto) |
| eu-amsterdam-1 | Netherlands Northwest (Amsterdam) |
| eu-frankfurt-1 | Germany Central (Frankfurt) |
| eu-zurich-1 | Switzerland North (Zurich) |
| me-jeddah-1 | Saudi Arabia West (Jeddah) |
| sa-saopaulo-1 | Brazil East (Sao Paulo) |
| uk-london-1 | UK South (London) |
| us-ashburn-1 (default) | US East (Ashburn, VA) |
| us-phoenix-1 | US West (Phoenix, AZ) |
| US Gov FedRAMP High Regions | |
| us-langley-1 | US Gov East (Ashburn, VA) |
| us-luke-1 | US Gov West (Phoenix, AZ) |
| US Gov DISA IL5 Regions | |
| us-gov-ashburn-1 | US DoD East (Ashburn, VA) |
| us-gov-chicago-1 | US DoD North (Chicago, IL) |
| us-gov-phoenix-1 | US DoD West (Phoenix, AZ) |
| 値 | リージョン |
| eu-central-1 | Europe (Amsterdam) |
| us-east-1 (Default) | US East (Ashburn, VA) |
| us-east-2 | US East (Manassas, VA) |
| us-west-1 | US West (Hillsboro, OR) |
Google Cloud Storage インスタンスが存在するプロジェクトのId。
Google Cloud Storage インスタンスが存在するプロジェクトのId。この値は、Google Cloud コンソールにアクセスして左上画面のプロジェクト名をクリックすると確認できます。ProjectId は一致するプロジェクトのId カラムに表示されます。
使用するOracle Cloud Object Storage ネームスペース。
使用するOracle Cloud Object Storage ネームスペース。リクエストを行う前に、この設定をOracle Cloud アカウントに関連付けられてたOracle Cloud Object Storage ネームスペースに設定する必要があります。お使いのアカウントのObject Storage ネームスペースを検索する方法については、Oracle Cloud ドキュメントのUnderstanding Object Storage Namespaces ページを参照してください。
クラウドストレージサービスプロバイダーのURL。
このプロパティは、以下を指定するために使われます。
このオプションのドメインが-my で終わる場合(例えば、https://bigcorp-my.sharepoint.com)、sp:// またはsprest:// スキームの代わりに onedrive:// スキームを使用する必要がある場合があります。
この設定はしきい値をバイト単位で設定します。このしきい値を超えると、provider は1つのリクエストですべてをアップロードするのではなく、マルチパートでアップロードを実行します。
この設定はしきい値をバイト単位で設定します。このしきい値を超えると、Sync App は1つのリクエストですべてをアップロードするのではなく、マルチパートでアップロードを実行します。
True(デフォルト)の場合、バケットはホスト形式のリクエストを使用してリクエストで参照されます:http://yourbucket.s3.amazonaws.com/yourobject。False に設定した場合、Bean はパス形式のリクエストを使用します:http://s3.amazonaws.com/yourbucket/yourobject。S3ベースのカスタムサービスの場合、CustomURL が指定されていると、このプロパティはFalse に設定されることに注意してください。
True(デフォルト)の場合、バケットはホスト形式のリクエストを使用してリクエストで参照されます:http://yourbucket.s3.amazonaws.com/yourobject。False に設定した場合、Bean はパス形式のリクエストを使用します:http://s3.amazonaws.com/yourbucket/yourobject。S3ベースのカスタムサービスの場合、CustomURL が指定されていると、このプロパティはFalse に設定されることに注意してください。
このプロパティがtrue に設定される場合、AWSLakeFormation サービスは、設定されたIAM ロールに基づくユーザーに対してアクセスポリシーを適用する一時的な資格情報を取得するために使用されます。このサービスは、SAML アサーションを提供した上で、OKTA、ADFS、AzureAD、PingFederate 経由で認証する場合に使用できます。
このプロパティがtrue に設定される場合、AWSLakeFormation サービスは、設定されたIAM ロールに基づくユーザーに対してアクセスポリシーを適用する一時的な資格情報を取得するために使用されます。このサービスは、SAML アサーションを提供した上で、OKTA、ADFS、AzureAD、PingFederate 経由で認証する場合に使用できます。
このセクションでは、本プロバイダーの接続文字列で設定可能なAWS Authentication プロパティの全リストを提供します。
| プロパティ | 説明 |
| AWSAccessKey | AWS アカウントのアクセスキーを指定します。この値には、AWS セキュリティ認証情報ページからアクセスできます。 |
| AWSSecretKey | AWS アカウントのシークレットキー。この値には、[AWS セキュリティ認証情報]ページからアクセスできます。 |
| AWSRoleARN | 認証時に使用するロールのAmazon リソースネーム。 |
| AWSPrincipalARN | AWS アカウントのSAML ID プロバイダーのARN。 |
| AWSRegion | Amazon Web サービスのホスティングリージョン。 |
| AWSCredentialsFile | 認証に使用するAWS クレデンシャルファイルへのパス。 |
| AWSCredentialsFileProfile | 提供されたAWSCredentialsFile から使用されるプロファイルの名前。 |
| AWSSessionToken | AWS のセッショントークン。 |
| AWSExternalId | 他のアカウントでロールを引き受ける際に必要となる一意の識別子。 |
| MFASerialNumber | MFA デバイスが使用されている場合は、そのシリアル番号。 |
| MFAToken | MFA デバイスから利用できる一時トークン。 |
| TemporaryTokenDuration | 一時トークンが持続する時間(秒単位)。 |
| AWSWebIdentityToken | ID プロバイダーが提供するOAuth 2.0 アクセストークンまたはOpenID Connect ID トークン。 |
| ServerSideEncryption | 有効にすると、Amazon S3バケットへのファイルアップロードがサーバー側で暗号化されます。 |
| SSEContext | A BASE64-encoded UTF-8 string holding JSON which represents a string-string (key-value) map. |
| SSEEnableS3BucketKeys | Configuration to use an S3 Bucket Key at the object level when encrypting data with AWS KMS. Enabling this will reduce the cost of server-side encryption by lowering calls to AWS KMS. |
| SSEKey | A symmetric encryption KeyManagementService key, that is used to protect the data when using ServerSideEncryption. |
AWS アカウントのアクセスキーを指定します。この値には、AWS セキュリティ認証情報ページからアクセスできます。
AWS アカウントのアクセスキーを見つけるには、次の手順に従います。
AWS アカウントのシークレットキー。この値には、[AWS セキュリティ認証情報]ページからアクセスできます。
AWS アカウントのシークレットキー。この値には、[AWS セキュリティ認証情報]ページからアクセスできます。
認証時に使用するロールのAmazon リソースネーム。
AWS の外部で認証する場合は、AWS アカウント認証情報ではなく、ロールを認証に使用するのが 一般的です。AWSRoleARN を入力すると、CData Sync App はAWSAccessKey とAWSSecretKey を直接 使用する代わりに、ロールベースの認証を実行します。この認証を実行するためには、AWSAccessKey と AWSSecretKey を指定する必要があります。RoleARN を設定するときは、AWS ルートユーザーの 認証情報を使用できません。AWSAccessKey およびAWSSecretKey はIAM ユーザーのものである必要があります。
AWS アカウントのSAML ID プロバイダーのARN。
AWS アカウントのSAML ID プロバイダーのARN。
Amazon Web サービスのホスティングリージョン。
Amazon Web サービスのホスティングリージョン。利用可能な値は、OHIO、NORTHERNVIRGINIA、NORTHERNCALIFORNIA、OREGON、CAPETOWN、HONGKONG、HYDERABAD、JAKARTA、MALAYSIA、MELBOURNE、MUMBAI、OSAKA、SEOUL、SINGAPORE、SYDNEY、TOKYO、CENTRAL、CALGARY、BEIJING、NINGXIA、FRANKFURT、IRELAND、LONDON、MILAN、PARIS、SPAIN、STOCKHOLM、ZURICH、TELAVIV、BAHRAIN、UAE、SAOPAULO、GOVCLOUDEAST、GOVCLOUDWEST、ISOLATEDUSEAST、ISOLATEDUSEASTB、ISOLATEDUSWEST、およびISOLATEDEUWEST です。
認証に使用するAWS クレデンシャルファイルへのパス。
認証に使用するAWS クレデンシャルファイルへのパス。詳しくは、https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html を参照してください。
提供されたAWSCredentialsFile から使用されるプロファイルの名前。
提供されたAWSCredentialsFile から使用されるプロファイルの名前。詳しくは、https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html を参照してください。
他のアカウントでロールを引き受ける際に必要となる一意の識別子。
他のアカウントでロールを引き受ける際に必要となる一意の識別子。
MFA デバイスが使用されている場合は、そのシリアル番号。
AWS マネジメントコンソールにアクセスしてユーザーのセキュリティ認証情報を表示することで、IAM ユーザーのデバイスを見つけることができます。 仮想デバイスの場合、これは実際にはAmazon リソースネームです( arn:aws:iam::123456789012:mfa/user など)。
MFA デバイスから利用できる一時トークン。
MFA が必要な場合、この値はログインのためのテンポラリクレデンシャルを取得するためにMFASerialNumber とともに使用されます。 AWS から入手可能な一時的な認証情報はデフォルトで最長1時間しか持続しません(TemporaryTokenDuration を参照してください)。時間が経過したら、新しい認証情報を取得できるように、接続を 更新して新しいMFA トークンを指定する必要があります。 %AWSpSecurityToken; %AWSpTemporaryTokenDuration;
一時トークンが持続する時間(秒単位)。
一時トークンは、MFA 認証とロールベース認証の両方で使用されます。一時トークンは、やがてタイムアウトします。 そのときには、新しい一時トークンを取得する必要があります。MFA が使用されていない状況では、これは大したこと ではありません。一時トークンが期限切れになると、CData Sync App は内部的に新しい一時トークンをリクエストします。
ただし、MFA が必要な接続の場合は、新しい一時トークンを取得するために新しいMFAToken を接続で指定 する必要があります。これは、ユーザーによる接続の更新が必要になるため、より煩わしい問題です。指定できる 最大値と最小値は、使用されている接続によって大きく異なります。
ロールベース認証の場合は、最小期間は900秒(15分)で、最大期間は3600秒(1時間)です。 ロールベース認証でMFA が使用されている場合でも、3600秒が依然として最大です。
MFA 認証自体では(IAM ユーザーまたはルートユーザーを使用)、最小値は900秒(15分)、 最大値は129600(36時間)です。
ID プロバイダーが提供するOAuth 2.0 アクセストークンまたはOpenID Connect ID トークン。
ID プロバイダーが提供するOAuth 2.0 アクセストークンまたはOpenID Connect ID トークン。 アプリケーションは、Web ID プロバイダーでユーザーを認証することで、このトークンを取得できます。 指定しない場合、この接続プロパティの値は、 環境変数'AWS_WEB_IDENTITY_TOKEN_FILE' の値から自動的に取得されます。
有効にすると、Amazon S3バケットへのファイルアップロードがサーバー側で暗号化されます。
サーバー側の暗号化とは、データを受信するアプリケーションまたはサービスによって、送信先でデータを暗号化することです。Amazon S3は、データセンターのディスクに書き込まれるときにデータをオブジェクトレベルで暗号化し、ユーザーがデータにアクセスするときに復号します。詳しくは、こちらを参照してください。https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/serv-side-encryption.html
A BASE64-encoded UTF-8 string holding JSON which represents a string-string (key-value) map.
Example of what the JSON may look decoded: {"aws:s3:arn": "arn:aws:s3:::_bucket_/_object_"}.
Configuration to use an S3 Bucket Key at the object level when encrypting data with AWS KMS. Enabling this will reduce the cost of server-side encryption by lowering calls to AWS KMS.
Configuration to use an S3 Bucket Key at the object level when encrypting data with AWS KMS. Enabling this will reduce the cost of server-side encryption by lowering calls to AWS KMS.
A symmetric encryption KeyManagementService key, that is used to protect the data when using ServerSideEncryption.
A symmetric encryption KeyManagementService key, that is used to protect the data when using ServerSideEncryption.
このセクションでは、本プロバイダーの接続文字列で設定可能なAzure Authentication プロパティの全リストを提供します。
| プロパティ | 説明 |
| AzureStorageAccount | Azure ストレージアカウント名。 |
| AzureAccessKey | Azure アカウントに関連付けられているストレージキー。 |
| AzureSharedAccessSignature | 認証に使用可能な共有アクセスキー署名。 |
| AzureTenant | データにアクセスするために使用されるJSON テナントを、名前(例えば、contoso.omnicrosoft.com)またはID で識別します。(条件付き) |
| AzureEnvironment | 接続するAzure ネットワーク環境を指定します。Azure アカウントが追加されたネットワークと同じである必要があります。 |
Azure ストレージアカウント名。
Azure ストレージアカウントの名前。
Azure アカウントに関連付けられているストレージキー。
JSON アカウントに関連付けられているストレージキー。以下のように取得できます:
データにアクセスするために使用されるJSON テナントを、名前(例えば、contoso.omnicrosoft.com)またはID で識別します。(条件付き)
テナントは、主にドメイン(例えば、microsoft.com)に関連付けられた、組織のデジタル表現です。 テナントは、Tenant ID(ディレクトリID とも呼ばれる)によって管理されます。これは、Azure リソースへのアクセスや管理権限をユーザーに割り当てる際に指定します。
Azure ポータルでディレクトリID を見つけるには、Azure Active Directory -> プロパティに移動します。
AuthScheme = AzureServicePrincipal またはAzureServicePrincipalCert のいずれかである場合、またはAzureTenant = AzureAD であり、ユーザーが複数のテナントに属している場合は、AzureTenant を指定する必要があります。
接続するAzure ネットワーク環境を指定します。Azure アカウントが追加されたネットワークと同じである必要があります。
Azure アカウントがGlobal ネットワークとは異なるネットワーク(China、USGOVT、USGOVTDOD など)の一部である場合は、必要です。
このセクションでは、本プロバイダーの接続文字列で設定可能なSSO プロパティの全リストを提供します。
| プロパティ | 説明 |
| SSOLoginURL | ID プロバイダーのログインURL。 |
| SSOProperties | ID プロバイダーへの接続に必要な追加プロパティを、セミコロンで区切ったリスト形式で指定します。 |
| SSOExchangeUrl | SAML 応答を処理してサービスの資格情報と交換するために使用するURL。 |
ID プロバイダーのログインURL。
ID プロバイダーのログインURL。
ID プロバイダーへの接続に必要な追加プロパティを、セミコロンで区切ったリスト形式で指定します。
ID プロバイダーへの接続に必要な追加プロパティを、セミコロンで区切ったリスト形式で指定します。SSOLoginURL と一緒に使用します。
SSO 設定については、 で詳しく説明します。
SAML 応答を処理してサービスの資格情報と交換するために使用するURL。
CData Sync App はここで指定されたURL を使用してSAML 応答を処理し、サービスの資格情報と交換します。 取得した資格情報はSSO 接続時の最後の情報であり、JSON との通信に使用されます。
このセクションでは、本プロバイダーの接続文字列で設定可能なJWT OAuth プロパティの全リストを提供します。
| プロパティ | 説明 |
| OAuthJWTCert | JWT 証明書のストア。 |
| OAuthJWTCertType | JWT 証明書を格納するキーストアの種類。 |
| OAuthJWTCertPassword | OAuth JWT 証明書のパスワード。パスワードを必要とする証明書ストアにアクセスするために使用されます。証明書ストアがパスワードを必要としない場合は、このプロパティを空白のままにします。 |
| OAuthJWTCertSubject | OAuth JWT 証明書のサブジェクトで、ストアで一致する証明書を検索するために使用されます。部分一致と、先頭の証明書を選択するためのワイルドカード '*' をサポートします。 |
| OAuthJWTSubjectType | JWT 認証のサブタイプ。 |
| OAuthJWTPublicKeyId | JWT の公開キーのID。 |
| OAuthJWTAudience | JWT を使用できるエンティティのスペース区切りリスト。 |
| OAuthJWTValidityTime | JWT の有効期限(秒)。 |
JWT 証明書のストア。
クライアント証明書のための証明書ストア名。
OAuthJWTCertType フィールドは、OAuthJWTCert により指定された証明書ストアの種類を指定します。 ストアがパスワードで保護されている場合は、OAuthJWTCertPassword でパスワードを指定します。
OAuthJWTCert は、OAuthJWTCertSubject フィールドとともにクライアント証明書を指定するために使われます。 OAuthJWTCert に値がある場合で、OAuthJWTCertSubject が設定されている場合は、証明書の検索が始まります。 詳しくは、OAuthJWTCertSubject フィールドを参照してください。
証明書ストアの指定はプラットフォームに依存します。
Windows の共通のユーザとシステム証明書ストアの指定は以下のとおりです。
| MY | 個人証明書と関連付けられた秘密キーを格納している証明書ストア。 |
| CA | 証明機関の証明書。 |
| ROOT | ルート証明書。 |
| SPC | ソフトウェア発行元証明書。 |
Javaでは、証明書ストアは通常、証明書および任意の秘密キーを含むファイルです。
証明書ストアの種類がPFXFile の場合は、このプロパティにファイル名を設定します。 PFXBlob の場合は、このプロパティをPFX ファイルのバイナリコンテンツ(例えば、PKCS12証明書ストア)に設定する必要があります。
JWT 証明書を格納するキーストアの種類。
このプロパティには次の値の一つを設定できます。
| USER | Windows の場合、現在のユーザーにより所有された証明書ストアであることを指定します。 Note:この種類はJava では利用できません。 |
| MACHINE | Windows の場合、この証明書ストアがシステムストアであることを指定します。 Note:この種類はJava では利用できません。 |
| PFXFILE | この証明書ストアは、証明書を含むPFX(PKCS12)ファイルの名前です。 |
| PFXBLOB | この証明書ストアは、PFX(PKCS12)形式の証明書ストアを表すBase-64でエンコードされた文字列です。 |
| JKSFILE | この証明書ストアは、証明書を含むJava key store(JKS)ファイルの名前です。 Note:この種類はJava のみで利用できます。 |
| JKSBLOB | この証明書ストアは、Java key store(JKS)形式の証明書ストアを表すBase-64でエンコードされた文字列です。 Note:この種類はJava のみで利用できます。 |
| PEMKEY_FILE | この証明書ストアは、秘密キーと任意の証明書を含むPEM でエンコードされたファイルの名前です。 |
| PEMKEY_BLOB | この証明書ストアは、秘密キーと任意の証明書を含むBase-64でエンコードされた文字列です。 |
| PUBLIC_KEY_FILE | この証明書ストアは、PEM またはDER でエンコードされた公開キーの証明書を含むファイルの名前です。 |
| PUBLIC_KEY_BLOB | この証明書ストアは、PEM またはDER でエンコードされた公開キーの証明書を含むBase-64でエンコードされた文字列です。 |
| SSHPUBLIC_KEY_FILE | この証明書ストアは、SSH 公開キーを含むファイルの名前です。 |
| SSHPUBLIC_KEY_BLOB | この証明書ストアは、SSH 公開キーを含むBase-64でエンコードされた文字列です。 |
| P7BFILE | この証明書ストアは、証明書を含むPKCS7 ファイルの名前です。 |
| PPKFILE | この証明書ストアは、PuTTY 秘密キー(PPK)を含むファイルの名前です。 |
| XMLFILE | この証明書ストアは、XML 形式の証明書を含むファイルの名前です。 |
| XMLBLOB | この証明書ストアは、XML 形式の証明書を含む文字列の名前です。 |
| BCFKSFILE | この証明書ストアは、Bouncy Castle キーストアを含むファイルの名前です。 |
| BCFKSBLOB | この証明書ストアは、Bouncy Castle キーストアを含む文字列(Base-64エンコード)です。 |
| GOOGLEJSON | この証明書ストアは、サービスアカウント情報を含むJSON ファイルの名前です。Google サービスに接続する場合にのみ有効です。 |
| GOOGLEJSONBLOB | この証明書ストアは、サービスアカウントのJSON を含む文字列です。Google サービスに接続する場合にのみ有効です。 |
| BOXJSON | この証明書ストアは、サービスアカウントのクレデンシャルを含むJSON ファイルの名前です。Box に接続する場合にのみ有効です。 |
| BOXJSONBLOB | この証明書ストアは、サービスアカウントのJSON を含む文字列です。Box に接続する場合にのみ有効です。 |
OAuth JWT 証明書のパスワード。パスワードを必要とする証明書ストアにアクセスするために使用されます。証明書ストアがパスワードを必要としない場合は、このプロパティを空白のままにします。
このプロパティは、証明書ストアを開くために必要なパスワードを指定します。ただし、ストアの種類がパスワードを必要とする場合に限ります。 パスワードが必要かどうかを判断するには、ご利用の証明書ストアのドキュメントまたは設定を参照してください。
GOOGLEJSON OAuthJWTCertType を使用する場合は必要ありません。Google JSON キーは暗号化されていません。
OAuth JWT 証明書のサブジェクトで、ストアで一致する証明書を検索するために使用されます。部分一致と、先頭の証明書を選択するためのワイルドカード '*' をサポートします。
このプロパティの値は、ストアで一致する証明書を検索するために使用されます。検索プロセスは以下のように動作します。
値を '*' に設定すると、ストアの先頭の証明書が自動的に選択されます。 証明書のサブジェクトは識別名フィールドおよび値のカンマ区切りのリストです。 例:CN=www.server.com, OU=test, C=US, [email protected]。一般的なフィールドには以下のものが含まれます。
| フィールド | 説明 |
| CN | 共通名。一般的には、www.server.com のようなホスト名です。 |
| O | 法人名 |
| OU | 法人の部署名 |
| L | 法人の住所(市町村名) |
| S | 法人の住所(都道府県) |
| C | 国名 |
| E | E メールアドレス |
フィールド値にカンマが含まれる場合は、引用符で囲んでください。例:"O=ACME, Inc."。
JWT 認証のサブタイプ。
JWT 認証のサブタイプ。要求されているトークンの種類に応じて[enterprise]または[user]に設定します。
JWT の公開キーのID。
JWT の公開キーのID。アプリケーション設定の公開キーID の値に設定します。
JWT を使用できるエンティティのスペース区切りリスト。
これはJWT のaud フィールドに相当します。 このリストの項目は通常URL ですが、正確な値は使用するAPI に依存します。
JWT の有効期限(秒)。
これはJWT のexp フィールドの算出に使用されます。 デフォルトでは3600に設定されており、これはJWT が生成されてから1時間有効であることを意味します。 API によっては、これより低い値を要求するものもあります。
このセクションでは、本プロバイダーの接続文字列で設定可能なKerberos プロパティの全リストを提供します。
| プロパティ | 説明 |
| KerberosKDC | ユーザーの認証で使用されるKerberos キー配布センター(KDC)サービス。 |
| KerberosRealm | ユーザー認証に使用されるKerberos 領域。 |
| KerberosSPN | Kerberos ドメインコントローラーのサービスプリンシパル名(SPN)。 |
| KerberosUser | Kerberos ドメインコントローラーのプリンシパル名。host/user@realm の形式で使用されます。 |
| KerberosKeytabFile | Kerberos プリンシパルと暗号化されたキーのペアを含むKeytab ファイル。 |
| KerberosServiceRealm | サービスのKerberos レルム。 |
| KerberosServiceKDC | サービスのKerberos KDC。 |
| KerberosTicketCache | MIT Kerberos 資格情報キャッシュファイルへのフルパス。 |
ユーザーの認証で使用されるKerberos キー配布センター(KDC)サービス。
Kerberos のプロパティは、SPNEGO またはWindows 認証を使用する場合に使用されます。Sync App は、Kerberos KDC サービスにセッションチケットと一時セッションキーを要求します。Kerberos KDC サービスは、通常、ドメインコントローラーと同じコンピュータに置かれています。
Kerberos KDC が指定されていない場合、Sync App は、これらのプロパティを自動的に次の場所から検出しようとします。
ユーザー認証に使用されるKerberos 領域。
Kerberos のプロパティは、SPNEGO またはWindows 認証を使用する場合に使用されます。Kerberos 領域は、Kerberos キー配布センター(KDC)サービスを使用してユーザーを認証するために使用されます。Kerberos 領域は、管理者が任意の文字列に設定できますが、通常はドメイン名に基づいて設定されます。
Kerberos 領域が指定されていない場合、Sync App は、これらのプロパティを自動的に次の場所から検出しようとします。
Kerberos ドメインコントローラーのサービスプリンシパル名(SPN)。
Kerberos ドメインコントローラーのSPN が認証先のURL と異なる場合は、このプロパティを使用してSPN を設定します。
Kerberos ドメインコントローラーのプリンシパル名。host/user@realm の形式で使用されます。
データベースに使用しているユーザーがKerberos データベース内のユーザーと一致しない場合、これをKerberos プリンシパル名に設定する必要があります。
Kerberos プリンシパルと暗号化されたキーのペアを含むKeytab ファイル。
Kerberos のプリンシパルと暗号化されたキーのペアを含むKeytab ファイル。
サービスのKerberos レルム。
KerberosServiceRealm は、クロスレルムKerberos 認証を使用するときにサービスKerberos レルムを指定するために使われます。
ほとんどの場合、単一のレルムとKDC マシンがKerberos 認証を実行するために使用され、このプロパティは必要ありません。
このプロパティは、異なるレルムとKDC マシンを使用して認証チケット(AS リクエスト)およびサービスチケット(TGS リクエスト)を取得する、より複雑な設定で使用できます。
サービスのKerberos KDC。
KerberosServiceKDC は、クロスレルムKerberos 認証を使用するときにサービスKerberos KDC を指定するために使われます。
ほとんどの場合、単一のレルムとKDC マシンがKerberos 認証を実行するために使用され、このプロパティは必要ありません。
このプロパティは、異なるレルムとKDC マシンを使用して認証チケット(AS リクエスト)およびサービスチケット(TGS リクエスト)を取得する、より複雑な設定で使用できます。
MIT Kerberos 資格情報キャッシュファイルへのフルパス。
このプロパティは、MIT Kerberos チケットマネージャーまたはkinit コマンドを使用して作成された資格情報キャッシュファイルを使用する場合に設定できます。
このセクションでは、本プロバイダーの接続文字列で設定可能なOAuth プロパティの全リストを提供します。
| プロパティ | 説明 |
| OAuthVersion | 使われているOAuth のバージョン。 |
| OAuthClientId | カスタムOAuth アプリケーションの作成時に割り当てられたクライアントId を指定します。(コンシューマーキーとも呼ばれます。)このID は、カスタムアプリケーションをOAuth 認可サーバーに登録します。 |
| OAuthClientSecret | カスタムOAuth アプリケーションの作成時に割り当てられたクライアントシークレットを指定します。( コンシューマーシークレット とも呼ばれます。)このシークレットは、カスタムアプリケーションをOAuth 認可サーバーに登録します。 |
| SubjectId | The user subject for which the application is requesting delegated access. |
| SubjectType | The Subject Type for the Client Credentials authentication. |
| Scope | 認証ユーザーのアプリケーションへのアクセス範囲を指定します。 通常は、カスタムOAuth アプリケーションが作成される際に(必要に応じて)指定されます。これにより、認証ユーザーは自身の資格情報に応じて適切なレベルのアクセス権を得ることができます。 |
| OAuthGrantType | 選択したOAuth フローのグラント種別を指定します。 この値は、OAuth カスタムアプリケーション作成時に設定されたグラント種別と同じである必要があります。 |
| OAuthPasswordGrantMode | OAuth Client Id およびClient Secret を渡す方法を指定します。サポートされるオプション:BASIC およびPOST。 |
| OAuthIncludeCallbackURL | アクセストークンリクエストにコールバックURL を含めるかどうか。 |
| OAuthAuthorizationURL | OAuth サービスの認可URL。 |
| OAuthAccessTokenURL | OAuth アクセストークンを取得するURL。 |
| OAuthRefreshTokenURL | OAuth トークンをリフレッシュするURL。 |
| OAuthRequestTokenURL | サービスがリクエストトークンを取得するために提供するURL。これは、OAuth 1.0 では必須です。 |
| AuthToken | OAuth アクセストークンをリクエストおよび取得するために使用される認証トークン。 |
| AuthKey | OAuth アクセストークンをリクエストおよび取得するために使用される認証シークレット。 |
| OAuthParams | OAuth アクセストークンのリクエストでparamname=value の形式でサブミットするその他のパラメータのカンマ区切りのリスト。 |
使われているOAuth のバージョン。
使われているOAuth のバージョン。次のオプションが利用可能です:1.0,2.0
カスタムOAuth アプリケーションの作成時に割り当てられたクライアントId を指定します。(コンシューマーキーとも呼ばれます。)このID は、カスタムアプリケーションをOAuth 認可サーバーに登録します。
OAuthClientId は、ユーザーがOAuth 経由で認証を行う前に設定する必要があるいくつかの接続パラメータの1つです。詳細は接続の確立を参照してください。
カスタムOAuth アプリケーションの作成時に割り当てられたクライアントシークレットを指定します。( コンシューマーシークレット とも呼ばれます。)このシークレットは、カスタムアプリケーションをOAuth 認可サーバーに登録します。
OAuthClientSecret は、ユーザーがOAuth 経由で認証を行う前に設定する必要があるいくつかの接続パラメータの1つです。詳細は接続の確立を参照してください。
The user subject for which the application is requesting delegated access.
Id of the user or enterprise, based on the configuration set in SubjectType.
The Subject Type for the Client Credentials authentication.
The Subject Type for the Client Credentials authentication. Set this to "enterprise" or "user" depending on the type of token being requested.
認証ユーザーのアプリケーションへのアクセス範囲を指定します。 通常は、カスタムOAuth アプリケーションが作成される際に(必要に応じて)指定されます。これにより、認証ユーザーは自身の資格情報に応じて適切なレベルのアクセス権を得ることができます。
スコープは、認証ユーザーがどのようなアクセス権を持つかを定義するために設定されます。例えば、読み取り、読み取りと書き込み、機密情報への制限付きアクセスなどです。システム管理者は、スコープを使用して機能またはセキュリティクリアランスによるアクセスを選択的に有効化できます。
InitiateOAuth がGETANDREFRESH に設定されている場合、要求するスコープを変更したい場合はこのプロパティを使用する必要があります。 InitiateOAuth がREFRESH またはOFF のいずれかに設定されている場合、要求するスコープを変更したい場合は、このプロパティまたはScope 入力を使用する必要があります。
スコープは、認証ユーザーがどのようなアクセス権を持つかを定義するために設定されます。例えば、読み取り、読み取りと書き込み、機密情報への制限付きアクセスなどです。システム管理者は、スコープを使用して機能またはセキュリティクリアランスによるアクセスを選択的に有効化できます。
InitiateOAuth がGETANDREFRESH に設定されている場合、要求するスコープを変更したい場合はこのプロパティを使用する必要があります。 InitiateOAuth がREFRESH またはOFF のいずれかに設定されている場合、要求するスコープを変更したい場合は、このプロパティまたはScope 入力を使用する必要があります。
選択したOAuth フローのグラント種別を指定します。 この値は、OAuth カスタムアプリケーション作成時に設定されたグラント種別と同じである必要があります。
ほとんどの場合、デフォルトのグラント種別は変更すべきではありません。 最も一般的なOAuth グラント種別とそれぞれのメリット・デメリットについては、https://oauth.net/2/grant-types/ を参照してください。
OAuth Client Id およびClient Secret を渡す方法を指定します。サポートされるオプション:BASIC およびPOST。
OAuth RFC では、OAuthClientId とOAuthClientSecret を渡す2つの方法を提供します。 POST はpost データを介してOAuthClientId およびOAuthClientSecret を渡します。 (OAuthGrantType = PASSWORD, CODE, or CLIENT で動作します。) BASIC は、Authorize ヘッダーを介してOAuthClientId およびOAuthClientSecret を渡します。 (OAuthGrantType = CODE or CLIENT で動作します。)
アクセストークンリクエストにコールバックURL を含めるかどうか。
デフォルトではtrue です。 標準に準拠したOAuth サービスでは、redirect_uri パラメータを必要としないCLIENT やPASSWORD などのグラント種別では、 redirect_uri パラメータを無視するからです。
このオプションは、redirect_uri が含まれる場合にエラーを報告するOAuth サービスに対してのみ有効にしてください。
OAuth サービスの認可URL。
OAuth サービスの認可URL。このURL でユーザーはサーバーにログインしてアプリケーションにアクセス許可を与えます。OAuth 1.0 では、アクセス許可が付与されるとリクエストトークンが認可されます。
OAuth アクセストークンを取得するURL。
OAuth アクセストークンを取得するURL。OAuth 1.0 では、このURL で認可されたリクエストトークンがアクセストークンと交換されます。
OAuth トークンをリフレッシュするURL。
OAuth トークンをリフレッシュするURL。OAuth 2.0 では、古いトークンの期限が切れたときは、このURL でリフレッシュトークンと新しいアクセストークンと交換します。
サービスがリクエストトークンを取得するために提供するURL。これは、OAuth 1.0 では必須です。
サービスがリクエストトークンを取得するために提供するURL。これは、OAuth 1.0 では必須です。OAuth 1.0 では、これがアプリケーションがリクエストトークンをリクエストするURL です。
OAuth アクセストークンをリクエストおよび取得するために使用される認証トークン。
このプロパティは、OAuth 1.0でヘッドレス認証を実行する場合にのみ必要です。これは、GetOAuthAuthorizationUrl ストアドプロシージャから取得できます。
GetOAuthAccessToken ストアドプロシージャでAuthKey とともに指定して、OAuthAccessToken を取得できます。
OAuth アクセストークンをリクエストおよび取得するために使用される認証シークレット。
このプロパティは、OAuth 1.0でヘッドレス認証を実行する場合にのみ必要です。これは、GetOAuthAuthorizationUrl ストアドプロシージャから取得できます。
GetOAuthAccessToken ストアドプロシージャでAuthToken とともに指定して、OAuthAccessToken を取得できます。
OAuth アクセストークンのリクエストでparamname=value の形式でサブミットするその他のパラメータのカンマ区切りのリスト。
OAuth アクセストークンのリクエストでparamname=value の形式でサブミットするその他のパラメータのカンマ区切りのリスト。
このセクションでは、本プロバイダーの接続文字列で設定可能なSSL プロパティの全リストを提供します。
| プロパティ | 説明 |
| SSLClientCert | SSL クライアント認証(2-way SSL)のためのTLS/SSL クライアント証明書ストアを指定します。このプロパティは、他のSSL 関連プロパティと連動して、セキュアな接続を確立します。 |
| SSLClientCertType | SSL クライアント認証用のTLS/SSL クライアント証明書を格納するキーストアの種類を指定します。プラットフォームや証明書のソースに応じて、さまざまなキーストア形式から選択できます。 |
| SSLClientCertPassword | TLS/SSL クライアント証明書ストアにアクセスするために必要なパスワードを指定します。選択した証明書ストアの種類がアクセスにパスワードを必要とする場合、このプロパティを使用します。 |
| SSLClientCertSubject | TLS/SSL クライアント証明書のサブジェクトを指定し、証明書ストアで場所を検索します。 CN=www.server.com, C=US のように、識別名フィールドのカンマ区切りのリストを使用します。ワイルドカード * は、ストアの先頭の証明書を選択します。 |
| SSLMode | FTP またはFTPS サーバーに接続する際の認証メカニズム。 |
| SSLServerCert | TLS/SSL を使用して接続する際に、サーバーが受け入れ可能な証明書を指定します。 |
SSL クライアント認証(2-way SSL)のためのTLS/SSL クライアント証明書ストアを指定します。このプロパティは、他のSSL 関連プロパティと連動して、セキュアな接続を確立します。
このプロパティは、SSL クライアント認証のためのクライアント証明書ストアを指定します。 このプロパティは、証明書ストアの種類を定義するSSLClientCertType、およびパスワードで保護されたストア用のパスワードを指定するSSLClientCertPassword と一緒に使用します。 SSLClientCert が設定され、SSLClientCertSubject が設定されている場合、ドライバーは指定されたサブジェクトに一致する証明書を検索します。
証明書ストアの指定はプラットフォームによって異なります。 Windowsでは、証明書ストアはMY(個人証明書)などの名前で識別されますが、Java では、証明書ストアは通常、証明書とオプションの秘密キーを含むファイルです。
Windows の共通のユーザとシステム証明書ストアの指定は以下のとおりです。
| MY | 個人証明書と関連付けられた秘密キーを格納している証明書ストア。 |
| CA | 証明機関の証明書。 |
| ROOT | ルート証明書。 |
| SPC | ソフトウェア発行元証明書。 |
PFXFile タイプの場合、このプロパティをファイル名に設定します。PFXBlob タイプの場合は、このプロパティをPKCS12 形式のファイルのバイナリコンテンツに設定します。
SSL クライアント認証用のTLS/SSL クライアント証明書を格納するキーストアの種類を指定します。プラットフォームや証明書のソースに応じて、さまざまなキーストア形式から選択できます。
このプロパティは、クライアント証明書を指定するために使用されるキーストアの形式と場所を決定します。 サポートされている値には、プラットフォーム固有およびユニバーサルなキーストア形式があります。 有効な値と使用方法は以下のとおりです。
| USER - デフォルト | Windows の場合、現在のユーザーにより所有された証明書ストアであることを指定します。この種類はJava では利用できませんので注意してください。 |
| MACHINE | Windows の場合、この証明書ストアがシステムストアであることを指定します。この種類はJava では利用できませんので注意してください。 |
| PFXFILE | この証明書ストアは、証明書を含むPFX(PKCS12)ファイルの名前です。 |
| PFXBLOB | この証明書ストアは、PFX(PKCS12)形式の証明書ストアを表すBase-64でエンコードされた文字列です。 |
| JKSFILE | この証明書ストアは、証明書を含むJava key store(JKS)ファイルの名前です。この種類はJava でのみ利用できますので注意してください。 |
| JKSBLOB | この証明書ストアは、Java key store(JKS)形式の証明書ストアを表すBase-64でエンコードされた文字列です。この種類はJava でのみ利用できますので注意してください。 |
| PEMKEY_FILE | この証明書ストアは、秘密キーと任意の証明書を含むPEM でエンコードされたファイルの名前です。 |
| PEMKEY_BLOB | この証明書ストアは、秘密キーと任意の証明書を含むBase-64でエンコードされた文字列です。 |
| PUBLIC_KEY_FILE | この証明書ストアは、PEM またはDER でエンコードされた公開キーの証明書を含むファイルの名前です。 |
| PUBLIC_KEY_BLOB | この証明書ストアは、PEM またはDER でエンコードされた公開キーの証明書を含むBase-64でエンコードされた文字列です。 |
| SSHPUBLIC_KEY_FILE | この証明書ストアは、SSH 公開キーを含むファイルの名前です。 |
| SSHPUBLIC_KEY_BLOB | この証明書ストアは、SSH 公開キーを含むBase-64でエンコードされた文字列です。 |
| P7BFILE | この証明書ストアは、証明書を含むPKCS7 ファイルの名前です。 |
| PPKFILE | この証明書ストアは、PuTTY 秘密キー(PPK)を含むファイルの名前です。 |
| XMLFILE | この証明書ストアは、XML 形式の証明書を含むファイルの名前です。 |
| XMLBLOB | この証明書ストアは、XML 形式の証明書を含む文字列の名前です。 |
| BCFKSFILE | この証明書ストアは、Bouncy Castle キーストアを含むファイルの名前です。 |
| BCFKSBLOB | この証明書ストアは、Bouncy Castle キーストアを含む文字列(Base-64エンコード)です。 |
TLS/SSL クライアント証明書ストアにアクセスするために必要なパスワードを指定します。選択した証明書ストアの種類がアクセスにパスワードを必要とする場合、このプロパティを使用します。
このプロパティは、パスワードで保護された証明書ストアを開くために必要なパスワードを指定します。 このプロパティは、PFX やJKS タイプのストアによく推奨されるように、復号化のためにパスワードを必要とする証明書ストアを使用する場合に必要です。
証明書ストアの種類がパスワードを必要としない場合(Windows のUSER やMACHINE など)、このプロパティは空白のままにできます。 認証エラーを回避するため、パスワードが指定された証明書ストアに関連付けられたものと一致していることを確認してください。
TLS/SSL クライアント証明書のサブジェクトを指定し、証明書ストアで場所を検索します。 CN=www.server.com, C=US のように、識別名フィールドのカンマ区切りのリストを使用します。ワイルドカード * は、ストアの先頭の証明書を選択します。
このプロパティは、サブジェクトに基づいてロードするクライアント証明書を決定します。Sync App は、指定されたサブジェクトに完全に一致する証明書を検索します。 完全に一致するものが見つからない場合、Sync App はサブジェクトの値を含む証明書を検索します。 一致する証明書がない場合、証明書は選択されません。
サブジェクトは、識別名フィールドと値のカンマ区切りリストという標準の形式に従うべきです。 例えば、CN=www.server.com, OU=Test, C=US です。一般的なフィールドには以下のものが含まれます。
| フィールド | 説明 |
| CN | 共通名。一般的には、www.server.com のようなホスト名です。 |
| O | 法人名 |
| OU | 法人の部署名 |
| L | 法人の住所(市町村名) |
| S | 法人の住所(都道府県) |
| C | 国名 |
| E | E メールアドレス |
Note: フィールドにカンマなどの特殊文字が含まれている場合は、値を引用符で囲む必要があります。例:CN="Example, Inc.", C=US。
FTP またはFTPS サーバーに接続する際の認証メカニズム。
SSLMode がNONE に設定されている場合、サーバーへのログインには、デフォルトのプレーンテキストでの認証が使われます。 SSLMode がIMPLICIT に設定されている場合、接続が確立された直後にSSL ネゴシエーションが開始されます。 SSLMode がEXPLICIT に設定されている場合、Sync App は最初にプレーンテキストで接続し、次にSTARTTLS などのプロトコルコマンドを使用してSSL ネゴシエーションを明示的に開始します。 SSLMode がAUTOMATIC に設定されている場合、リモートポートがプロトコルの標準のプレーンテキストポート(適用可能な場所)に設定されている場合、コンポーネントはSSLMode がEXPLICIT に設定されている場合と同じように動作します。その他すべてのケースでは、SSL ネゴシエーションはIMPLICIT になります。
TLS/SSL を使用して接続する際に、サーバーが受け入れ可能な証明書を指定します。
TLS/SSL 接続を使用する場合は、このプロパティを使用して、サーバーが受け入れるTLS/SSL 証明書を指定できます。コンピュータによって信頼されていない他の証明書はすべて拒否されます。
このプロパティは、次のフォームを取ります:
| 説明 | 例 |
| フルPEM 証明書(例では省略されています) | -----BEGIN CERTIFICATE----- MIIChTCCAe4CAQAwDQYJKoZIhv......Qw== -----END CERTIFICATE----- |
| 証明書を保有するローカルファイルへのパス。 | C:\cert.cer |
| 公開鍵(例では省略されています) | -----BEGIN RSA PUBLIC KEY----- MIGfMA0GCSq......AQAB -----END RSA PUBLIC KEY----- |
| MD5 Thumbprint (hex 値はスペースおよびコロン区切り) | ecadbdda5a1529c58a1e9e09828d70e4 |
| SHA1 Thumbprint (hex 値はスペースおよびコロン区切り) | 34a929226ae0819f2ec14b4a3d904f801cbb150d |
これを指定しない場合は、マシンが信用するすべての証明書が受け入れられます。
すべての証明書の受け入れを示すには、'*'を使用します。セキュリティ上の理由から、これはお勧めできません。
このセクションでは、本プロバイダーの接続文字列で設定可能なSSH プロパティの全リストを提供します。
| プロパティ | 説明 |
| SSHAuthMode | サービスへのSSH トンネルを確立する際に使用される認証方法。 |
| SSHClientCert | SSHUser の認証に使用する証明書。 |
| SSHClientCertPassword | SSHClientCert キーのパスワード(ある場合)。 |
| SSHClientCertSubject | SSH クライアント証明書のサブジェクト。 |
| SSHClientCertType | SSHClientCert 秘密鍵の種類。 |
| SSHUser | SSH ユーザー。 |
| SSHPassword | SSH パスワード。 |
サービスへのSSH トンネルを確立する際に使用される認証方法。
SSHUser の認証に使用する証明書。
公開鍵認証を使用するには、SSHClientCert に有効な秘密鍵が含まれている必要があります。 公開鍵はオプションで、含まれていない場合はSync App が秘密鍵から生成します。 Sync App は公開鍵をサーバーに送信し、ユーザーが公開鍵を認証した場合に接続が許可されます。
SSHClientCertType フィールドは、SSHClientCert により指定されたキーストアの種類を指定します。 ストアがパスワードで保護されている場合は、SSHClientCertPassword でパスワードを指定します。
一部の種類のキーストアは、複数のキーを含むことができるコンテナです。 デフォルトでは、Sync App はストアの最初のキーを選択しますが、SSHClientCertSubject を使用して特定のキーを指定することも可能です。
SSHClientCert キーのパスワード(ある場合)。
このプロパティは、証明書ベースの認証を使用する場合のSSH トンネリングに必要です。 SSH 証明書がパスワードで保護されたキーストアにある場合、証明書にアクセスするためにこのプロパティを使用してパスワードを指定します。
SSH クライアント証明書のサブジェクト。
証明書のサブジェクトは、証明書をロードするときにストア内の証明書を検索するために使用されます。
完全に一致するものが見つからない場合、ストアはプロパティの値を含むサブジェクトを検索します。
それでも一致するものが見つからない場合、プロパティは空白で設定され、証明書は選択されません。
"*" に設定すると、証明書ストアの1番目の証明書が選択されます。
証明書のサブジェクトは識別の名前フィールドおよび値のカンマ区切りのリストです。 例えば、"CN=www.server.com, OU=test, C=US, [email protected]"。共通のフィールドとその説明は以下のとおりです。
| フィールド | 説明 |
| CN | 共通名。一般的には、www.server.com のようなホスト名です。 |
| O | 法人名 |
| OU | 法人の部署名 |
| L | 法人の住所(市町村名) |
| S | 法人の住所(都道府県) |
| C | 国名 |
| E | Eメールアドレス |
フィールド値にカンマが含まれている場合は、それを引用符で囲む必要があります。
SSHClientCert 秘密鍵の種類。
このプロパティには次の値の1つを設定できます。
| 種類 | 説明 | 許容されるBlob 値 |
| MACHINE/USER | Blob 値はサポートされていません。 | |
| JKSFILE/JKSBLOB | base64のみ | |
| PFXFILE/PFXBLOB | PKCS12形式(.pfx)のファイル。証明書と秘密鍵の両方を含む必要があります。 | base64のみ |
| PEMKEY_FILE/PEMKEY_BLOB | PEM 形式のファイル。RSA、DSA、またはOPENSSH の秘密鍵を含む必要があります。オプションで、秘密鍵と一致する証明書を含むことができます。 | base64またはプレーンテキスト。blob をテキストとして入力する場合、改行をスペースに置き換えることができます。 |
| PPKFILE/PPKBLOB | puttygen ツールで作成されたPuTTY 形式の秘密鍵。 | base64のみ |
| XMLFILE/XMLBLOB | .NET のRSA クラスによって生成される形式のXML キー:RSA.ToXmlString(true)。 | base64またはプレーンテキスト。 |
SSH ユーザー。
SSH ユーザー。
SSH パスワード。
SSH パスワード。
このセクションでは、本プロバイダーの接続文字列で設定可能なFirewall プロパティの全リストを提供します。
| プロパティ | 説明 |
| FirewallType | provider がプロキシベースのファイアウォールを介してトラフィックをトンネリングするために使用するプロトコルを指定します。 |
| FirewallServer | ファイアウォールを通過し、ユーザーのクエリをネットワークリソースに中継するために使用されるプロキシのIP アドレス、DNS 名、またはホスト名を識別します。 |
| FirewallPort | プロキシベースのファイアウォールで使用するTCP ポートを指定します。 |
| FirewallUser | プロキシベースのファイアウォールに認証するアカウントのユーザーID を識別します。 |
| FirewallPassword | プロキシベースのファイアウォールで認証するユーザーアカウントのパスワードを指定します。 |
provider がプロキシベースのファイアウォールを介してトラフィックをトンネリングするために使用するプロトコルを指定します。
プロキシベースのファイアウォール(またはプロキシファイアウォール)は、ユーザーのリクエストとそれがアクセスするリソースの間に介在するネットワークセキュリティデバイスです。 プロキシは認証済みのユーザーのリクエストを受け取り、ファイアウォールを通過して適切なサーバーにリクエストを送信します。
プロキシは、リクエストを送信したユーザーに代わってデータバケットを評価し転送するため、ユーザーはサーバーに直接接続することなく、プロキシのみに接続します。
Note:デフォルトでは、Sync App はシステムプロキシに接続します。この動作を無効化し、次のプロキシタイプのいずれかに接続するには、ProxyAutoDetect をfalse に設定します。
次の表は、サポートされている各プロトコルのポート番号情報です。
| プロトコル | デフォルトポート | 説明 |
| TUNNEL | 80 | Sync App がJSON への接続を開くポート。トラフィックはこの場所のプロキシを経由して行き来します。 |
| SOCKS4 | 1080 | Sync App がJSON への接続を開くポート。SOCKS 4 は次にFirewallUser 値をプロキシに渡し、接続リクエストが許容されるかどうかを決定します。 |
| SOCKS5 | 1080 | Sync App がJSON にデータを送信するポート。SOCKS 5 プロキシに認証が必要な場合には、FirewallUser およびFirewallPassword をプロキシが認識する認証情報に設定します。 |
HTTP プロキシへの接続には、ProxyServer およびProxyPort ポートを使ってください。HTTP プロキシへの認証には、ProxyAuthScheme、ProxyUser、およびProxyPassword を使ってください。
ファイアウォールを通過し、ユーザーのクエリをネットワークリソースに中継するために使用されるプロキシのIP アドレス、DNS 名、またはホスト名を識別します。
プロキシベースのファイアウォール(またはプロキシファイアウォール)は、ユーザーのリクエストとそれがアクセスするリソースの間に介在するネットワークセキュリティデバイスです。 プロキシは認証済みのユーザーのリクエストを受け取り、ファイアウォールを通過して適切なサーバーにリクエストを送信します。
プロキシは、リクエストを送信したユーザーに代わってデータバケットを評価し転送するため、ユーザーはサーバーに直接接続することなく、プロキシのみに接続します。
プロキシベースのファイアウォールで使用するTCP ポートを指定します。
プロキシベースのファイアウォール(またはプロキシファイアウォール)は、ユーザーのリクエストとそれがアクセスするリソースの間に介在するネットワークセキュリティデバイスです。 プロキシは認証済みのユーザーのリクエストを受け取り、ファイアウォールを通過して適切なサーバーにリクエストを送信します。
プロキシは、リクエストを送信したユーザーに代わってデータバケットを評価し転送するため、ユーザーはサーバーに直接接続することなく、プロキシのみに接続します。
プロキシベースのファイアウォールに認証するアカウントのユーザーID を識別します。
プロキシベースのファイアウォール(またはプロキシファイアウォール)は、ユーザーのリクエストとそれがアクセスするリソースの間に介在するネットワークセキュリティデバイスです。 プロキシは認証済みのユーザーのリクエストを受け取り、ファイアウォールを通過して適切なサーバーにリクエストを送信します。
プロキシは、リクエストを送信したユーザーに代わってデータバケットを評価し転送するため、ユーザーはサーバーに直接接続することなく、プロキシのみに接続します。
プロキシベースのファイアウォールで認証するユーザーアカウントのパスワードを指定します。
プロキシベースのファイアウォール(またはプロキシファイアウォール)は、ユーザーのリクエストとそれがアクセスするリソースの間に介在するネットワークセキュリティデバイスです。 プロキシは認証済みのユーザーのリクエストを受け取り、ファイアウォールを通過して適切なサーバーにリクエストを送信します。
プロキシは、リクエストを送信したユーザーに代わってデータバケットを評価し転送するため、ユーザーはサーバーに直接接続することなく、プロキシのみに接続します。
このセクションでは、本プロバイダーの接続文字列で設定可能なProxy プロパティの全リストを提供します。
| プロパティ | 説明 |
| ProxyAutoDetect | provider が、手動で指定されたプロキシサーバーを使用するのではなく、既存のプロキシサーバー構成についてシステムプロキシ設定をチェックするかどうかを指定します。 |
| ProxyServer | HTTP トラフィックをルートするプロキシサーバーのホストネームもしくはIP アドレス。 |
| ProxyPort | クライアントとの間でHTTP トラフィックをルーティングするために予約された、指定されたプロキシサーバー(ProxyServer 接続プロパティで設定)のTCP ポート。 |
| ProxyAuthScheme | ProxyServer 接続プロパティで指定されたプロキシサーバーに対して認証する際にprovider が使用する認証方法を指定します。 |
| ProxyUser | ProxyServer 接続プロパティで指定されたプロキシサーバーに登録されているユーザーアカウントのユーザー名。 |
| ProxyPassword | ProxyUser 接続プロパティで指定されたユーザーに紐付けられたパスワード。 |
| ProxySSLType | ProxyServer 接続プロパティで指定されたプロキシサーバーに接続する際に使用するSSL タイプ。 |
| ProxyExceptions | ProxyServer 接続プロパティで設定されたプロキシサーバー経由での接続が免除される宛先ホスト名またはIP のセミコロン区切りのリスト。 |
provider が、手動で指定されたプロキシサーバーを使用するのではなく、既存のプロキシサーバー構成についてシステムプロキシ設定をチェックするかどうかを指定します。
この接続プロパティをTrue に設定すると、Sync App は既存のプロキシサーバー構成についてシステムプロキシ設定をチェックします(プロキシサーバーの詳細を手動で入力する必要はありません)。
この接続プロパティは他のプロキシ設定より優先されます。特定のプロキシサーバーに接続するためにSync App を手動で構成する場合は、False に設定します。
HTTP プロキシへの接続には、ProxyServer を参照してください。SOCKS やトンネリングなどの他のプロキシには、FirewallType を参照してください。
HTTP トラフィックをルートするプロキシサーバーのホストネームもしくはIP アドレス。
ProxyAutoDetect がFalse に設定されている場合、Sync App はこの接続プロパティで指定されたプロキシサーバーを通じてのみHTTP トラフィックをルーティングします。ProxyAutoDetect がTrue に設定されている場合(デフォルト)、Sync App は代わりにシステムプロキシ設定で指定されたプロキシサーバーを介してHTTP トラフィックをルーティングします。
クライアントとの間でHTTP トラフィックをルーティングするために予約された、指定されたプロキシサーバー(ProxyServer 接続プロパティで設定)のTCP ポート。
ProxyAutoDetect がFalse に設定されている場合、Sync App はこの接続プロパティで指定されたプロキシサーバーポートを通じてのみHTTP トラフィックをルーティングします。ProxyAutoDetect がTrue に設定されている場合(デフォルト)、Sync App は代わりにシステムプロキシ設定で指定されたプロキシサーバーポートを介してHTTP トラフィックをルーティングします。
その他のプロキシタイプについては、FirewallType を参照してください。
ProxyServer 接続プロパティで指定されたプロキシサーバーに対して認証する際にprovider が使用する認証方法を指定します。
認証タイプは次のいずれかです。
"NONE" 以外のすべての値については、ProxyUser およびProxyPassword 接続プロパティも設定する必要があります。
SOCKS 5 認証のような他の認証タイプを使用するには、FirewallType を参照してください。
ProxyServer 接続プロパティで指定されたプロキシサーバーに登録されているユーザーアカウントのユーザー名。
ProxyUser および ProxyPassword 接続プロパティは、ProxyServer で指定されたHTTP プロキシに対して接続よび認証するために使用されます。
ProxyAuthScheme で利用可能な認証タイプを1つ選択した後、このプロパティを以下のように設定します。
| ProxyAuthScheme の値 | ProxyUser に設定する値 |
| BASIC | プロキシサーバーに登録されているユーザーのユーザー名。 |
| DIGEST | プロキシサーバーに登録されているユーザーのユーザー名。 |
| NEGOTIATE | プロキシサーバーが属するドメインまたは信頼されたドメイン内の有効なユーザーであるWindows ユーザーのユーザー名。user@domain またはdomain\user の形式で指定。 |
| NTLM | プロキシサーバーが属するドメインまたは信頼されたドメイン内の有効なユーザーであるWindows ユーザーのユーザー名。user@domain またはdomain\user の形式で指定。 |
| NONE | ProxyPassword 接続プロパティは設定しないでください。 |
Sync App は、ProxyAutoDetect がFalse に設定されている場合にのみ、このユーザー名を使用します。ProxyAutoDetect がTrue に設定されている場合(デフォルト)、Sync App は代わりにシステムのプロキシ設定で指定されているユーザー名を使用します。
ProxyUser 接続プロパティで指定されたユーザーに紐付けられたパスワード。
ProxyUser および ProxyPassword 接続プロパティは、ProxyServer で指定されたHTTP プロキシに対して接続よび認証するために使用されます。
ProxyAuthScheme で利用可能な認証タイプを1つ選択した後、このプロパティを以下のように設定します。
| ProxyAuthScheme の値 | ProxyPassword に設定する値 |
| BASIC | ProxyUser で指定したプロキシサーバーユーザーに紐付けられたパスワード。 |
| DIGEST | ProxyUser で指定したプロキシサーバーユーザーに紐付けられたパスワード。 |
| NEGOTIATE | ProxyUser で指定したWindows ユーザーアカウントに紐付けられたパスワード。 |
| NTLM | ProxyUser で指定したWindows ユーザーアカウントに紐付けられたパスワード。 |
| NONE | ProxyPassword 接続プロパティは設定しないでください。 |
SOCKS 5 認証もしくは、トンネリングは、FirewallType を参照してください。
Sync App は、ProxyAutoDetect がFalse に設定されている場合にのみ、このパスワードを使用します。ProxyAutoDetect がTrue に設定されている場合(デフォルト)、Sync App は代わりにシステムのプロキシ設定で指定されているパスワードを使用します。
ProxyServer 接続プロパティで指定されたプロキシサーバーに接続する際に使用するSSL タイプ。
このプロパティは、ProxyServer で指定されたHTTP プロキシへの接続にSSL を使用するかどうかを決定します。この接続プロパティには、以下の値を設定できます。
| AUTO | デフォルト設定。ProxyServer がHTTPS URL に設定されている場合、Sync App は、TUNNEL オプションを使用します。ProxyServer がHTTP URL に設定されている場合、コンポーネントはNEVER オプションを使用します。 |
| ALWAYS | 接続は、常にSSL 有効となります。 |
| NEVER | 接続は、SSL 有効になりません。 |
| TUNNEL | 接続はトンネリングプロキシ経由で行われます。プロキシサーバーがリモートホストへの接続を開き、プロキシを経由して通信が行われます。 |
ProxyServer 接続プロパティで設定されたプロキシサーバー経由での接続が免除される宛先ホスト名またはIP のセミコロン区切りのリスト。
ProxyServer は、このプロパティで定義されたアドレスを除くすべてのアドレスに使用されます。セミコロンを使用してエントリを区切ります。
Sync App はデフォルトでシステムプロキシ設定を使用するため、それ以上の設定は必要ありません。この接続にプロキシ例外を明示的に設定する場合は、ProxyAutoDetect をFalse に設定します。
このセクションでは、本プロバイダーの接続文字列で設定可能なLogging プロパティの全リストを提供します。
| プロパティ | 説明 |
| LogModules | ログファイルに含めるコアモジュールを指定します。セミコロンで区切られたモジュール名のリストを使用します。デフォルトでは、すべてのモジュールがログに記録されます。 |
ログファイルに含めるコアモジュールを指定します。セミコロンで区切られたモジュール名のリストを使用します。デフォルトでは、すべてのモジュールがログに記録されます。
このプロパティは、含めるログモジュールを指定することでログファイルの内容をカスタマイズすることができます。 ログモジュールは、クエリ実行、メタデータ、SSL 通信などの異なる領域にログ情報を分類します。 各モジュールは4文字のコードで表され、文字の名前の場合は末尾にスペースが必要なものもあります。
例えば、EXEC はクエリ実行をログに記録し、INFO は一般的なプロバイダーメッセージをログに記録します。 複数のモジュールを含めるには、次のように名前をセミコロンで区切ります:INFO;EXEC;SSL。
Verbosity 接続プロパティは、このプロパティで指定されたモジュールベースのフィルタリングよりも優先されます。 Verbosity レベルを満たし、指定されたモジュールに属するログエントリのみが記録されます。 利用可能なすべてのモジュールをログファイルに含めるには、このプロパティを空白のままにします。
利用可能なモジュールの完全なリストとログの設定に関する詳細な手引きについては、ログ の「高度なログの記録」セクションを参照してください。
このセクションでは、本プロバイダーの接続文字列で設定可能なSchema プロパティの全リストを提供します。
| プロパティ | 説明 |
| Location | テーブル、ビュー、およびストアドプロシージャを定義するスキーマファイルを格納するディレクトリの場所を指定します。サービスの要件に応じて、これは絶対パスまたは相対パスのいずれかで表されます。 |
| BrowsableSchemas | レポートされるスキーマを利用可能なすべてのスキーマのサブセットに制限するオプション設定。例えば、 BrowsableSchemas=SchemaA,SchemaB,SchemaC です。 |
| Tables | レポートされるテーブルを利用可能なすべてのテーブルのサブセットに制限するオプション設定。例えば、 Tables=TableA,TableB,TableC です。 |
| Views | レポートされたビューを使用可能なテーブルのサブセットに制限するオプション設定。例えば、 Views=ViewA,ViewB,ViewC です。 |
| FlattenArrays | デフォルトで、ネスト配列はJSON 文字列として返されます。 FlattenArrays プロパティはネスト配列のエレメントをフラット化してそれぞれのカラムとするために使われます。ネスト配列から返すエレメントの数に FlattenArrays を設定します。 |
| FlattenObjects | フラット化されたオブジェクトプロパティとしてカラムを表示するには、 FlattenObjects をtrue に設定します。そうでなければ、配列にネストされたオブジェクトはJSON 文字列として返されます。 |
| QualifyColumns | Controls whether the provider will use relative column names. |
テーブル、ビュー、およびストアドプロシージャを定義するスキーマファイルを格納するディレクトリの場所を指定します。サービスの要件に応じて、これは絶対パスまたは相対パスのいずれかで表されます。
Location プロパティは、定義をカスタマイズしたり(例えば、カラム名を変更する、カラムを無視するなど)、新しいテーブル、ビュー、またはストアドプロシージャでデータモデルを拡張する場合にのみ必要です。
指定しない場合、デフォルトの場所は%APPDATA%\\CData\\JSON Data Provider\\Schema となり、%APPDATA%はユーザーのコンフィギュレーションディレクトリに設定されます:
| プラットフォーム | %APPDATA% |
| Windows | APPDATA 環境変数の値 |
| Linux | ~/.config |
レポートされるスキーマを利用可能なすべてのスキーマのサブセットに制限するオプション設定。例えば、 BrowsableSchemas=SchemaA,SchemaB,SchemaC です。
利用可能なデータベーススキーマをすべてリストすると余分な時間がかかり、パフォーマンスが低下します。 接続文字列にスキーマのリストを指定することで、時間を節約しパフォーマンスを向上させることができます。
レポートされるテーブルを利用可能なすべてのテーブルのサブセットに制限するオプション設定。例えば、 Tables=TableA,TableB,TableC です。
データベースによっては、利用可能なすべてのテーブルをリストするのに時間がかかり、パフォーマンスが低下する場合があります。 接続文字列にテーブルのリストを指定することで、時間を節約しパフォーマンスを向上させることができます。
利用可能なテーブルがたくさんあり、すでに作業したいテーブルが決まっている場合、このプロパティを使用して対象のテーブルのみに表示を制限することができます。これを行うには、カンマ区切りのリストで使用したいテーブルを指定します。各テーブルは、角かっこ、二重引用符、またはバッククオートを使用してエスケープされた特殊文字列を含む有効なSQL 識別子である必要があります。 例えば、Tables=TableA,[TableB/WithSlash],WithCatalog.WithSchema.`TableC With Space` です。
Note:複数のスキーマまたはカタログを持つデータソースに接続する場合は、表示する各テーブルを完全修飾名で指定する必要があります。これにより、複数のカタログやスキーマに存在するテーブルが混同されることを防ぎます。
レポートされたビューを使用可能なテーブルのサブセットに制限するオプション設定。例えば、 Views=ViewA,ViewB,ViewC です。
データベースによっては、利用可能なすべてのビューをリストするのに時間がかかり、パフォーマンスが低下する場合があります。 接続文字列にビューのリストを指定することで、時間を節約しパフォーマンスを向上させることができます。
利用可能なビューがたくさんあり、すでに作業したいビューが決まっている場合、このプロパティを使用して対象のビューのみに表示を制限することができます。これを行うには、カンマ区切りのリストで使用したいビューを指定します。各ビューは、角かっこ、二重引用符、またはバッククオートを使用してエスケープされた特殊文字列を含む有効なSQL 識別子である必要があります。 例えば、Views=ViewA,[ViewB/WithSlash],WithCatalog.WithSchema.`ViewC With Space` です。
Note:複数のスキーマまたはカタログを持つデータソースに接続する場合は、確認する各ビューを完全修飾名で指定する必要があります。これにより、複数のカタログやスキーマに存在するビューが混同されることを防ぎます。
デフォルトで、ネスト配列はJSON 文字列として返されます。 FlattenArrays プロパティはネスト配列のエレメントをフラット化してそれぞれのカラムとするために使われます。ネスト配列から返すエレメントの数に FlattenArrays を設定します。
デフォルトで、ネスト配列はJSON 文字列として返されます。FlattenArrays プロパティはネスト配列のエレメントをフラット化してそれぞれのカラムとするために使われます。これは短い配列の場合にのみ推奨されます。
ネスト配列から返すエレメントの数にFlattenArrays を設定します。特定されたエレメントはカラムとして返されます。Zero-base のインデックスはカラム名にコンカテネートされます。他のエレメントは無視されます。
例えば、文字列の配列からエレメントのアービトラリー数を返すことができます。
["FLOW-MATIC","LISP","COBOL"]FlattenArrays が1に設定されている場合、配列は次のテーブルのようにフラット化されます。
| カラム名 | カラム値 |
| languages.0 | FLOW-MATIC |
FlattenArrays を-1 に設定すると、ネストされた配列のすべてのエレメントをフラット化します。
フラット化されたオブジェクトプロパティとしてカラムを表示するには、 FlattenObjects をtrue に設定します。そうでなければ、配列にネストされたオブジェクトはJSON 文字列として返されます。
フラット化されたオブジェクトプロパティとしてカラムを表示するには、FlattenObjects をtrue に設定します。そうでなければ、配列にネストされたオブジェクトはJSON 文字列として返されます。カラム名を生成するために、Sync App はプロパティ名をオブジェクト名にドットでコンカティネイトします。
例えば、次のネストされたオブジェクトを接続時にフラット化できます。
[
{ "grade": "A", "score": 2 },
{ "grade": "A", "score": 6 },
{ "grade": "A", "score": 10 },
{ "grade": "A", "score": 9 },
{ "grade": "B", "score": 14 }
]
FlattenObjects がtrue に設定されていて、FlattenArrays が1に設定されている場合、配列は次のテーブルのようにフラット化されます。
| カラム名 | カラム値 |
| grades.0.grade | A |
| grades.0.score | 2 |
Controls whether the provider will use relative column names.
By default the Sync App will only qualify a column name as much as is necessary to make it unique.
For example, in this document the Sync App will produce the columns id (referring to the company id) and employee.id.
{
"company": [
{
"id": "Smith Holdings",
"employee": [
{"id": "George Smith"},
{"id": "Mike Johnson"}
]
}
]
}
When this option is set to Parent, the Sync App uses a similar procedure to the one above. However, the Sync App will always qualify columns by one level so that their table name is included, even if the column name is unique. For example, the above document would generate the columns company.id and employee.id because both are unique when including their parent.
When this option is set to Full, the Sync App will qualify all column names with their full XPath. This generates longer column names but ensures that it is clear where each column name comes from within the document. For the example above, the Sync App would generate the columns json.company.id and json.company.employee.id.
このセクションでは、本プロバイダーの接続文字列で設定可能なMiscellaneous プロパティの全リストを提供します。
| プロパティ | 説明 |
| BackwardsCompatibilityMode | 2017バージョンで使用可能なJSON 機能を使用するには、 BackwardsCompatibilityMode をtrue に設定します。 |
| Charset | JSON ファイルに移行、またはJSON ファイルから移行した文字データをエンコードおよびデコードするための、セッション毎の文字セットを指定します。デフォルト値はUTF-8 です。 |
| Culture | この設定を使用して、provider に渡された特定のデータ型をprovider が解釈する方法を決定するカルチャ設定を指定できます。例えば、Culture='de-DE' の設定にすると、米国のマシンでもドイツ語形式で出力されます。 |
| CustomHeaders | 他のプロパティ(ContentType やFrom など)から作成されたリクエストヘッダーに追加する、追加HTTP ヘッダーを指定します。このプロパティは、特殊または非標準のAPI 用にリクエストをカスタマイズするために使用します。 |
| CustomUrlParams | HTTP リクエストに含めるカスタムURL パラメータの文字列で、field1=value1&field2=value2&field3=value3 の形式。 |
| ExcludeFiles | テーブルとしてモデル化されたファイル一式から除外するファイル拡張子のカンマ区切りリスト。 |
| FlattenRowLimit | The maximum number of rows that can result from a single flattened element. |
| FolderId | Google Drive のフォルダID。設定すると、URI で指定されたリソースの位置はすべての操作においてFolder ID からの相対位置となります。 |
| GenerateSchemaFiles | スキーマを生成して保存するユーザーの好みのタイミングを示します。 |
| IncludeDropboxTeamResources | Dropbox チームフォルダやファイルを含めるかどうかを示します。 |
| IncludeFiles | テーブルとしてモデル化されたファイル一式に含めるファイル拡張子のカンマ区切りリスト。 |
| IncludeItemsFromAllDrives | Google Drive の共有ドライブ項目を結果に含めるかどうか。存在しないかfalse に設定されている場合、共有ドライブ項目は返されません。 |
| MaxRows | 集計やGROUP BY を使用しないクエリで返される最大行数を指定します。 |
| MetadataDiscoveryURI | 複数のファイルを1つのテーブルに集約する際に使用します。このプロパティは、集約されたテーブルのスキーマを決定するために読み込む特定のファイルを指定します。 |
| Other | 特定のユースケースに対して追加の隠しプロパティを指定します。これらは通常のprovider の機能では必要ありません。複数のプロパティを定義するには、セミコロンで区切られたリストを使用します。 |
| Pagesize | JSON から返される、1ページあたりの結果の最大数を指定します。この設定は、ほとんどのユースケースに最適化されている、データソースによって設定されたデフォルトのページサイズをオーバーライドします。 |
| PathSeparator | Determines the character which will be used to replace the file separator. |
| PseudoColumns | テーブルカラムとして公開する擬似カラムを指定します。'TableName=ColumnName;TableName=ColumnName' という形式を使用します。デフォルトは空の文字列で、このプロパティを無効にします。 |
| RowScanDepth | 動的にテーブルのカラムを決定するためにスキャンする行数。 |
| Timeout | provider がタイムアウトエラーを返すまでにサーバーからの応答を待機する最大時間を秒単位で指定します。デフォルトは60秒です。タイムアウトを無効にするには0を設定します。 |
| TypeDetectionScheme | Determines how to determine the data types of columns. |
| URISeparator | A delimiter used to separate different values in the URI property. |
| UserDefinedViews | カスタムビューを定義するJSON 構成ファイルへのファイルパスを指定します。provider は、このファイルで指定されたビューを自動的に検出して使用します。 |
2017バージョンで使用可能なJSON 機能を使用するには、 BackwardsCompatibilityMode をtrue に設定します。
true に設定すると、Sync App は2017バージョンと同じように機能します。false(デフォルト)に設定すると、新しいフラット化機能が利用可能になります。これには、SQL クエリによるテーブルとカラムの動的なフラット化同様に、 DataModel、FlattenArrays、FlattenObjects が含まれます。
下位互換モードは引き続きサポート/改善されます。
JSON ファイルに移行、またはJSON ファイルから移行した文字データをエンコードおよびデコードするための、セッション毎の文字セットを指定します。デフォルト値はUTF-8 です。
JSON ファイルに移行、またはJSON ファイルから移行した文字データをエンコードおよびデコードするための、セッション毎の文字セットを指定します。デフォルト値はUTF-8 です。
この設定を使用して、provider に渡された特定のデータ型をprovider が解釈する方法を決定するカルチャ設定を指定できます。例えば、Culture='de-DE' の設定にすると、米国のマシンでもドイツ語形式で出力されます。
このプロパティは、Sync App 入力に影響を与えます。別のカルチャ形式の値を解釈するには、Client Culture プロパティを使用します。デフォルトでは、Sync App は入力の解釈と出力の形式に、マシンの現在のロケール設定を使用します。
他のプロパティ(ContentType やFrom など)から作成されたリクエストヘッダーに追加する、追加HTTP ヘッダーを指定します。このプロパティは、特殊または非標準のAPI 用にリクエストをカスタマイズするために使用します。
このプロパティを使用して、Sync App から送信されるHTTP リクエストにカスタムヘッダーを追加します。
このプロパティは、追加ヘッダーや非標準ヘッダーを必要とするAPI とやり取りするためにリクエストを微調整する際に役立ちます。 ヘッダーはHTTP 仕様で記述されているとおり"header: value" の形式に従う必要があり、各ヘッダー行はキャリッジリターンとラインフィード(CRLF)文字で区切る必要があります。 重要:このプロパティを設定する際は注意してください。無効なヘッダーを指定するとHTTP リクエストが失敗する場合があります。
HTTP リクエストに含めるカスタムURL パラメータの文字列で、field1=value1&field2=value2&field3=value3 の形式。
このプロパティを使用すると、HTTP リクエストに含まれるカスタムクエリ文字列パラメータを指定できます。 パラメータは、各値がURL エンコードされた形式でfield1=value1&field2=value2&field3=value3 の形式で、クエリ文字列としてエンコードする必要があります。 URL エンコーディングは、以下のようにインターネット上で送信可能な文字列に変換する方法です。
テーブルとしてモデル化されたファイル一式から除外するファイル拡張子のカンマ区切りリスト。
datetime フィルタを指定することも可能です。現在、CreatedDate およびModifiedDate がサポートされています。 すべての拡張フィルタは論理和(OR 演算子を使用)で評価され、結果のフィルタはdatetime フィルタと組み合わせて(AND 演算子を使用)評価されます。
例:
ExcludeFiles="TXT,CreatedDate<='2020-11-26T07:39:34-05:00'"
ExcludeFiles="TXT,ModifiedDate<=DATETIMEFROMPARTS(2020, 11, 26, 7, 40, 50, 000)"
ExcludeFiles="ModifiedDate>=DATETIMEFROMPARTS(2020, 11, 26, 7, 40, 49, 000),ModifiedDate<=CURRENT_TIMESTAMP()"
The maximum number of rows that can result from a single flattened element.
In some cases the FlattenedDocuments DataModel may try to output more rows than intended, either because of the shape of the data or the table identification options. If the number of rows to be generated is large enough this can lead to memory issues as the Sync App has to store all the generated rows in memory before returning them.
To avoid this the Sync App will check that the number of rows to be output does not exceed this limit (250000 by default). If the Sync App would output more rows than this for a single flattened element it will instead fail the query and report an error.
Google Drive のフォルダID。設定すると、URI で指定されたリソースの位置はすべての操作においてFolder ID からの相対位置となります。
Google Drive のフォルダID。設定すると、URI で指定されたリソースの位置はすべての操作においてFolder ID からの相対位置となります。
スキーマを生成して保存するユーザーの好みのタイミングを示します。
このプロパティは、Location で指定されたパスの.rsd ファイルにスキーマをアウトプットします。
有効な設定は次のとおりです。
GenerateSchemaFiles をOnUse に設定すると、Sync App はSELECT クエリを実行したときにスキーマを生成します。スキーマはクエリのそれぞれの参照されたテーブルに対して生成されます。
GenerateSchemaFiles をOnCreate に設定すると、CREATE TABLE クエリが実行されたときにのみスキーマが生成されます。
このプロパティのもう一つの使い方は、接続するときにデータベース内のすべてのテーブルのスキーマを取得することです。これには、GenerateSchemaFiles をOnStart に設定して接続します。
Dropbox チームフォルダやファイルを含めるかどうかを示します。
Dropbox チームフォルダやファイルにアクセスするには、この接続プロパティをTrue に設定してください。
テーブルとしてモデル化されたファイル一式に含めるファイル拡張子のカンマ区切りリスト。
Comma-separated list of file extensions to include into the set of the files modeled as tables. For example, IncludeFiles=JSON,TXT. The default is JSON,TXT.
A '*' value can be specified to include all files. A 'NOEXT' value can be specified to include files without an extension.
datetime フィルタを指定することも可能です。現在、CreatedDate およびModifiedDate がサポートされています。 すべての拡張フィルタは論理和(OR 演算子を使用)で評価され、結果のフィルタはdatetime フィルタと組み合わせて(AND 演算子を使用)評価されます。
例:
IncludeFiles="TXT,CreatedDate<='2020-11-26T07:39:34-05:00'"
IncludeFiles="TXT,ModifiedDate<=DATETIMEFROMPARTS(2020, 11, 26, 7, 40, 50, 000)"
IncludeFiles="ModifiedDate>=DATETIMEFROMPARTS(2020, 11, 26, 7, 40, 49, 000),ModifiedDate<=CURRENT_TIMESTAMP()"
Google Drive の共有ドライブ項目を結果に含めるかどうか。存在しないかfalse に設定されている場合、共有ドライブ項目は返されません。
このプロパティを'True' に設定すると、共有ドライブを含むすべてのドライブからファイルが取得されます。URI の先頭を共有ドライブのパスに設定し、オプションで任意のフォルダを指定することで、ファイルの検索対象を特定の共有ドライブまたは共有ドライブ内の特定のフォルダに限定することができます(例:'gdrive://SharedDriveA/FolderA/...')。さらに、FolderId プロパティを使用すると検索対象を正確なサブディレクトリに限定できます。
集計やGROUP BY を使用しないクエリで返される最大行数を指定します。
このプロパティは、集計やGROUP BY 句を含まないクエリに対してSync App が返す行数の上限を設定します。 この制限により、クエリがデフォルトで過度に大きな結果セットを返さないようにします。
クエリにLIMIT 句が含まれている場合、クエリで指定された値がMaxRows 設定よりも優先されます。 MaxRows が"-1" に設定されている場合、LIMIT 句が明示的にクエリに含まれていない限り、行の制限は行われません。
このプロパティは、非常に大きなデータセットを返す可能性のあるクエリを実行する際に、パフォーマンスを最適化し過剰なリソース消費を防ぐのに役立ちます。
複数のファイルを1つのテーブルに集約する際に使用します。このプロパティは、集約されたテーブルのスキーマを決定するために読み込む特定のファイルを指定します。
複数のファイルを1つのテーブルに集約する際に使用します。このプロパティは、集約されたテーブルのスキーマを決定するために読み込む特定のファイルを指定します。
特定のユースケースに対して追加の隠しプロパティを指定します。これらは通常のprovider の機能では必要ありません。複数のプロパティを定義するには、セミコロンで区切られたリストを使用します。
このプロパティは、シニアユーザーが特定のシナリオに対して隠しプロパティを設定できるようにします。 これらの設定は通常のユースケースには必要ありませんが、特定の要件に対応したり、追加の機能を提供したりすることができます。 複数のプロパティをセミコロン区切りのリストで定義できます。
Note: 特定のシナリオや問題に対処するためにサポートチームから助言があった場合にのみ、これらのプロパティを設定することを強く推奨します。
複数のプロパティをセミコロン区切りリストで指定します。
| DefaultColumnSize | データソースがメタデータにカラムの長さを提供しない場合に、文字列フィールドのデフォルトの長さを設定します。デフォルト値は2000です。 |
| ConvertDateTimeToGMT | 日時の値を、マシンのローカルタイムではなくGMT グリニッジ標準時に変換するかどうかを決定します。 |
| RecordToFile=filename | 基底のソケットデータ転送を指定のファイルに記録します。 |
JSON から返される、1ページあたりの結果の最大数を指定します。この設定は、ほとんどのユースケースに最適化されている、データソースによって設定されたデフォルトのページサイズをオーバーライドします。
クエリする特定のオブジェクトやサービスエンドポイントの結果を最適化するために、デフォルトのページサイズを調整したい場合があります。 ページサイズを大きくするとパフォーマンスが向上するかもしれませんが、ページあたりのメモリ消費量が増える可能性もあることに注意してください。
Determines the character which will be used to replace the file separator.
Determines the character which will be used to replace the file separator. If there is a JSON file located in "Test/Files/Test.json" and if this property is set to "_", then the table name for this file would be "Test_Files_Test.json".
テーブルカラムとして公開する擬似カラムを指定します。'TableName=ColumnName;TableName=ColumnName' という形式を使用します。デフォルトは空の文字列で、このプロパティを無効にします。
このプロパティを使用すると、Sync App がテーブルカラムとして公開する擬似カラムを定義できます。
個々の擬似カラムを指定するには、以下の形式を使用します。"Table1=Column1;Table1=Column2;Table2=Column3"
すべてのテーブルのすべての擬似カラムを含めるには、次のようにします:"*=*"
動的にテーブルのカラムを決定するためにスキャンする行数。
テーブルのカラムを動的に決定するときにスキャンする行(オブジェクト)の数。行スキャンは、ネストされたオブジェクトに従って、1オブジェクト配列を1行としてカウントします。 GenerateSchemaFiles を使用しているときなど、スキーマ(RSD)ファイルがテーブルに対して見つからない場合、カラムは動的に決定されます。
大きな値に設定すると、リクエストにより時間がかかりますが正確さが増します。
この値を0 (ゼロ)に設定すると、JSON ドキュメント全体をパースします。
provider がタイムアウトエラーを返すまでにサーバーからの応答を待機する最大時間を秒単位で指定します。デフォルトは60秒です。タイムアウトを無効にするには0を設定します。
このプロパティは、Sync App が操作をキャンセルする前に操作の完了を待機する最大時間を秒単位で制御します。 操作の完了前にタイムアウト時間が経過すると、Sync App は操作をキャンセルして例外をスローします。
タイムアウトは、クエリや操作全体ではなくサーバーとの個々の通信に適用されます。 例えば、各ページング呼び出しがタイムアウト制限内に完了する場合、クエリは60秒を超えて実行を続けることができます。
このプロパティを0に設定するとタイムアウトが無効になり、操作が成功するか、サーバー側のタイムアウト、ネットワークの中断、またはサーバーのリソース制限などの他の条件で失敗するまで無期限に実行されます。 このプロパティは慎重に使用してください。長時間実行される操作がパフォーマンスを低下させたり、応答しなくなる可能性があるためです。
Determines how to determine the data types of columns.
| None | Setting TypeDetectionScheme to None will return all columns as the string type. |
| RowScan | Setting TypeDetectionScheme to RowScan will scan rows to heuristically determine the data type. The RowScanDepth determines the number of rows to be scanned. |
A delimiter used to separate different values in the URI property.
By default the delimiter is a comma which means that multiple URIs can be
joined together like this:
URI=c:/data/json1.json,c:/data/json2.json,c:/data/json3.json
カスタムビューを定義するJSON 構成ファイルへのファイルパスを指定します。provider は、このファイルで指定されたビューを自動的に検出して使用します。
このプロパティを使用すると、UserDefinedViews.json というJSON 形式の構成ファイルを通じてカスタムビューを定義および管理できます。 これらのビューはSync App によって自動的に認識され、標準のデータベースビューのようにカスタムSQL クエリを実行できるようになります。 JSON ファイルは、各ビューをルート要素として定義し、その子要素として"query" を持ちます。この"query" にはビューのSQL クエリが含まれています。次に例を示します。
{
"MyView": {
"query": "SELECT * FROM NorthwindOData WHERE MyColumn = 'value'"
},
"MyView2": {
"query": "SELECT * FROM MyTable WHERE Id IN (1,2,3)"
}
}
このプロパティを使用して、1つのファイルに複数のビューを定義し、ファイルパスを指定できます。 例:UserDefinedViews=C:\Path\To\UserDefinedViews.json。 このプロパティを使用すると、指定されたビューのみがSync App によって検知されます。
詳しくは、ユーザー定義ビュー を参照してください。