クエリサービスとデータDistillerに関するよくある質問
このドキュメントでは、クエリサービスとデータDistillerに関するよくある質問に回答します。 また、データの検証や変換されたデータのデータレイクへの書き戻しに「クエリ」製品を使用する際に表示される一般的なエラーコードも含まれます。 その他のAdobe Experience Platform サービスに関する質問やトラブルシューティングについては、Experience Platformトラブルシューティングガイドを参照してください。
クエリサービスとデータDistillerがAdobe Experience Platform内でどのように連携するかを明確にするために、2 つの基本的な質問を以下に示します。
クエリサービスとデータDistillerの関係は何ですか?
クエリサービスとデータDistillerは、具体的なデータクエリ機能を提供する、独特の補完的なコンポーネントです。 クエリサービスは、アドホッククエリ用に設計されており、データレイクを変更せずに、取り込まれたデータを調査、検証および実験します。 これに対し、Data Distillerは、データを変換して強化するバッチクエリに重点を置いており、結果は後で使用するためにデータレイクに保存されます。 Data Distillerのバッチクエリは、スケジュール、監視、管理できるので、クエリサービスだけでは促進されない、より深いデータ処理と操作をサポートします。
クエリサービスを連携すると、迅速なインサイトが促進され、一方、Data Distillerでは詳細な永続的なデータ変換が可能になります。
クエリサービスとデータDistillerの違いは何ですか?
クエリサービス:データの調査、検証および実験に焦点を当てた SQL クエリに使用します。 出力はデータレイクに保存されず、実行時間は 10 分に制限されます。 アドホッククエリは、軽量でインタラクティブなデータのチェックと分析に適しています。
データDistiller:データを処理、クリーンアップ、エンリッチメントするバッチクエリを有効にし、結果をデータレイクに保存し直します。 これらのクエリは、より長い実行(最大 24 時間)、スケジュール、監視、高速レポートなどの追加機能をサポートします。 Data Distillerは、詳細なデータ操作やスケジュールされたデータ処理タスクに最適です。
詳しくは、 クエリサービスのパッケージ化ドキュメントを参照してください。
質問カテゴリ categories
よくある質問に対する次の回答のリストは、次のカテゴリに分類されています。
クエリサービスに関する一般的な質問 general
この節には、パフォーマンス、制限、プロセスに関する情報が含まれます。
クエリサービスエディターでオートコンプリート機能をオフにできますか?
クエリを入力すると、クエリエディターの速度が遅くなることがあるのはなぜですか?
Query Service API に Postman を使用できますか?
UI を使用してクエリから返される行の最大数に制限はありますか?
クエリを使用して行を更新できますか?
クエリの結果の出力にデータサイズの制限はありますか?
SELECT クエリからの出力行数の制限を回避するにはどうすればよいですか?
出力行数の制限を回避するには、クエリで「LIMIT 0」を適用します。以下に例を示します。
code language-sql |
---|
|
クエリが 10 分でタイムアウトしないようにするにはどうすればよいですか?
クエリがタイムアウトした場合に備えて、次の解決策の 1 つ以上をお勧めします。
- クエリを CTAS クエリに変換し、実行をスケジュールします。実行のスケジュールは、UI または API を使用して設定できます。
- 追加のフィルター条件を適用して、より小さいデータチャンクに対してクエリを実行します。
- EXPLAIN コマンドを実行して、詳細を収集します。
- データセット内のデータの統計を確認します。
- クエリを簡略化された形式に変換し、準備済み文を使用して再実行します。
複数のクエリを同時に実行した場合、クエリサービスのパフォーマンスに問題や影響はありますか?
予約済みのキーワードを列名として使用できますか?
ORDER
、GROUP BY
、WHERE
、DISTINCT
など、列名として使用できない特定の予約済みキーワードがあります。これらのキーワードを使用する場合は、これらの列をエスケープする必要があります。階層データセットから列名を見つけるにはどうすればよいですか?
次の手順では、UI を使用してデータセットの表形式表示を表示する方法について説明します。これには、ネストされたすべてのフィールドと列がフラット化された形式で表示されます。
- Experience Platform にログインした後、UI の左側のナビゲーションで「データセット」を選択して、データセットダッシュボードに移動します。
- データセットの「参照」タブが開きます。検索バーを使用して、使用可能なオプションを絞り込むことができます。表示されたリストからデータセットを選択します。
- データセットアクティビティ画面が表示されます。「データセットをプレビュー」を選択して、XDM スキーマのダイアログと、選択したデータセットからフラット化されたデータの表形式表示を開きます。詳しくは、データセットのプレビューに関するドキュメントを参照してください
- スキーマから任意のフィールドを選択して、フラット化された列にその内容を表示します。列の名前は、ページの右側の内容の上に表示されます。この名前をコピーして、このデータセットのクエリに使用する必要があります。
クエリエディターまたはサードパーティのクライアントを使用して、ネストされたデータ構造を操作する方法の完全なガイダンスについては、ドキュメントを参照してください。
配列を含むデータセットに対するクエリを高速化するにはどうすればよいですか?
CTAS クエリが、少数の行に対して何時間も処理されたままになっているのはなぜですか?
非常に小さなデータセットでクエリに時間がかかる場合は、カスタマーサポートにお問い合わせください。
処理中にクエリが停止する理由はいくつか考えられます。正確な原因を特定するには、ケースバイケースで詳細な分析が必要です。この処理を行うには、アドビのカスタマーサポートにお問い合わせください。
アドビのカスタマーサポートに問い合わせるにはどうすればよいですか? customer-support
アドビのカスタマーサポートの電話番号の完全なリストは、アドビのヘルプページで入手できます。または、次の手順を実行してオンラインでヘルプを見つけることもできます。
- Web ブラウザーで https://www.adobe.com/ に移動します。
- 上部のナビゲーションバーの右側にある「ログイン」を選択します。
- Adobe ライセンスに登録されている Adobe ID とパスワードを使用します。
- 上部のナビゲーションバーから「ヘルプとサポート」を選択します。
「ヘルプとサポート」セクションを含むドロップダウンバナーが表示されます。「お問い合わせ」を選択してアドビカスタマーケアバーチャルアシスタントを開くか、 エンタープライズサポート を選択して大規模組織向けの専用ヘルプを入手してください。
前のジョブが正常に完了しない場合に後続のジョブを実行せずに、一連のジョブを順次実装するにはどうすればよいですか?
匿名ブロック機能を使用すると、順に実行される 1 つ以上の SQL 文を連結できます。また、例外処理のオプションも使用できます。
詳しくは、匿名ブロックのドキュメントを参照してください。
クエリサービスでカスタム属性を実装するにはどうすればよいですか?
カスタム属性を実装する方法は 2 つあります。
- 既存の Adobe 定義関数の組み合わせを使用して、使用例のニーズが満たされているかどうかを特定します。
- 前の提案が使用例を満たさない場合は、ウィンドウ関数を組み合わせて使用する必要があります。ウィンドウ関数は、シーケンス内のすべてのイベントを調べます。また、履歴データを確認でき、任意の組み合わせで使用することもできます。
簡単に再利用できるようにクエリをテンプレート化できますか?
クエリのエラーログを取得するにはどうすればよいですか? error-logs
特定のクエリのエラーログを取得するには、最初にクエリサービス API を使用してクエリログの詳細を取得する必要があります。HTTP 応答には、クエリエラーの調査に必要なクエリ ID が含まれています。
複数のクエリを取得するには、GET コマンドを使用します。API を呼び出す方法については、サンプル API 呼び出しのドキュメントを参照してください。
応答から、調査するクエリを特定し、その id
値を使用して別の GET リクエストを行います。詳細な手順については、ID によるクエリの取得に関するドキュメントを参照してください。
リクエストが成功した場合は、HTTP ステータス 200 が返され、応答に errors
配列が含まれています。ここでは、簡潔にするために、応答は短縮されています。
code language-json |
---|
|
クエリサービス API リファレンスドキュメントでは、使用可能なすべてのエンドポイントについて詳しく説明しています。
「スキーマの検証エラー」とはどういう意味ですか?
「スキーマの検証エラー」メッセージは、システムがスキーマ内のフィールドを見つけることができないことを意味します。クエリサービスでのデータアセットの整理のベストプラクティスドキュメントを参照した後、Create Table As Select クエリのドキュメントを参照してください。
次の例は、CTAS 構文と struct データ型の使用方法を示しています。
code language-sql |
---|
|
システムに毎日入力される新しいデータを迅速に処理するにはどうすればよいですか?
プロファイル UI に表示される数値とプロファイル書き出しデータセットから計算される数値に違いがあるのはなぜですか?
プロファイルダッシュボードに表示される数値は、最後のスナップショットの時点で正確です。プロファイル書き出しテーブルで生成される数値は、書き出しクエリに完全に依存します。その結果、特定のオーディエンスに適格なプロファイルの数をクエリしていることが、この不一致の一般的な原因となっています。
note note |
---|
NOTE |
クエリには履歴データが含まれるのに対して、UI には現在のプロファイルデータのみが表示されます。 |
クエリで空のサブセットが返されたのはなぜですか? どうすればよいですか?
最も可能性の高い原因は、クエリの範囲が狭すぎることです。データが表示されるようになるまで、WHERE
句のセクションを系統的に削除してください。
次のような小さなクエリを使用して、データセットにデータが含まれていることを確認することもできます。
code language-sql |
---|
|
データをサンプリングできますか?
クエリサービスでサポートされているヘルパー関数は何ですか?
ネイティブの Spark SQL 関数はすべてサポートされていますか? それとも、アドビが提供するラッパー Spark SQL 関数のみに制限されていますか?
ユーザーは、他のクエリで使用できる独自のユーザー定義関数(UDF)を定義できますか?
スケジュール済みクエリが失敗した場合はどうすればよいですか?
まず、ログを調べてエラーの詳細を確認します。 ログ内のエラーの検索に関する FAQ の節では、これを行う方法について詳しく説明しています。
また、UI でのスケジュール済みクエリの実行と API を使用したスケジュール済みクエリの実行の方法については、ドキュメントを参照してください。
Query Editor を使用する場合、既に作成および保存されたクエリにのみスケジュールを追加できます。 これは、Query Service API には適用されません。
「セッション制限に達しました」エラーはどういう意味ですか?
クエリログでは、削除されたデータセットに関連するクエリをどのように処理しますか?
クエリのメタデータのみを取得するにはどうすればよいですか?
ゼロ行を返すクエリを実行して、応答のメタデータのみを取得できます。 この例のクエリは、指定したテーブルのメタデータのみを返します。
code language-sql |
---|
|
CTAS(Create Table As Select)クエリをマテリアライズせずに、すばやく繰り返し実行する方法を教えてください。
一時テーブルを作成して、クエリを素早く繰り返し実験してから、使用するクエリをマテリアライズできます。 また、一時テーブルを使用して、クエリが機能しているかどうかを検証することもできます。
例えば、新しいテーブルを作成できます。
code language-sql |
---|
|
次に、一時テーブルを次のように使用できます。
code language-sql |
---|
|
タイムゾーンを UTC タイムスタンプに変更したり、UTC タイムスタンプから変更したりする方法を教えてください。
Adobe Experience Platform はデータを UTC(協定世界時)タイムスタンプ形式で保持します。 UTC 形式の例は 2021-12-22T19:52:05Z
です
クエリサービスは、指定されたタイムスタンプを UTC 形式に変換したり、UTC 形式から変換したりするための組み込みの SQL 関数に対応しています。 to_utc_timestamp()
メソッドと from_utc_timestamp()
メソッドのどちらとも 2 つのパラメーター(タイムスタンプとタイムゾーン)を指定します。
table 0-row-2 1-row-2 2-row-2 | |
---|---|
パラメーター | 説明 |
タイムスタンプ | タイムスタンプは、UTC 形式または単純な {year-month-day} 形式で記述できます。時間を指定しない場合、指定した日の午前 0 時がデフォルト値になります。 |
タイムゾーン | タイムゾーンは {continent/city}) 形式で記述されます。パブリックドメイン TZ データベースにある、認識されているタイムゾーンコードのいずれかである必要があります。 |
UTC タイムスタンプに変換
この to_utc_timestamp()
メソッドは指定されたパラメーターを解釈し、UTC 形式の ローカルタイムゾーンのタイムスタンプに 変換します。 例えば、韓国のソウルのタイムゾーンは、UTC/GMT +9 時間です。 日付のみのタイムスタンプを指定すると、メソッドではデフォルト値の午前 0 時が使用されます。 タイムスタンプとタイムゾーンは、UTC 形式(その地域の時刻からローカル地域の UTC タイムスタンプ)に変換されます。
code language-sql |
---|
|
クエリは、ユーザーのローカル時間のタイムスタンプを返します。 この場合、ソウルは 9 時間先なので、前日の午後 3 時になります。
code language-none |
---|
|
別の例として、指定されたタイムスタンプが Asia/Seoul
タイムゾーンの 2021-07-14 12:40:00.0
である場合、返される UTC タイムスタンプは 2021-07-14 03:40:00.0
になります
クエリサービス UI で提供されるコンソール出力は、人間が読みやすい形式になっています。
code language-none |
---|
|
UTC タイムスタンプからの変換
この from_utc_timestamp()
メソッドは、指定されたパラメーターを ローカルタイムゾーンのタイムスタンプから 解釈し、目的の地域の同等のタイムスタンプを UTC 形式で提供します。 次の例では、時間はユーザーのローカルタイムゾーンの午後 2 時 40 分になります。 変数として渡されるソウルのタイムゾーンは、ローカルタイムゾーンの 9 時間前です。
code language-sql |
---|
|
クエリは、パラメーターとして渡されたタイムゾーンのタイムスタンプを UTC 形式で返します。 結果は、クエリを実行したタイムゾーンより 9 時間早くなります。
code language-none |
---|
|
時系列データをフィルタリングするにはどうすればよいですか?
accordion | |||||
---|---|---|---|---|---|
回答 | |||||
時系列データに対するクエリを実行する場合は、可能な限りタイムスタンプフィルターを使用して、より正確な分析を行う必要があります。
タイムスタンプフィルターの使用例を以下に示します。
|
CAST
演算子を正しく使用して SQL クエリのタイムスタンプを変換する方法を教えてください。
CAST
演算子を使用してタイムスタンプを変換する場合は、日付 および 時間の両方を含める必要があります。
例えば、以下に示すように、時間コンポーネントが見つからない場合、次のエラーが発生します。
code language-sql |
---|
|
CAST
演算子の正しい使用法を以下に示します。
code language-sql |
---|
|
ワイルドカード(* など)を使用してデータセットからすべての行を取得する必要がありますか?
SQL クエリで NOT IN
を使用する必要がありますか?
NOT IN
演算子は、他のテーブルや SQL 文に見つからない行を取得する場合によく使用されます。この演算子を使用するとパフォーマンスが低下する可能性があるほか、比較対象の列に NOT NULL
が指定されていたり、大量のレコードが存在したりする場合、予期せぬ結果が返されることがあります。
NOT IN
を使用する代わりに、NOT EXISTS
または LEFT OUTER JOIN
の使用を推奨します。
例えば、次のテーブルを作成したとします。
code language-sql |
---|
|
NOT EXISTS
演算子を使用して次のクエリを実行すれば、NOT IN
演算子を使用せずに同じ機能を実行できます。
code language-sql |
---|
|
あるいは、LEFT OUTER JOIN
演算子を使用して次のクエリを実行しても、NOT IN
演算子を使用せずに同じ機能を実行できます。
code language-sql |
---|
|
UI に表示されているような、アンダースコアが名前に 2 つ入ったデータセットを CTAS クエリを使用して作成できますか?例:test_table_001
。
クエリは同時にいくつまで実行できますか?
クエリのアクティビティとステータスを確認できるアクティビティダッシュボードはありますか?
更新をロールバックする方法はありますか?例えば、データを Platform に書き戻す際、エラーが発生したり一部の計算を再設定しなければならなかったりする場合、そうしたシナリオはどのように処理する必要がありますか?
Adobe Experience Platform でクエリを最適化するにはどうすればよいですか?
システムはデータベースではないのでインデックスを持っていませんが、データストアに関連付けられた他の最適化方法が用意されています。次のオプションを使用して、クエリを調整できます。
- timeseries データの時系列でのフィルタリング。
- 構造体データタイプのプッシュダウンの最適化。
- 配列とマップのデータタイプのコスト面およびメモリ面におけるプッシュダウンの最適化。
- スナップショットを使用した増分処理。
- 一貫性のあるデータ形式。
ログイン権限をクエリサービスの特定の機能に制限できますか。それとも、このソリューションの権限は、「すべて許可かすべて禁止」の二択ですか。
クエリサービスで使用するデータを制限できますか。それとも、Adobe Experience Platform データレイク全体に単純にアクセスするだけですか。
クエリサービスがアクセスできるデータを制限するための他のオプションはありますか?
アクセスを制限する方法は 3 つあります。次の 3 つです。
- SELECT ステートメントのみを使用し、データセットに読み取り専用アクセス権限を付与します。また、クエリ管理権限も割り当てます。
- SELECT/INSERT/CREATE ステートメントを使用して、データセットに書き込みアクセス権限を付与します。また、クエリ管理権限を割り当てます。
- 上に提示した方法で統合アカウントを使用するとともに、クエリ統合権限を割り当てます。
クエリサービスがデータを返した後、保護されたデータが返されていないことを確認するために、Platform が実行できるチェックはありますか?
- クエリサービスは、属性ベースのアクセス制御をサポートしています。データへのアクセスは、列/リーフレベルや構造体レベルで制限できます。属性ベースのアクセス制御について詳しくは、該当するドキュメントを参照してください。
サードパーティのクライアントへの接続に SSL モードを指定できますか?例えば、Power BI で「verify-full」を指定して使用できますか?
Power BI クライアントからクエリサービスへのすべての接続に対して TLS 1.2 が適用されていますか?
ポート 80 で確立された接続では、引き続き https を使用しますか?
特定の接続での特定のデータセットや列へのアクセスを制御することはできますか? この設定方法を教えてください。
クエリサービスは「INSERT OVERWRITE INTO」コマンドをサポートしていますか?
ライセンス使用状況ダッシュボードに表示されている使用状況データが、Data Distiller Compute Hours 用に更新される頻度はどれくらいですか?
データDistillerへのアクセス権を持たずに CREATE VIEW コマンドを使用できますか?
CREATE VIEW
持たずにコマンドを使用できます。 このコマンドは、データの論理ビューを提供しますが、データレイクには書き戻しません。DbVisualizer で匿名ブロックを使用できますか?
Data Distiller data-distiller
Data Distillerのライセンス使用状況はどのように追跡されますか。また、どこで確認できますか。
計算時間とは何ですか?
計算時間の測定方法
同じクエリを連続して実行しても、計算時間の消費量にバリエーションが生じるのはなぜですか?
同じデータを使用して同じクエリを長期間実行すると、計算時間が短縮されるのが通常ですか? なぜこのようなことが起こっているのでしょうか?
クエリ UI
クエリサービスに接続しようとすると、「クエリを作成」が停止し、「接続を初期化中…」と表示される。 問題を修正するにはどうすればよいですか?
データセットのサンプル
システムデータセットにサンプルを作成できますか?
データの書き出し exporting-data
この節では、データの書き出しと制限について説明します。
クエリの処理後にクエリサービスからデータを抽出し、結果を CSV ファイルに保存する方法はありますか? export-csv
はい。 クエリサービスからデータを抽出でき、SQL コマンドを使用して結果を CSV 形式で保存するオプションもあります。
PSQL クライアントを使用する場合、クエリの結果を保存する方法は 2 つあります。 COPY TO
コマンドを使用するか、次の形式を使用してステートメントを作成できます。
code language-sql |
---|
|
COPY TO
コマンドの使用に関するガイダンスは、SQL 構文リファレンスドキュメントに記載されています。
CTAS クエリ(テラバイトなどの大量のデータが含まれると仮定して)で取り込まれた最終的なデータセットの内容を抽出することはできますか?
Analytics データコネクタがデータを返さない理由
この問題の一般的な原因は、時間フィルターを使用せずに時系列データをクエリすることです。 以下に例を示します。
code language-sql |
---|
|
次のように記述する必要があります。
code language-sql |
---|
|
SQL 構文
MERGE INTO は Data Distillerまたはクエリサービスでサポートされていますか?
ITAS クエリ
ITAS クエリとは
サードパーティツール third-party-tools
この節では、サードパーティのツール(PSQL や Power BI など)の使用に関する情報を示します。
クエリサービスをサードパーティのツールに接続できますか?
クエリサービスを 1 回接続して、サードパーティのツールで継続的に使用する方法はありますか?
有効期限のない資格情報が機能しない理由
technicalAccountID
と credential
からの連結引数です。パスワードの値は {{technicalAccountId}:{credential}}
形式で指定します。資格情報を使用して外部クライアントに接続する方法について詳しくは、ドキュメントを参照してください。
クエリサービスエディターに接続できるサードパーティの SQL エディターの種類を教えてください。
Power BI ツールをクエリサービスに接続できますか?
クエリサービスに接続すると、ダッシュボードの読み込みに時間がかかるのはなぜですか?
クエリサービスに接続されている場合、システムはインタラクティブまたはバッチ処理エンジンに接続されています。その結果、処理されたデータを反映するための読み込み時間が長くなる可能性があります。
ダッシュボードの応答時間を改善する場合は、Business Intelligence(BI)サーバーを、クエリサービスと BI ツールの間のキャッシュレイヤーとして実装する必要があります。 通常、ほとんどの BI ツールには、サーバー用の追加のオファリングがあります。
キャッシュサーバーレイヤーを追加する目的は、クエリサービスからのデータをキャッシュし、それをダッシュボードで利用して応答を高速化することです。 実行されるクエリの結果が毎日 BI サーバーにキャッシュされるので、この処理が可能です。 次に、キャッシュサーバーは、同じクエリを使用するすべてのユーザーにこれらの結果を提供し、待ち時間を短縮します。 この設定の説明については、使用しているユーティリティまたはサードパーティツールのドキュメントを参照してください。
pgAdmin 接続ツールを使用してクエリサービスにアクセスできますか?
PostgreSQL API エラー postgresql-api-errors
次の表に、PSQL エラーコードと考えられる原因を示します。
AuthenticationCleartextPassword
である必要があります。CREATE TABLE
文を使用してクエリサービスで作成されたものではありませんdbName
のテーブルが見つかりません。dbName
を確認してくださいテーブルで history_meta() メソッドを使用すると、58000 エラーコードが表示されたのはなぜですか?
history_meta()
メソッドを使用して、データセットからスナップショットにアクセスします。 以前は、Azure Data Lake Storage(ADLS)の空のデータセットに対してクエリを実行すると、データセットが存在しないことを示す 58000 エラーコードが表示されていました。 古いシステムエラーの例を以下に示します。
code language-shell |
---|
|
クエリに戻り値がないために、このエラーが発生しました。 この動作が修正され、次のメッセージが返されるようになりました。
code language-text |
---|
|
REST API エラー rest-api-errors
次の表に、HTTP エラーコードと考えられる原因を示します。