接続の確立
CData Cmdlets ユーザーは、データモジュールをインストールし、接続プロパティを設定してスクリプトを開始できます。このセクションでは、CSV インポートおよびエクスポートcmdlet などのネイティブPowerShell cmdlet でSAPBusinessObjectsBI Cmdlets を使用する例を示します。
SAPBusinessObjectsBI への接続
SAP BusinessObjects BI インスタンスに接続するには、以下を設定する必要があります。
- URL:SAP BusinessObjects BI REST API URL。これを見つけるには:
- セントラル管理コンソールにログインします。
- コンボボックスからアプリケーションを選択します。
- RESTful Web Service を選択します。セントラル管理コンソールは、アクセスURL を表示します。デフォルトでは、http://{Server-Name}:6405/biprws です。
- AuthScheme:SAP BusinessObjects BI に接続する際に使用する認証の種類に設定。
Basic
デフォルトのBasic 認証メカニズムを使用してSAP BusinessObjects BI に接続するには、AuthScheme をBasic に設定し、次のプロパティを設定します。
Enterprise
Enterprise 認証を使用してSAP BusinessObjects BI に接続するには、AuthScheme をEnterprise に設定し、次のプロパティを設定します。
LDAP
LDAP 認証を使用してSAP BusinessObjects BI に接続するには、AuthScheme をLDAP に設定し、次のプロパティを設定します。
WinAD
Windows AD 認証を使用してSAP BusinessObjects BI に接続するには、AuthScheme をWinAD に設定し、次のプロパティを設定します。
CyberArk
CyberArk に接続するには、AuthScheme をCyberArk に設定し、次のプロパティを設定します。
- User:CyberArk のログイン名(user@domain)。
- Password:CyberArk ユーザーのパスワード。
- SSOLoginURL:アプリのシングルサインオンURL。
- SSOExchangeURL:The url used for the exchange of the SAML token for SAP BusinessObjects BI credentials.
MFA を設定している場合、CyberArk を使用して認証するにはSSOProperties を組み合わせて使用する必要があります。必要に応じて、以下のいずれかを設定します。
- MFAType:MFA を設定している場合、認証時に選択するメカニズムの名前を設定します。
- MFAPassCode:MFA を設定している場合、選択したメカニズムに対して有効な回答を設定します。
この値を空欄または無効な値に設定すると、本製品 は帯域外メカニズムを開始します。本製品 は、ユーザーとの対話を通じてチャレンジが完了するまでAPI をポーリングしてから、接続を閉じるかどうかを決定します。 - MFATimeout:MFA を設定している場合、本製品 がユーザーとの対話によってチャレンジが完了するまでAPI のポーリングを継続する秒数を設定します。デフォルトでは、本製品 は接続を閉じる前に60秒間API をポーリングします。
接続文字列の例:
AuthScheme=CyberArk;SSOLoginURL='https://abc1234.id.cyberark.cloud/run?appkey=00000000-0000-0000-0000-000000000000&customerId=ABC1234';User=cyberarkUserName;Password=cyberarkPassword;SSOExchangeUrl=http://myserver:8080/biprws/saml/SSO;
接続オブジェクトの作成
Connect-SAPBusinessObjectsBI cmdlet を使って、別のcmdlet に渡すことができる接続オブジェクトを作成します。
$conn = Connect-SAPBusinessObjectsBI -User "MyUser" -Password "MyPassword" -Url "http://myserver:6405/biprws"
データの取得
Select-SAPBusinessObjectsBI cmdlet はデータを取得するためのネイティブなPowerShell インターフェースを提供します。
$results = Select-SAPBusinessObjectsBI -Connection $conn -Table "MyCustomReport" -Columns @("StoreName, Column1") -Where "Column2='Bob'"
Invoke-SAPBusinessObjectsBI cmdlet はSQL インターフェースを提供します。このcmdlet を使うと、Query パラメータを介してSQL クエリを実行できます。
cmdlet 出力のパイプ処理
cmdlet は行オブジェクトをパイプラインに一度に一行ずつ返します。以下は、結果をCSV ファイルにエクスポートします。
Select-SAPBusinessObjectsBI -Connection $conn -Table MyCustomReport -Where "Column2 = 'Bob'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\myMyCustomReportData.csv -NoTypeInformation
Select-SAPBusinessObjectsBI からの結果をSelect-Object cmdlet にパイプして、Export-CSV cmdlet にパイプする前にいくつかのプロパティを実行していることがわかるでしょう。これをする理由は、CData Cmdlets は接続、テーブル、およびカラムの情報を結果セットの各行オブジェクトに追加しますが、必ずしもその情報がCSV ファイルに必要ではないからです。
ただし、これによってcmdlet の出力を別のcmdlet にパイプすることが容易になります。以下に、結果セットをJSON に変換する例を示します。
PS C:\> $conn = Connect-SAPBusinessObjectsBI -User "MyUser" -Password "MyPassword" -Url "http://myserver:6405/biprws"
PS C:\> $row = Select-SAPBusinessObjectsBI -Connection $conn -Table "MyCustomReport" -Columns (StoreName, Column1) -Where "Column2 = 'Bob'" | select -first 1
PS C:\> $row | ConvertTo-Json
{
"Connection": {
},
"Table": "MyCustomReport",
"Columns": [
],
"StoreName": "MyStoreName",
"Column1": "MyColumn1"
}
データの削除
以下は、抽出条件に合うあらゆるレコードを削除します。
Select-SAPBusinessObjectsBI -Connection $conn -Table MyCustomReport -Where "Column2 = 'Bob'" | Remove-SAPBusinessObjectsBI
データの変更
cmdlet はデータクレンジング同様、データの変換を容易にします。次の例は、レコードがすでに存在するかどうか、挿入する前に更新が必要かどうかをチェックしてから、CSV ファイルのデータをSAP BusinessObjects BI にロードします。
Import-Csv -Path C:\MyMyCustomReportUpdates.csv | %{
$record = Select-SAPBusinessObjectsBI -Connection $conn -Table MyCustomReport -Where ("Id = `'"+$_.Id+"`'")
if($record){
Update-SAPBusinessObjectsBI -Connection $conn -Table MyCustomReport -Columns @("StoreName","Column1") -Values @($_.StoreName, $_.Column1) -Where "Id = `'$_.Id`'"
}else{
Add-SAPBusinessObjectsBI -Connection $conn -Table MyCustomReport -Columns @("StoreName","Column1") -Values @($_.StoreName, $_.Column1)
}
}