接続の確立
CData Cmdlets ユーザーは、データモジュールをインストールし、接続プロパティを設定してスクリプトを開始できます。このセクションでは、CSV インポートおよびエクスポートcmdlet などのネイティブPowerShell cmdlet でSASDataSets Cmdlets を使用する例を示します。
インストールおよび接続
PSGet がある場合は、PowerShell Gallery から次のコマンドを使ってcmdlet をインストールできます。CData サイトからセットアップを取得することもできます。
Install-Module SASDataSetsCmdlets
プロファイルに以下を追加すると、次のセッションでcmdlet がロードされます。
Import-Module SASDataSetsCmdlets;
Connect-SASDataSets cmdlet を使って、別のcmdlet に渡すことができる接続オブジェクトを作成します。
$conn = Connect-SASDataSets -URI 'C:\myfolder'
CData Cmdlets PowerShell Module for SAS Data Sets を使用すると、ローカルおよびリモートのSAS リソースに接続できます。データソースへの接続に必要なプロパティに加えて、URI プロパティをSAS リソースの場所に設定します。
ローカルファイルへの接続
ConnectionType をLocal に設定します。ローカルファイルは、SELECT\INSERT\DELETE をサポートします。
URI をSAS ファイルを含むフォルダに設定します。 C:\folder1。
Cloud-Hosted SAS Data Sets ファイルへの接続
本製品 はさまざまなクラウドストレージ上にホストされたSAS Data Sets ファイルからデータを取得することができますが、INSERT、UPDATE、DELETE はローカルファイル以外ではサポートされていません。クラウド上のファイルをINSERT、UPDATE、DELETE する必要がある場合は、そのクラウドサービスに対応するCData 本製品 をダウンロードし(ストアドプロシージャでサポートされています)、ローカルファイルの対応する本製品 に変更を加え、そのクラウドソース用のストアドプロシージャを使ってファイルをアップロードできます。
例えば、SharePoint 上に格納されたファイルをアップデートしたい場合、CData SharePoint 本製品 のDownloadDocument プロシージャを使用してSAS Data Sets ファイルをダウンロードし、CData SAS Data Sets 本製品 でローカルのSAS Data Sets ファイルをアップデートして、最後にSharePoint 本製品 のUploadDocument プロシージャを使って変更されたファイルをSharePoint にアップロードできます。
URI 接続プロパティの先頭にある一意の接頭辞は、本製品 が対象とするクラウドデータストアを識別するために使用され、残りのパスは目的のフォルダ(1ファイルにつき1テーブル)または単一ファイル(単一テーブル)への相対パスとなります。
Amazon S3
Amazon S3 に格納されているSAS Data Sets リソースを識別するために以下を設定します。
- ConnectionType:ConnectionType をAmazon S3 に設定。
- URI:the bucket and folder:s3://bucket1/folder1 に設定。
- Volume およびBucket を作成し、そのバケット:s3://linktobucket/ にsymbolic link を作成した後、Cloudera Ozone に保存されているSAS Data Sets リソースに接続することもできます。
Amazon S3 でホストされているSAS ファイルへの接続および認証について詳しくは、Amazon S3 への接続 を参照してください。
Azure Blob Storage
Azure Blob Storage に格納されているSAS Data Sets リソースを識別するために以下を設定します。
- ConnectionType:Azure Blob Storage に設定。
- URI:コンテナの名前およびBlob の名前に設定。例えば、azureblob://mycontainer/myblob です。
Amazon Blob Storage でホストされているSAS ファイルへの接続および認証について詳しくは、Azure Blob Storage への接続 を参照してください。
Azure Data Lake Storage
Azure Data Lake Storage に格納されているSAS Data Sets リソースを識別するために以下を設定します。
- ConnectionType:Azure Data Lake Storage Gen1、Azure Data Lake Storage Gen2、またはAzure Data Lake Storage Gen2 SSL に設定。
- URI:the name of the file system and the name of the folder which contains your SAS Data Sets files に設定。次に例を示します。
- Gen 1:adl://myfilesystem/folder1
- Gen 2:abfs://myfilesystem/folder1
- Gen 2 SSL:abfss://myfilesystem/folder1
Azure Data Lake Storage でホストされているSAS ファイルへの接続および認証について詳しくは、Azure Data Lake Storage への接続 を参照してください。
Azure File Storage
接続するには次のプロパティを設定します。
- ConnectionType:Azure Files に設定。
- URI:Azure ファイル共有の名前とリソースの名前に設定。例:azurefile://fileShare/remotePath。
- AzureStorageAccount(必須):Azure ファイルに紐づいているアカウントに設定。
Azure アクセスキーまたはAzure 共有アクセス署名のいずれかで認証できます。次のいずれか1つを設定してください。
- AzureAccessKey:Azure ファイルに紐づいているアクセスキーに設定。
- AzureSharedAccessSignature:Azure ファイルに紐づいている共有アクセス署名に設定。
Box
Box に格納されているSAS Data Sets リソースを識別するために以下を設定します。
- ConnectionType:Box に設定。
- URI:the name of the file system and the name of the folder which contains your SAS Data Sets files に設定。例えば、box://folder1です。
Box でホストされているSAS ファイルへの接続および認証について詳しくは、Box への接続 を参照してください。
Dropbox
Dropbox に格納されているSAS Data Sets リソースを識別するために以下を設定します。
- ConnectionType:Dropbox に設定。
- URI:the path to a folder containing SAS files に設定。例えば、dropbox://folder1 です。
Dropbox でホストされているSAS ファイルへの接続および認証について詳しくは、Dropbox への接続 を参照してください。
FTP
本製品 は、FTP サーバーへのプレーンテキスト接続およびSSL/TLS 接続の両方をサポートします。
次の接続プロパティを設定して接続します。
- ConnectionType:FTP またはFTPS のいずれかに設定。
- URI:the address of the server followed by the path to the folder to be used as the root folder に設定。例:ftp://localhost:990/folder1 またはftps://localhost:990/folder1。
- User:接続するFTP(S) サーバーのユーザー名に設定。
- Password:接続するFTP(S) サーバーのパスワードに設定。
Google Cloud Storage
Google Cloud Storage に格納されているSAS Data Sets リソースを識別するために以下を設定します。
- ConnectionType:Google Cloud Storage に設定。
- URI:the name of the file system and the name of the folder which contains your SAS Data Sets files へのパスに設定。例えば、gs://bucket/remotePath です。
Google Cloud Storage でホストされているSAS ファイルへの接続および認証について詳しくは、Google Cloud Storage への接続 を参照してください。
Google Drive
Google Drive に格納されているSAS Data Sets リソースを識別するために以下を設定します。
- ConnectionType:Google Drive に設定。
- URI:the name of the file system and the name of the folder which contains your SAS Data Sets files へのパスに設定。例えば、gdrive://folder1 です。
Google Drive でホストされているSAS ファイルへの接続および認証について詳しくは、Google Drive への接続 を参照してください。
HDFS
HDFS に格納されているSAS Data Sets リソースを識別するために以下を設定します。
- ConnectionType:HDFS またはHDFS Secure に設定。
- URI:the path to a folder containing SAS files に設定。次に例を示します。
- HDFS:webhdfs://host:port/remotePath
- HDFS Secure:webhdfss://host:port/remotePath
- Cloudera Ozone(HttpFS ゲートウェイ経由): webhdfs://<Ozone server>:<port>/user/myuser
- Ozone に保存されているSAS Data Sets ファイルにアクセスするには、Kerberos 認証を使用する必要があります。
- Ozone クラスタにOzone 718.2.x があることを確認してください。
- Cloudera Manager version 7.10.1 が必要です。
HDFS データソースへの接続に使用できる認証方法は、匿名認証とKerberos 認証の2つがあります。
匿名認証
状況によっては、認証接続プロパティなしでHDFS に接続できます。 そのためには、AuthScheme プロパティをNone(デフォルト)に設定します。
Kerberos を使用した認証
認証資格情報が必要な場合、認証にKerberos を使用することができます。 Kerberos で認証する方法についての詳細は、Kerberos の使用 を参照してください。
HTTP Streams
HTTP streams に格納されているSAS Data Sets リソースを識別するために以下を設定します。
- ConnectionType:HTTP またはHTTPS に設定。
- URI:HTTP(S) stream のURI に設定。次に例を示します。
- HTTP: http://remoteStream
- HTTPS: https://remoteStream
HTTP Streams でホストされているSAS ファイルへの接続および認証について詳しくは、HTTP Streams への接続 を参照してください。
IBM Cloud Object Storage
IBM Cloud Object Storage に格納されているSAS Data Sets リソースを識別するために以下を設定します。
- ConnectionType:IBM Object Storage Source に設定。
- URI:バケットおよびフォルダに設定。例えば、ibmobjectstorage://bucket1/remotePath です。
- Region:このプロパティをIBM インスタンスリージョンに設定。例:eu-gb.
IBM Cloud Object Storage でホストされているSAS ファイルへの接続および認証について詳しくは、IBM Object Storage への接続 を参照してください。
OneDrive
OneDrive に格納されているSAS Data Sets リソースを識別するために以下を設定します。
- ConnectionType:OneDrive に設定。
- URI:the path to a folder containing SAS files に設定。例えば、onedrive://remotePath です。
OneDrive でホストされているSAS ファイルへの接続および認証について詳しくは、OneDrive への接続 を参照してください。
OneLake
OneLake に格納されているSAS Data Sets リソースを識別するために以下を設定します。
- ConnectionType:OneLake に設定。
- URI:ワークスペース名、アイテム名、アイテムタイプの順に設定。オプションで、ルートフォルダとして使用するフォルダパスを含めます。例:onelake://Workspace/Test.LakeHouse/Files/CustomFolder。
OneLake でホストされているSAS ファイルへの接続および認証について詳しくは、OneLake への接続 を参照してください。
Oracle Cloud Storage
HMAC で認証するには、次のプロパティを設定します。
- ConnectionType:ConnectionType をOracle Cloud Storage に設定。
- URI:the bucket and folder:os://bucket/remotePath に設定。
- AccessKey: Oracle Cloud のAccess Key に設定。
- SecretKey:Oracle Cloud のSecret Key に設定。
- OracleNamespace:Oracle cloud のnamespace に設定。
- Region(オプション):S3ライクなWeb サービスのホスティングリージョンに設定。
SFTP
SFTP に格納されているSAS Data Sets リソースを識別するために以下を設定します。
- ConnectionType:SFTP に設定。
- URI:これをサーバーのアドレスに設定し、ルートフォルダとして使用するフォルダのパスを続けて指定します。例えば、sftp://server:port/remotePath です。
SFTP でホストされているSAS ファイルへの接続および認証について詳しくは、SFTP への接続 を参照してください。
SharePoint Online
SharePoint Online に格納されているSAS Data Sets リソースを識別するために以下を設定します。
- ConnectionType:SharePoint REST またはSharePoint SOAP に設定。
- URI:a document library containing SAS files に設定。次に例を示します。
- SharePoint Online REST: sprest://remotePath
- SharePoint Online SOAP: sp://remotePath
SharePoint Online でホストされているSAS ファイルへの接続および認証について詳しくは、SharePoint Online への接続 を参照してください。
セキュアなSAS Data Sets への接続
デフォルトでは、本製品 はサーバーの証明書をシステムの信頼できる証明書ストアと照合してSSL/TLS のネゴシエーションを試みます。別の証明書を指定するには、利用可能なフォーマットについてSSLServerCert プロパティを参照してください。
データの取得
Select-SASDataSets cmdlet はデータを取得するためのネイティブなPowerShell インターフェースを提供します。
$results = Select-SASDataSets -Connection $conn -Table "Account" -Columns @("Id, Name") -Where "Industry='Floppy Disks'"Invoke-SASDataSets cmdlet はSQL インターフェースを提供します。このcmdlet を使うと、Query パラメータを介してSQL クエリを実行できます。
cmdlet 出力のパイプ処理
cmdlet は行オブジェクトをパイプラインに一度に一行ずつ返します。以下は、結果をCSV ファイルにエクスポートします。
Select-SASDataSets -Connection $conn -Table Account -Where "Industry = 'Floppy Disks'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\myAccountData.csv -NoTypeInformation
Select-SASDataSets からの結果をSelect-Object cmdlet にパイプして、Export-CSV cmdlet にパイプする前にいくつかのプロパティを実行していることがわかるでしょう。これをする理由は、CData Cmdlets は接続、テーブル、およびカラムの情報を結果セットの各行オブジェクトに追加しますが、必ずしもその情報がCSV ファイルに必要ではないからです。
ただし、これによってcmdlet の出力を別のcmdlet にパイプすることが容易になります。以下に、結果セットをJSON に変換する例を示します。
PS C:\> $conn = Connect-SASDataSets -URI 'C:\myfolder' PS C:\> $row = Select-SASDataSets -Connection $conn -Table "Account" -Columns (Id, Name) -Where "Industry = 'Floppy Disks'" | select -first 1 PS C:\> $row | ConvertTo-Json { "Connection": { }, "Table": "Account", "Columns": [ ], "Id": "MyId", "Name": "MyName" }
データの削除
以下は、抽出条件に合うあらゆるレコードを削除します。
Select-SASDataSets -Connection $conn -Table Account -Where "Industry = 'Floppy Disks'" | Remove-SASDataSets
データの変更
cmdlet はデータクレンジング同様、データの変換を容易にします。次の例は、レコードがすでに存在するかどうか、挿入する前に更新が必要かどうかをチェックしてから、CSV ファイルのデータをSAS Data Sets にロードします。
Import-Csv -Path C:\MyAccountUpdates.csv | %{ $record = Select-SASDataSets -Connection $conn -Table Account -Where ("Id = `'"+$_.Id+"`'") if($record){ Update-SASDataSets -Connection $conn -Table Account -Columns @("Id","Name") -Values @($_.Id, $_.Name) -Where "Id = `'$_.Id`'" }else{ Add-SASDataSets -Connection $conn -Table Account -Columns @("Id","Name") -Values @($_.Id, $_.Name) } }