# スキャンの実行

> DQS スキャンの実行方法、進捗の監視、大規模データセットへの対応、繰り返しスキャンのスケジューリングについて解説します。

Source: https://dataqualitysense.com/ja/resources/using-dqs/running-scans/
Last updated: 2026-06-03

---

## スキャンの仕組み

スキャンを実行すると、DQS は設定した機能（Capability）に照らして Salesforce のレコードを処理します。スキャンは Salesforce Batch Apex を使ってバックグラウンドで実行されるため、処理中も作業を続けられます。

DQS は Salesforce のガバナ制限を自動的に遵守します。スキャン中も組織（org）の応答性は保たれます。

## 手動スキャンの実行

### スキャンを開始する

1. App Launcher から DQS を開く
2. 一覧から対象の Definition を見つける
3. **Run Scan**（または再生アイコン）をクリックする
4. 確認して開始する

スキャンはただちに処理を開始します。

### スキャンのステータス表示

| ステータス | アイコン | 意味 |
|--------|------|------|
| Queued | 時計 | 開始待ち |
| Processing | スピナー | 実行中 |
| Completed | チェックマーク | 正常に完了 |
| Failed | X | エラーが発生 |

### 実行中のスキャンを確認する

DQS のホーム画面には、実行中のすべてのスキャンが表示されます。
- Definition 名
- 進捗率（パーセンテージ）
- 処理済みレコード数／総レコード数
- 経過時間
- 推定残り時間

## 進捗の理解

### 進捗の追跡

DQS はレコードをバッチ単位で処理します。進捗バーには次の内容が表示されます。

- 総バッチ数のうち **完了したバッチ数**
- 総レコード数のうち **処理済みのレコード数**
- 評価中の **現在の機能（capability）**

例：「Processing batch 5 of 12 (2,500 of 6,000 records) - Completeness」

### 処理の順序

DQS は次の順序で機能を評価します。

1. Completeness（高速な項目チェック）
2. Validity（形式パターンの照合）
3. Timeliness（日付の比較）
4. Consistency（値の適合性）
5. Uniqueness（重複の検出）
6. AI Readiness 機能

迅速なフィードバックを提供するため、コストの低い機能から先に実行されます。

### 推定時間

スキャンの所要時間は次の要因によって決まります。

| 要因 | 影響 |
|--------|--------|
| レコード件数 | 件数が多いほど時間が長くなる |
| 項目数 | 項目が多いほど時間が長くなる |
| 機能のコスト | HIGH コストの機能ほど時間がかかる |
| 組織の負荷 | 混雑した組織では処理が遅くなる |

一般的な処理速度の目安：

| レコード件数 | 推定時間 |
|--------------|----------------|
| 1,000 | 1 分未満 |
| 10,000 | 2〜5 分 |
| 100,000 | 15〜30 分 |
| 1,000,000 以上 | 1〜2 時間 |

これらは目安です。実際の時間は、選択した機能や組織の稼働状況によって変動します。

## 処理コスト

各機能には、スキャンの所要時間に影響する処理コストがあります。

### コストレベル

| コスト | 機能 | 処理に関する備考 |
|------|--------------|------------------|
| LOW | Completeness、Validity | レコードごとの単純な項目チェック |
| MEDIUM | Timeliness、Consistency、PII Detection | パターン分析と日付計算 |
| HIGH | Uniqueness | レコード間の比較 |

### コストの算出

Definition の概要には、推定される合計コストが表示されます。

- **Low** - 選択したすべての機能が LOW コスト
- **Medium** - 少なくとも 1 つの MEDIUM コスト機能を含む
- **High** - 少なくとも 1 つの HIGH コスト機能を含む

> **ヒント：** 大規模なデータセットに対する最初のスキャンでは、まず LOW コストの機能だけから始めましょう。ベースラインを把握してから HIGH コストの機能を追加します。

## バッチ処理の詳細

### Batch Apex の仕組み

DQS はレコードの処理に Salesforce Batch Apex を使用します。これは次のことを意味します。

1. レコードはバッチに分割される（デフォルト：1 バッチあたり 200 件）
2. 各バッチは独立して処理される
3. あるバッチが失敗しても、他のバッチは処理を続ける
4. バッチ間でガバナ制限がリセットされる

このアプローチにより、DQS は次のことができます。
- 数百万件のレコードを処理する
- Salesforce の制限を遵守する
- ユーザーの操作を妨げずに実行する
- 中断されても再開する

### Salesforce のガバナ制限

Batch Apex には次の主要な制限があります。

| 制限 | 値 | 備考 |
|-------|------|-------|
| キューに入れられるバッチジョブの最大数 | 5 | DQS はスキャン 1 回につき 1 ジョブを使用 |
| QueryLocator 経由のレコード数 | 5,000 万 | ほとんどの組織には十分すぎる |
| 1 日あたりのバッチ実行回数 | 250,000 | 組織内のすべてのバッチジョブを合算 |

DQS はこれらの制限内に十分余裕を持って収まるよう設計されています。

### バッチサイズの最適化

DQS は機能の複雑さに応じてバッチサイズを調整します。

| 機能のタイプ | バッチサイズ |
|----------------|------------|
| LOW コストのみ | 200 件 |
| MEDIUM コストを含む | 200 件 |
| HIGH コストを含む | 100 件 |

複雑な機能に対してバッチサイズを小さくすることで、タイムアウトエラーを防ぎます。

## 大規模データセットへの対応

### 100,000 件を超えるデータセット

大規模なデータセットでは、次の方法に従いましょう。

1. **フィルタを使って** 範囲を絞る
2. まず **LOW コストの機能から始める**
3. 可能であれば **オフピークの時間帯に実行する**
4. 問題がないか **進捗を監視する**

### 100 万件を超えるデータセット

非常に大規模なデータセットでは、次のようにします。

1. フィルタ付きの複数の Definition を使って **データをセグメント化する**
2. メンテナンスウィンドウ中に **スキャンをスケジュールする**
3. 必要に応じて **機能を分けて実行する**
4. **セグメント化を使って** データを並行処理する

セグメント化の例：
- Definition A：Region = 'Americas' の Contact
- Definition B：Region = 'EMEA' の Contact
- Definition C：Region = 'APAC' の Contact

### パフォーマンスのヒント

| ヒント | メリット |
|-----|---------|
| Definition あたりの項目数を減らす | 処理が速くなる |
| レコードフィルタを使う | スキャン対象のデータセットが小さくなる |
| HIGH コストの機能を分けて実行する | 進捗の見通しが良くなる |
| オフピークにスケジュールする | リソースの競合が減る |

## スキャンの完了

### 完了通知

スキャンが完了すると、次の通知を受け取ります。

1. **アプリ内通知** - ベルアイコンに新しい結果が表示される
2. **メール通知** - サマリーがメールで送られる
3. **ホーム画面の更新** - ステータスが Completed に変わる

### 結果を確認する

完了したスキャンをクリックすると、次の内容が確認できます。
- 全体の品質スコア
- ディメンションごとのスコア
- 指標の詳細
- 影響を受けたレコードへのドリルダウン

解釈の手引きについては、[結果を理解する](/ja/resources/using-dqs/understanding-results/)を参照してください。

### スキャン履歴

DQS は、各 Definition のすべてのスキャン履歴を保持します。
- 日付と時刻
- 所要時間
- レコード件数
- 全体スコア
- 前回スキャンとの比較

履歴を使って、時系列での改善状況を追跡しましょう。

## スキャンのスケジューリング

繰り返しスキャンをスケジュールして、データ品質の監視を自動化できます。

### スケジュールを設定する

1. 対象の Definition を開く
2. **Schedule**（時計アイコン）をクリックする
3. 頻度を選ぶ：
   - Daily（毎日）
   - Weekly（毎週・曜日を選択）
   - Monthly（毎月・日付を選択）
4. 開始時刻を設定する
5. **Save Schedule** をクリックする

### スケジュールのベストプラクティス

| 頻度 | ユースケース |
|-----------|----------|
| Daily | 大量のデータ入力、重要な品質監視 |
| Weekly | 標準的な品質追跡、トレンド分析 |
| Monthly | 経営層向けレポート、コンプライアンス監査 |

> **ヒント：** ユーザーへの影響を最小限にするため、オフピークの時間帯（早朝や週末）にスキャンをスケジュールしましょう。

### スケジュールの管理

Definition の詳細ページから、次の操作ができます。
- **Edit** - 頻度や時刻を変更する
- **Pause** - 削除せずに一時的に停止する
- **Resume** - 一時停止したスケジュールを再開する
- **Delete** - スケジュールを完全に削除する

### スケジュールの上限

スケジュールスキャンはすべてのユーザーが利用でき、設定できるスケジュールの数に上限はありません。

## スキャンのキャンセル

### キャンセルの方法

1. ホーム画面で実行中のスキャンを見つける
2. 停止アイコン（または **Cancel**）をクリックする
3. キャンセルを確認する

### キャンセル時の動作

- 現在のバッチが終わった後に処理が停止する
- 部分的な結果が保存される
- ステータスが「Canceled」に変わる
- 収集済みの部分データを確認できる

キャンセルされたスキャンは制限の対象に数えられません。

## トラブルシューティング

### 「スキャンがキューに入ったまま開始しない」

**原因：** 組織内で他のバッチジョブが実行中です。

**対処法：** 他のジョブの完了を待ちましょう。Salesforce では同時に実行できるバッチジョブは最大 5 件です。

**確認方法：** Setup > Apex Jobs で実行中のものを確認できます。

### 「スキャンが失敗した」

**原因：** 通常はデータの問題か、権限の問題です。

**対処法：**
1. スキャン詳細のエラーメッセージを確認する
2. 対象のオブジェクトと項目へのアクセス権があるか確認する
3. フィルタ条件に誤りがないか見直す
4. レコード件数を減らして実行してみる

### 「スキャンに時間がかかりすぎる」

**原因：** 大規模なデータセット、または HIGH コストの機能です。

**対処法：**
1. 完了するまで待つ（いずれ必ず終わります）
2. フィルタを追加してレコード件数を減らす
3. HIGH コストの機能を外す
4. オフピークの時間帯にスケジュールする

### 「結果にすべてのレコードが表示されない」

**原因：** フィルタ条件によって一部のレコードが除外されています。

**対処法：** Definition のフィルタを見直して調整しましょう。

## 次のステップ

- [結果を理解する](/ja/resources/using-dqs/understanding-results/)：スキャンデータを解釈する
- [Definition Builder ガイド](/ja/resources/using-dqs/definition-builder/)：Definition を変更する
