Cmdlets for JSON

Build 24.0.9062

接続の確立

CData Cmdlets ユーザーは、データモジュールをインストールし、接続プロパティを設定してスクリプトを開始できます。このセクションでは、CSV インポートおよびエクスポートcmdlet などのネイティブPowerShell cmdlet でJSON Cmdlets を使用する例を示します。

インストールおよび接続

PSGet がある場合は、PowerShell Gallery から次のコマンドを使ってcmdlet をインストールできます。CData サイトからセットアップを取得することもできます。

Install-Module JSONCmdlets

プロファイルに以下を追加すると、次のセッションでcmdlet がロードされます。

Import-Module JSONCmdlets;

Connect-JSON cmdlet を使って、別のcmdlet に渡すことができる接続オブジェクトを作成します。

$conn = Connect-JSON -DataModel 'Relational' -URI 'C:\people.json'

CData Cmdlets PowerShell Module for JSON を使用すると、ローカルおよびリモートのJSON リソースに接続できます。データソースへの接続に必要なプロパティに加えて、URI プロパティをJSON リソースの場所に設定します。

ローカルファイルへの接続

ConnectionTypeLocal に設定します。ローカルファイルは、SELECT\INSERT\UPDATE\DELETE をサポートします。

URI を1つのJSON ファイル、またはJSON ファイルを含むフォルダ:C:\folder1 に設定します。フォルダを指定すると、そのフォルダ内のすべてのJSON ファイルから1つの集計テーブルが生成されることに注意してください。

Cloud-Hosted JSON ファイルへの接続

本製品 はさまざまなクラウドストレージ上にホストされたJSON ファイルからデータを取得することができますが、INSERT、UPDATE、DELETE はローカルファイル以外ではサポートされていません

クラウド上のファイルをINSERT、UPDATE、DELETE する必要がある場合は、そのクラウドサービスに対応するCData 本製品 をダウンロードし(ストアドプロシージャでサポートされています)、ローカルファイルの対応する本製品 に変更を加え、そのクラウドソース用のストアドプロシージャを使ってファイルをアップロードできます。

例えば、SharePoint 上に格納されたファイルをアップデートしたい場合、CData SharePoint 本製品 のDownloadDocument プロシージャを使用してJSON ファイルをダウンロードし、CData JSON 本製品 でローカルのJSON ファイルをアップデートして、最後にSharePoint 本製品 のUploadDocument プロシージャを使って変更されたファイルをSharePoint にアップロードできます。

URI 接続プロパティの先頭にある一意の接頭辞は、本製品 が対象とするクラウドデータストアを識別するために使用され、残りのパスは目的のフォルダ(1ファイルにつき1テーブル)または単一ファイル(単一テーブル)への相対パスとなります。

Amazon S3

Amazon S3 に格納されているJSON リソースを識別するために以下を設定します。

  • ConnectionTypeConnectionTypeAmazon S3 に設定。
  • URI:バケット内のJSON ドキュメント:s3://bucket1/folder1 に設定。
    • Volume およびBucket を作成し、そのバケット:s3://linktobucket/symbolic link を作成した後、Cloudera Ozone に保存されているJSON リソースに接続することもできます。

Amazon S3 でホストされているJSON ファイルへの接続および認証について詳しくは、Amazon S3 への接続 を参照してください。

Azure Blob Storage

Azure Blob Storage に格納されているJSON リソースを識別するために以下を設定します。

  • ConnectionTypeAzure Blob Storage に設定。
  • URI:コンテナの名前およびBlob の名前に設定。例えば、azureblob://mycontainer/myblob です。

Amazon Blob Storage でホストされているJSON ファイルへの接続および認証について詳しくは、Azure Blob Storage への接続 を参照してください。

Azure Data Lake Storage

Azure Data Lake Storage に格納されているJSON リソースを識別するために以下を設定します。

  • ConnectionTypeAzure Data Lake Storage Gen1Azure Data Lake Storage Gen2、またはAzure Data Lake Storage Gen2 SSL に設定。
  • URI:ファイルシステムの名前、JSON ファイルにコンタクトするフォルダの名前、およびJSON ファイルの名前 に設定。次に例を示します。
    • Gen 1:adl://myfilesystem/folder1
    • Gen 2:abfs://myfilesystem/folder1
    • Gen 2 SSL:abfss://myfilesystem/folder1

Azure Data Lake Storage でホストされているJSON ファイルへの接続および認証について詳しくは、Azure Data Lake Storage への接続 を参照してください。

Azure File Storage

接続するには次のプロパティを設定します。

  • ConnectionTypeAzure Files に設定。
  • URI:Azure ファイル共有の名前とリソースの名前に設定。例:azurefile://fileShare/remotePath
  • AzureStorageAccount(必須):Azure ファイルに紐づいているアカウントに設定。

Azure アクセスキーまたはAzure 共有アクセス署名のいずれかで認証できます。次のいずれか1つを設定してください。

  • AzureAccessKey:Azure ファイルに紐づいているアクセスキーに設定。
  • AzureSharedAccessSignature:Azure ファイルに紐づいている共有アクセス署名に設定。

Box

Box に格納されているJSON リソースを識別するために以下を設定します。

  • ConnectionTypeBox に設定。
  • URI:ファイルシステムの名前、JSON ファイルにコンタクトするフォルダの名前、およびJSON ファイルの名前 に設定。例えば、box://folder1です。

Box でホストされているJSON ファイルへの接続および認証について詳しくは、Box への接続 を参照してください。

Dropbox

Dropbox に格納されているJSON リソースを識別するために以下を設定します。

  • ConnectionTypeDropbox に設定。
  • URI:JSON ファイルへのパス に設定。例えば、dropbox://folder1 です。

Dropbox でホストされているJSON ファイルへの接続および認証について詳しくは、Dropbox への接続 を参照してください。

FTP

本製品 は、FTP サーバーへのプレーンテキスト接続およびSSL/TLS 接続の両方をサポートします。

次の接続プロパティを設定して接続します。

  • ConnectionTypeFTP またはFTPS のいずれかに設定。
  • URI:JSON ファイルへのパスが付いたサーバーのアドレス に設定。例:ftp://localhost:990/folder1 またはftps://localhost:990/folder1
  • User:接続するFTP(S) サーバーのユーザー名に設定。
  • Password:接続するFTP(S) サーバーのパスワードに設定。

Google Cloud Storage

Google Cloud Storage に格納されているJSON リソースを識別するために以下を設定します。

  • ConnectionTypeGoogle Cloud Storage に設定。
  • URI:ファイルシステムの名前、JSON ファイルにコンタクトするフォルダの名前、およびJSON ファイルの名前 へのパスに設定。例えば、gs://bucket/remotePath です。

Google Cloud Storage でホストされているJSON ファイルへの接続および認証について詳しくは、Google Cloud Storage への接続 を参照してください。

Google Drive

Google Drive に格納されているJSON リソースを識別するために以下を設定します。

  • ConnectionTypeGoogle Drive に設定。
  • URI:ファイルシステムの名前、JSON ファイルにコンタクトするフォルダの名前、およびJSON ファイルの名前 へのパスに設定。例えば、gdrive://folder1 です。

Google Drive でホストされているJSON ファイルへの接続および認証について詳しくは、Google Drive への接続 を参照してください。

HDFS

HDFS に格納されているJSON リソースを識別するために以下を設定します。

  • ConnectionTypeHDFS またはHDFS Secure に設定。
  • URI:JSON ファイルへのパス に設定。次に例を示します。
    • HDFS:webhdfs://host:port/remotePath
    • HDFS Secure:webhdfss://host:port/remotePath
    • Cloudera Ozone(HttpFS ゲートウェイ経由): webhdfs://<Ozone server>:<port>/user/myuser
      • Ozone に保存されているJSON ファイルにアクセスするには、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 に格納されているJSON リソースを識別するために以下を設定します。

  • ConnectionTypeHTTP またはHTTPS に設定。
  • URI:HTTP(S) stream のURI に設定。次に例を示します。
    • HTTP: http://remoteStream
    • HTTPS: https://remoteStream

HTTP Streams でホストされているJSON ファイルへの接続および認証について詳しくは、HTTP Streams への接続 を参照してください。

IBM Cloud Object Storage

IBM Cloud Object Storage に格納されているJSON リソースを識別するために以下を設定します。

  • ConnectionTypeIBM Object Storage Source に設定。
  • URI:バケットおよびフォルダに設定。例えば、ibmobjectstorage://bucket1/remotePath です。
  • Region:このプロパティをIBM インスタンスリージョンに設定。例:eu-gb.

IBM Cloud Object Storage でホストされているJSON ファイルへの接続および認証について詳しくは、IBM Object Storage への接続 を参照してください。

OneDrive

OneDrive に格納されているJSON リソースを識別するために以下を設定します。

  • ConnectionTypeOneDrive に設定。
  • URI:JSON ファイルへのパス に設定。例えば、onedrive://remotePath です。

OneDrive でホストされているJSON ファイルへの接続および認証について詳しくは、OneDrive への接続 を参照してください。

OneLake

OneLake に格納されているJSON リソースを識別するために以下を設定します。

  • ConnectionTypeOneLake に設定。
  • URI:ワークスペース名、アイテム名、アイテムタイプの順に設定。オプションで、ルートフォルダとして使用するフォルダパスを含めます。例:onelake://Workspace/Test.LakeHouse/Files/CustomFolder

OneLake でホストされているJSON ファイルへの接続および認証について詳しくは、OneLake への接続 を参照してください。

Oracle Cloud Storage

HMAC で認証するには、次のプロパティを設定します。

  • ConnectionTypeConnectionTypeOracle Cloud Storage に設定。
  • URI:バケット内のJSON ドキュメント:os://bucket/remotePath に設定。
  • AccessKey: Oracle Cloud のAccess Key に設定。
  • SecretKey:Oracle Cloud のSecret Key に設定。
  • OracleNamespace:Oracle cloud のnamespace に設定。
  • Region(オプション):S3ライクなWeb サービスのホスティングリージョンに設定。

SFTP

SFTP に格納されているJSON リソースを識別するために以下を設定します。

  • ConnectionTypeSFTP に設定。
  • URI:これをサーバーのアドレスに設定し、ルートフォルダとして使用するフォルダのパスを続けて指定します。例えば、sftp://server:port/remotePath です。

SFTP でホストされているJSON ファイルへの接続および認証について詳しくは、SFTP への接続 を参照してください。

SharePoint Online

SharePoint Online に格納されているJSON リソースを識別するために以下を設定します。

  • ConnectionTypeSharePoint REST またはSharePoint SOAP に設定。
  • URI:JSON ファイルを含むドキュメントライブラリ に設定。次に例を示します。
    • SharePoint Online REST: sprest://remotePath
    • SharePoint Online SOAP: sp://remotePath

SharePoint Online でホストされているJSON ファイルへの接続および認証について詳しくは、SharePoint Online への接続 を参照してください。

セキュアなJSON への接続

デフォルトでは、本製品 はサーバーの証明書をシステムの信頼できる証明書ストアと照合してSSL/TLS のネゴシエーションを試みます。別の証明書を指定するには、利用可能なフォーマットについてSSLServerCert プロパティを参照してください。

データの取得

Select-JSON cmdlet はデータを取得するためのネイティブなPowerShell インターフェースを提供します。

$results = Select-JSON -Connection $conn -Table "NorthwindOData" -Columns @("personal.name.first, personal.name.last") -Where "personal.name.last='[email protected]'"
Invoke-JSON cmdlet はSQL インターフェースを提供します。このcmdlet を使うと、Query パラメータを介してSQL クエリを実行できます。

cmdlet 出力のパイプ処理

cmdlet は行オブジェクトをパイプラインに一度に一行ずつ返します。以下は、結果をCSV ファイルにエクスポートします。

Select-JSON -Connection $conn -Table NorthwindOData -Where "personal.name.last = '[email protected]'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\myNorthwindODataData.csv -NoTypeInformation

Select-JSON からの結果をSelect-Object cmdlet にパイプして、Export-CSV cmdlet にパイプする前にいくつかのプロパティを実行していることがわかるでしょう。これをする理由は、CData Cmdlets は接続、テーブル、およびカラムの情報を結果セットの各行オブジェクトに追加しますが、必ずしもその情報がCSV ファイルに必要ではないからです。

ただし、これによってcmdlet の出力を別のcmdlet にパイプすることが容易になります。以下に、結果セットをJSON に変換する例を示します。

 
PS C:\> $conn  = Connect-JSON -DataModel 'Relational' -URI 'C:\people.json'
PS C:\> $row = Select-JSON -Connection $conn -Table "NorthwindOData" -Columns (personal.name.first, personal.name.last) -Where "personal.name.last = '[email protected]'" | select -first 1
PS C:\> $row | ConvertTo-Json
{
  "Connection":  {

  },
  "Table":  "NorthwindOData",
  "Columns":  [

  ],
  "personal.name.first":  "Mypersonal.name.first",
  "personal.name.last":  "Mypersonal.name.last"
} 

データの削除

以下は、抽出条件に合うあらゆるレコードを削除します。

Select-JSON -Connection $conn -Table NorthwindOData -Where "personal.name.last = '[email protected]'" | Remove-JSON

データの変更

cmdlet はデータクレンジング同様、データの変換を容易にします。次の例は、レコードがすでに存在するかどうか、挿入する前に更新が必要かどうかをチェックしてから、CSV ファイルのデータをJSON にロードします。

Import-Csv -Path C:\MyNorthwindODataUpdates.csv | %{
  $record = Select-JSON -Connection $conn -Table NorthwindOData -Where ("Id = `'"+$_.Id+"`'")
  if($record){
    Update-JSON -Connection $conn -Table NorthwindOData -Columns @("personal.name.first","personal.name.last") -Values @($_.personal.name.first, $_.personal.name.last) -Where "Id  = `'$_.Id`'"
  }else{
    Add-JSON -Connection $conn -Table NorthwindOData -Columns @("personal.name.first","personal.name.last") -Values @($_.personal.name.first, $_.personal.name.last)
  }
}

Copyright (c) 2024 CData Software, Inc. - All rights reserved.
Build 24.0.9062