この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

App Analytics クエリ戦略はどのように計画すべきですか?

クエリ戦略の詳細は、ビジネスの規模と範囲、および照会するデータ型によって変化します。
使用可能なインターフェース: Salesforce Classic と Lightning Experience の両方
使用可能なエディション: Enterprise Edition、Performance Edition、Unlimited Edition、および Developer Edition

すべてのパートナーは、次のクエリ戦略を利用できます。
  • データ結果の FileType 値を選択し、対応する FileCompression を選択します。これにより、csv ファイルの場合は gzip の圧縮、parquet ファイルの場合は snappy の列圧縮を要求できます。
  • 定期的にスケジュールされる自動化クエリを作成します。
  • 遅れて到着するデータをまとめて取り込むには、AvailableSince 項目を使用してキャッチアップクエリを作成します。

結果ファイルの圧縮

App Analytics クエリ計画は、結果ファイルの種別とファイル圧縮が出発点となります。データは時間とスペースを大量に消費する場合があるため、ダウンロードするファイルの種別を指定して効率化を図ります。データのダウンロード時間を削減するには、結果ファイルの圧縮方法を指定します。

ファイルの種別もファイルの圧縮も指定しない場合、結果ファイルは、下位互換性を確保するため、圧縮なしの csv にデフォルト設定されます。ファイルの種別として parquet を選択した場合、結果ファイルには、各列のデータ型の情報が含まれます。

結果ファイルは常に圧縮することをお勧めします。これらの SOAP API AppAnalyticsQueryRequest FileTypeFileCompression 値の組み合わせから選択します。

FileType FileCompression
csv (デフォルト)
  • none (FileTypecsv の場合のデフォルト)
  • gzip
parquet
  • snappy (FileTypeparquet の場合のデフォルト)
  • gzip
  • none

App Analytics クエリの結果データをダウンロードする場合、HTTP 応答には、1 つまたは 2 つの重要なヘッダーが含まれています。Content-Type ヘッダーは、ファイルの種別 (txt/csv または application/parquet) を示します。クエリの FileType が csv、FileCompression が gzip の場合、Content-Encoding ヘッダーは、gzip エンコードを示します。多くの場合、最��のブラウザでは、gzip で符号化されたファイルは自動的に復号化され、非圧縮の .csv ファイルが保存されます。ファイルが自動的に復号化されたかどうかにかかわらず、そのファイル名の拡張子は、.csv となります。

メモ

クエリのスケジュールおよび自動化

実行するクエリとクエリの実行頻度を決定したら、クエリのスケジュールを設定する必要があります。最も簡単な方法は自動化です。

自動化とは何を意味するのでしょうか。自動化とは、スケジュールに基づいてクエリ要求レコードを作成する、作成したレコードを監視する、データを取得する、AppExchange の App Analytics データを特定の場所に保存するといった作業を、コードを記述して行うことです。たとえば、カスタムオブジェクトのデータをライセンス管理組織に保存することができます。

自動化オプションには、次のようなものがありますが、これに限定されません。
  • REST または SOAP API コールを使用したカスタム API インテグレーション
  • CLI を使用した Salesforce DX の自動化
  • Salesforce フロー
  • Apex のトリガ

たとえば、Apex トリガを使用して、パッケージ利用状況概要を自動的に取得します。

パッケージ利用状況ログデータも自動的に取得したい場合は、ログに含まれるデータボリュームに応じて拡大・縮小する別のストレージソリューションを検討します。

キャッチアップクエリの作成

キャッチアップクエリは、データレイクに新たに追加されるデータを取り込むためのほうきのようなものです。キャッチアップクエリは、すでに使用可能な通常のクエリを利用します。

たとえば、2021 年 3 月 2 日 18:00 UTC に、次に示す通常のクエリを実行して、2021 年 3 月 1 日のパッケージ利用状況ログデータを取得します。

1sfdx force:data:record:create
2--sobjecttype AppAnalyticsQueryRequest
3--values "StartTime=2021-03-01T00:00:00Z
4EndTime=2021-03-02T00:00:00Z
5DataType=PackageUsageLog
6FileType=csv
7FileCompression=gzip"

まったく同じクエリを 2021 年 3 月 3 日 18:00 UTC に再実行します。ただし、AvailableSince 項目を追加して、元のクエリを実行した日時である 2021-03-02T18:00:00Z に設定します。このクエリがアドホックキャッチアップクエリです。3 月 2 日に通常のクエリが実行されて以降データレイクに新しく追加されたデータを取得します。

1sfdx force:data:record:create
2--sobjecttype AppAnalyticsQueryRequest
3--values "StartTime=2021-03-01T00:00:00Z
4EndTime=2021-03-02T00:00:00Z
5DataType=PackageUsageLog
6FileType=csv 
7FileCompression=gzip
8AvailableSince=2021-03-02T18:00:00Z"

キャッチアップクエリはさまざまな方法で使用できますが、詳細は、「おすすめ」セクションで説明します。

キャッチアップクエリを作成するときは、次の考慮事項を念頭に置いてください。
  • StartTime が指定されている場合、AvailableSince の日付は、それより後に設定する必要があります。
  • EndTime が指定されている場合、AvailableSince の日付は、それより後に設定する必要があります。
  • すべてのクエリには、StartTimeAvailableSince のいずれか、または両方を含める必要があります。
  • AvailableSince は、現在より前に設定する必要があります。

アドホックキャッチアップクエリを作成しようとしたが、元のクエリをいつ実行したかを忘れた場合は、Salesforce CLI と元のクエリの sObjectID を使用して QuerySubmittedTime を検索します。たとえば、sfdx force:data:record:get --sobjecttype AppAnalyticsQueryRequest --sobjectid 0XIXXXXXXXXXXXXXXX のように入力します。アドホックキャッチアップクエリの AvailableSince 値は、QuerySubmittedTime に等しくなるように設定します。

メモ