設備保全データテンプレート
設備保全データテンプレート
- 保全ログに必要なデータ項目
- 標準的なプロセスの節目と作業指示書の段階
- Hexagon EAMからのデータ抽出方法
設備保全の属性
| 名前 | 説明 | ||
|---|---|---|---|
| アクティビティ ActivityName | 実行された特定の作業、または発生したステータス変更イベントです。 | ||
| 説明 この属性は、「作業指示書の作成」や「資材の払い出し」など、プロセスで実行されたステップを示します。ステータス変更の履歴や、作業指示書に記録された個別のトランザクションイベントから取得します。 重要な理由 イベントログの順序を定義し、プロセスフローの再構成やボトルネック分析を可能にします。 入手先 Hexagon EAMのR5EVENTHISTORYテーブル、EVH_STATUSフィールド(説明に対応付け)、または監査ログ 例 作業指示書の作成作業指示書のスケジュール設定作業指示書の完了資材の払い出し | |||
| ソースシステム SourceSystem | データの取得元となるシステムの名前です。 | ||
| 説明 この属性は、データの記録元となるシステムを示します。この場合、旧システムや外部請負業者のシステムと区別するため、特定のEAMシステム名を固定値として設定します。 重要な理由 複数の保全システムのデータを統合する場合も、データの出所を明確にできます。 入手先 固定値 例 Hexagon EAMInfor EAMDatastream 7i | |||
| タイムスタンプ EventTimestamp | アクティビティが発生した日時です。 | ||
| 説明 この属性には、イベントやステータス変更がシステムに確定された正確な時刻が記録されます。アクティビティ間の所要時間や、作業指示書全体のサイクルタイムを算出できます。 重要な理由 正確なタイムスタンプは、リードタイムの分析、遅延の特定、SLA遵守状況の算出に欠かせません。 入手先 Hexagon EAMのR5EVENTHISTORYテーブル、EVH_DATEフィールド 例 2023-10-12T08:30:00Z2023-10-12T14:15:00Z2023-10-13T09:00:00Z | |||
| 保全作業指示書 WorkOrderNumber | 保全作業指示書を一意に識別するIDです。 | ||
| 説明 この属性は、保全ケースを一意に識別する主キーです。最初の依頼から計画、実施、最終的な会計処理まで、作業指示書を追跡します。アクティビティログ、作業時間、資材消費のデータを結合する際の中心的なケース識別子として使われます。 重要な理由 保全プロセスの個々のケースを識別し、サイクルタイムやプロセスバリアントを最初から最後まで追跡できます。 入手先 Hexagon EAMのR5EVENTSテーブル、EVT_CODEフィールド 例 WO-100234WO-100235WO-100236104592 | |||
| 最終データ更新 LastDataUpdate | レコードが最後に抽出または更新された日時です。 | ||
| 説明 この属性は、データがソースシステムから最後に取得された日時を記録します。分析担当者は、データの鮮度を把握し、レポート作成の流れに遅延がないかを確認できます。 重要な理由 分析に使うデータの新しさを確認でき、データ同期の問題を調査する際にも役立ちます。 入手先 抽出時のシステム時刻 例 2023-10-25T12:00:00Z2023-10-26T00:00:00Z | |||
| ユーザー UpdatedBy | アクティビティを実行した担当者のユーザーIDです。 | ||
| 説明 この属性には、ステータスの変更や更新を行った担当者のログインIDが記録されます。チームの作業負荷の分析、トレーニングの必要性の特定、プロセスのコンプライアンス監査に使用されます。 重要な理由 保全業務のライフサイクル全体にわたるユーザーの行動とリソースの利用状況を分析できます。 入手先 Hexagon EAMのテーブルR5EVENTHISTORY、フィールドEVH_USER 例 JSMITHADAVISSYSTEMMGR_USR | |||
| 作業指示書の種類 WorkOrderType | 作業指示書を予防、是正、緊急に分類します。 | ||
| 説明 この属性は、保全作業の種類を分類します。計画的な予防保全と、事後対応型の緊急修理の比率を分析するために使われます。この比率は、資産の状態や管理体制の成熟度を示す重要な指標です。 重要な理由 予防保全比率分析ダッシュボードに役立ち、事後対応型の作業を減らす機会の特定にも使えます。 入手先 Hexagon EAMのR5EVENTSテーブル、EVT_TYPEフィールド 例 PPMCOREMGPRJ | |||
| 優先度 PriorityCode | 作業指示書に設定された緊急度です。 | ||
| 説明 この属性は、通常から緊急までの作業指示書の重要度を示します。リソースのスケジュール設定に影響し、SLA遵守状況の監視や優先度の不適切な設定の検出に欠かせません。 重要な理由 優先度エスカレーションとリソース監査のダッシュボードでは、重大な作業が適切に優先されていることを確認する必要があります。 入手先 Hexagon EAMのテーブルR5EVENTS、フィールドEVT_PRIORITY 例 重大高中低 | |||
| 実績作業時間 ActualLaborHours | 作業指示に計上された合計時間です。 | ||
| 説明 この属性は、技術者が作業指示に記録した時間を合計します。生産性や人件費の算出、見積時間との差の分析に使用されます。 重要な理由 技術者の労働生産性ダッシュボードと労働時間差異の重要業績評価指標(KPI)の主なデータソースです。 入手先 Hexagon EAMのテーブルR5BOOKEDHOURS、フィールドBOO_HOURS(作業指示ごとに合計) 例 2.54.012.00.5 | |||
| 目標完了日 TargetCompletionDate | 作業指示の予定期限です。 | ||
| 説明 この属性は、保全作業の完了予定日を示します。実際の完了日と比較することで、SLAの遵守状況や期限内の完了率を算出できます。 重要な理由 請負業者のSLA遵守状況の監視と、計画の精度評価に欠かせません。 入手先 Hexagon EAMのテーブルR5EVENTS、フィールドEVT_TARGET 例 2023-11-012023-11-152023-12-01 | |||
| 資産 AssetCode | 保全対象となる設備または施設を一意に識別するIDです。 | ||
| 説明 この属性は、作業指示を特定の設備または場所に関連付けます。資産ごとの故障頻度を分析し、故障が頻発する設備や交換が必要な設備を特定できます。 重要な理由 資産の信頼性指標の算出や、保全作業が集中している箇所の把握に欠かせません。 入手先 Hexagon EAMのテーブルR5EVENTS、フィールドEVT_OBJECT 例 PUMP-001HVAC-204FLEET-99CONVEYOR-A | |||
| 部門 MaintenanceDepartment | 作業を実施する部門または作業センターです。 | ||
| 説明 この属性は、作業指示に割り当てられたチームまたは保全部門を示します。たとえば、電気、機械、施設管理などです。技術チームごとの実績を比較できます。 重要な理由 技術者の労働生産性ダッシュボードで使用され、職種ごとのリソースを効果的に割り当てるのに役立ちます。 入手先 Hexagon EAMのテーブルR5EVENTS、フィールドEVT_MRC 例 電気部門機械保全部門施設管理車両サービス | |||
| SLAステータス SLAState | 作業指示がサービスレベル合意を満たしたかどうかを示します。 | ||
| 説明 この計算属性は、実際の完了日と目標完了日を比較します。ケースを「SLA内」または「未達」に分類し、請負業者と社内の実績を報告しやすくします。 重要な理由 SLA遵守率の重要業績評価指標(KPI)の直接のデータソースです。 入手先 計算式:実際の終了日 <= 目標日 例 SLA内未達未完了 | |||
| 予防保全かどうか IsPreventive | 作業指示が予防保全かどうかを示すフラグです。 | ||
| 説明 この真偽値属性を使うと、作業指示を簡単に絞り込み、分類できます。予防保全と事後対応の修理を分けることで、予防保全比率の重要業績評価指標(KPI)を算出しやすくなります。 重要な理由 予防保全比率分析のダッシュボードで基本となる分類項目です。 入手先 WorkOrderTypeから算出 例 truefalse | |||
| 作成日 DateCreated | 作業指示が最初に作成された日付です。 | ||
| 説明 この属性は、作業指示のライフサイクルの開始を示します。計画所要時間の平均値を算出し、未処理案件の経過期間を把握する際のベースラインになります。 重要な理由 保全計画の進捗ダッシュボードと未処理案件の経過期間の重要業績評価指標(KPI)に必要です。 入手先 Hexagon EAMのテーブルR5EVENTS、フィールドEVT_CREATED 例 2023-09-012023-09-15 | |||
| 作業指示の説明 WorkOrderDescription | 保全作業の概要を示す短いテキストです。 | ||
| 説明 この属性には、問題の件名または簡単な説明が含まれます。問題のあるケースを詳しく調べたり、非構造化テキストから傾向を特定したりする際に、分析担当者が状況を把握するのに役立ちます。 重要な理由 プロセスデータを人が確認する際に必要なコンテキストを提供します。 入手先 Hexagon EAMのテーブルR5EVENTS、フィールドEVT_DESC 例 ポンプのシール漏れを修理空調設備の月次点検コンベヤーベルトを交換 | |||
| 品質管理の合格 QualityControlPassed | 品質管理の工程が文書化されているかどうかを示すフラグです。 | ||
| 説明 この真偽値属性は、特定の品質管理アクティビティやチェックリスト項目が完了として記録されているかを確認します。安全規制や社内基準へのコンプライアンスを確保するのに役立ちます。 重要な理由 品質管理コンプライアンス率の重要業績評価指標(KPI)に使用され、コンプライアンスと文書の完全性に関するダッシュボードを支援します。 入手先 チェックリストのテーブルまたはアクティビティ履歴から算出 例 truefalse | |||
| 実績総コスト TotalActualCost | 作業指示に記録された総費用です。 | ||
| 説明 この属性には、人件費、材料費、サービス費の合計が記録されます。緊急保全と予防保全の費用を比較し、決算処理を分析するうえで欠かせません。 重要な理由 決算処理と完了所要時間のダッシュボード、およびコストに基づく意思決定を支援します。 入手先 Hexagon EAMのテーブルR5EVENTS、フィールドEVT_ACTCOST(または同様の集計列) 例 150.002500.5075.25 | |||
| 手戻りかどうか IsRework | 作業指示に技術作業の繰り返しが含まれるかどうかを示すフラグです。 | ||
| 説明 この計算属性は、品質確認や完了のステータスから作業中のステータスに戻るケースを特定します。品質上の問題やトレーニング不足の把握に役立ちます。 重要な理由 技術作業の手戻りと品質管理のダッシュボード、および保全手戻り率の重要業績評価指標(KPI)に使用されます。 入手先 アクティビティの繰り返し回数に基づいて算出 例 truefalse | |||
| 緊急への優先度引き上げ EmergencyEscalationFlag | 作成後に優先度が緊急に引き上げられたかどうかを示すフラグです。 | ||
| 説明 この真偽値属性は、低い優先度で開始し、後から緊急に引き上げられた作業指示を特定します。頻繁に発生する場合、初期の優先度判定が適切でない、または迅速な対応を得るためにシステムが不適切に利用されている可能性があります。 重要な理由 優先度エスカレーションとリソース監査のダッシュボード、および緊急への優先度引き上げ率の重要業績評価指標(KPI)を支援します。 入手先 優先度フィールドの監査履歴から算出 例 truefalse | |||
| 資材請求日 MaterialRequisitionDate | 予備部品を請求した日付です。 | ||
| 説明 この属性には、資材の請求を倉庫または購買部門に提出した日時が記録されます。この日から「資材払出」までの時間を分析すると、サプライチェーンの効率を把握できます。 重要な理由 予備部品の調達リードタイムのダッシュボードに必要です。 入手先 Hexagon EAMのテーブルR5REQUISITIONSまたは関連する取引テーブル 例 2023-10-012023-10-05 | |||
| 資産の重要度 AssetCriticality | 資産の業務上の重要性を示すスコアです。 | ||
| 説明 この属性は、資産が業務にとってどれほど重要かを示します。優先度の高い作業指示が、本当に重要な設備に関連しているかを確認するために使われ、不適切な運用の兆候を把握できます。 重要な理由 優先度と資産価値を関連付け、優先度エスカレーションとリソース監査のダッシュボードを支援します。 入手先 Hexagon EAMのテーブルR5OBJECTS、フィールドOBJ_CRITICALITY(EVT_OBJECTで結合) 例 A - 最重要B - 重大C - 二次的D - 低 | |||
設備保全のアクティビティ
| アクティビティ | 説明 | ||
|---|---|---|---|
| 作業指示書のクローズ | 作業指示書の会計処理が確定し、アーカイブされた状態です。以降、費用や作業時間は計上できません。 | ||
| 重要な理由 プロセスの終了です。会計処理の完了分析と最終費用の確定に欠かせません。 入手先 Hexagon EAMのr5statuslog。「C」(Closed)または「L」(Locked/Closed)への変更。 記録 r5statuslogに対してトランザクションが実行されたときに記録されます イベントタイプ explicit | |||
| 作業指示書の作成 | システムで保全作業指示書のレコードが最初に作成された時点です。このイベントによってケースが開始され、保全業務の全期間を追跡するための最初のタイムスタンプが記録されます。 | ||
| 重要な理由 プロセスの開始を示し、解決までの総時間を測定するベースラインになります。未処理作業の経過期間を算出するうえでも重要です。 入手先 Hexagon EAMのr5eventsテーブル。evt_codeを含む新しいレコードが挿入されたときに記録されます。 記録 r5eventsに対してINSERTトランザクションが実行されたときに記録されます イベントタイプ explicit | |||
| 作業指示書の完了 | 技術的な作業が終わり、技術者が作業を完了として記録した状態です。資産は再び稼働できる状態になります。 | ||
| 重要な理由 全工程の所要時間と平均修理時間を分析するうえで重要な節目です。設備停止時間の計測が終了します。 入手先 Hexagon EAMのr5statuslog。「C」(Completed)または「F」(Finished)への変更。 記録 r5statuslogに対してトランザクションが実行されたときに記録されます イベントタイプ explicit | |||
| 作業指示書の承認 | 計画と見積もりの確認を終えたことを示すステータス変更です。作業の実施が承認されたことを表します。 | ||
| 重要な理由 計画段階の終了を示し、保全計画の進捗分析に役立ちます。職務分掌のコンプライアンス確認にも使われます。 入手先 Hexagon EAMのr5statuslogテーブル。ステータスが「A」(Approved)または同等のシステムステータスに変わった記録を確認します。 記録 r5statuslogに対してトランザクションが実行されたときに記録されます イベントタイプ explicit | |||
| 作業指示書の着手 | 技術者が資産の実作業を開始した状態です。通常は「進行中」へのステータス変更、または最初の作業時間の記録で確認できます。 | ||
| 重要な理由 未処理期間の算出が終わり、実作業時間の計測が始まる時点です。SLA遵守率の算出にも欠かせません。 入手先 Hexagon EAMのr5statuslog。「進行中」への変更(ステータスコードは通常「I」または「IP」)。 記録 r5statuslogに対してトランザクションが実行されたときに記録されます イベントタイプ explicit | |||
| 作業時間の記録 | 技術者が作業指示書に対して作業時間を記録します。このアクティビティは、1つのケースで複数回発生する場合があります。 | ||
| 重要な理由 労働時間の差異や技術者の労働生産性を示すダッシュボードの基礎となります。実績と計画の差を把握できます。 入手先 Hexagon EAMのr5booklaborテーブル。各行は作業指示書(WO)のタイムシート記録を表します。 記録 r5booklaborに対してINSERTトランザクションが実行されたときに記録されます イベントタイプ explicit | |||
| 資材の払い出し | 予備部品が保管場所から実際に払い出され、作業指示書に計上されます。資材が消費されたことを示します。 | ||
| 重要な理由 資材の入手可能性に関するリードタイムの終点です。作業開始後に部品不足で中断したケースを特定できます。 入手先 Hexagon EAMのr5translinesテーブル。トランザクション種別「I」(Issue)を作業指示書に関連付けます。 記録 r5translinesに対してINSERTトランザクションが実行されたときに記録されます イベントタイプ explicit | |||
| チェックリスト項目の確認 | 作業指示書に含まれる特定の作業や検査手順が完了として記録されます。作業の進捗を細かく把握できます。 | ||
| 重要な理由 コンプライアンスと文書化の完全性を確認するうえで欠かせません。安全確認がシステムに記録されたことを証明します。 入手先 Hexagon EAMのr5checklistまたはr5activitiesテーブル。特定のアクティビティ/作業項目のステータス変更です。 記録 r5checklistに対してUPDATEトランザクションが実行されたときに記録されます イベントタイプ explicit | |||
| 作業指示書のスケジュール設定 | 作業指示書に予定開始日または特定のリソースが割り当てられます。これにより、未処理の作業が実行スケジュールに移ります。 | ||
| 重要な理由 技術者の労働生産性分析や、リソース配分の効率を把握するうえで重要です。 入手先 Hexagon EAMのr5eventsテーブル(evt_schedstartの更新)、またはr5statuslog(「S」:Scheduledへの変更)。 記録 変更前後のステータスフィールドを比較するか、evt_schedstartの更新を確認します イベントタイプ inferred | |||
| 作業指示書の最終承認 | 通常、コンプライアンスや請負業者への支払いに必要な最終的な事務承認です。すべてのデータが正確であることを確認します。 | ||
| 重要な理由 作業指示書の承認サイクル分析で監視します。この段階の遅れは、会計処理の速度に影響します。 入手先 Hexagon EAMのr5statuslog(「Signed Off」への変更)、または電子署名の記録ログ。 記録 変更前後のステータスフィールドを比較します イベントタイプ inferred | |||
| 優先度の更新 | 作業指示書の作成後に優先度が変更されたことを示します。変更のタイムスタンプと新しい優先度が記録されます。 | ||
| 重要な理由 優先度の不適切な引き上げや作業範囲の拡大を特定する、優先度引き上げ・リソース監査ダッシュボードに必要です。 入手先 Hexagon EAMのr5audittrail(監査が有効な場合)、またはスナップショットから推定します。多くの場合、evt_priorityフィールドの監査ログから取得します。 記録 evt_priorityに対してUPDATEトランザクションが実行されたときに記録されます イベントタイプ explicit | |||
| 品質管理の合格 | 監督者または検査担当者が完了した作業を確認し、品質を承認します。作業指示書を完了する前に、修理内容を検証する段階です。 | ||
| 重要な理由 品質管理のコンプライアンス率を示す重要業績評価指標(KPI)に役立ちます。この段階から前の工程に戻る場合は、技術的な手戻りが発生したことを示します。 入手先 Hexagon EAMのr5statuslog(「Review」または「QC」への変更)、または特定のUDF検証に関するr5audittrail。 記録 変更前後のステータスフィールドを比較します イベントタイプ inferred | |||
| 資材請求の作成 | 予備部品や資材の請求が作業指示書に関連付けられます。これを起点に、サプライチェーンのサブプロセスが始まります。 | ||
| 重要な理由 予備部品の調達リードタイムを測定する起点です。この段階の件数が多い場合、在庫の有無に左右されている可能性があります。 入手先 Hexagon EAMのr5requisitionsテーブル。req_evt(作業指示書コード)で関連付けます。 記録 r5requisitionsに対してINSERTトランザクションが実行されたときに記録されます イベントタイプ explicit | |||
データ抽出ガイド
ステップ
- 高度なレポート作成権限を持つユーザーアカウントでHexagon EAMアプリケーションにログインします。
- 通常は「管理」または「レポート」メニューにあるレポートモジュールを開き、高度なレポート作成画面を起動します(Cognosまたは組み込みのSQLレポートビルダーが使われることがあります)。
- 新しいレポート作成ウィザードを開始し、データソースの種類として「SQL」または「フリーハンドSQL」を選択します。標準のビジネスオブジェクトモデルを使わず、データベースに直接クエリを実行できます。
- 以下のクエリセクションにあるSQLスクリプトをコピーし、データセット定義画面に貼り付けます。
- [Your Organization Code]や日付範囲などのプレースホルダーを、環境に合った値に置き換えます。
- エディターでクエリの構文を検証し、データベース(OracleまたはSQL Server)がUNION文を受け付けることを確認します。
- 結果の列をレポートのレイアウトに割り当て、WorkOrderNumber、ActivityName、EventTimestampが明確に表示されるようにします。
- 結合セルや書式設定の見出しが含まれない表形式で出力できるよう、CSVまたはExcel形式でエクスポートする設定にします。
- データ構造を確認するため、直近100件の作業指示書など、検証用の期間を指定してレポートを実行します。
- 検証後、定期実行を設定するか、抽出対象期間全体を指定してレポートを実行します。
- 出力ファイルをダウンロードし、日付形式を確認します。正確な順序付けのため、可能であればタイムスタンプに秒まで含めてください。
- 出力されたCSVファイルをProcessMindにインポートし、SourceSystem列をケース属性、ActivityName列をアクティビティ分類子としてマッピングします。
設定
- 日付範囲:クエリのパフォーマンスを維持するため、EVT_DATE(作成日)で直近6~12か月の期間を指定することをおすすめします。
- 組織の絞り込み:Hexagon EAMは複数組織で利用されることがよくあります。他の事業部門のデータが混在しないよう、対象の組織コードで絞り込んでください。
- データベース構文:以下のクエリでは可能な限りANSI標準SQLを使用していますが、Hexagon EAMは通常OracleまたはSQL Serverで稼働します。日付関数(SYSDATEとGETDATEなど)の調整が必要な場合があります。
- ステータスの設定:ステータスコード(「A」「C」「R」など)とアクティビティ名(「作業指示書承認」など)の対応を、システム固有のステータス設定に合わせてください。
- 権限:レポートを実行するユーザーアカウントには、R5EVENTS、R5EVENTSTATUS、R5BOOKEDHOURS、R5TRANSACTIONS、R5AUDITVALUESテーブルへの読み取りアクセス権が必要です。
クエリの例 sql
/* 1. Work Order Created */
SELECT
evt_code AS WorkOrderNumber,
'Work Order Created' AS ActivityName,
evt_created AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
evt_type AS WorkOrderType,
evt_priority AS PriorityCode,
evt_mrc AS MaintenanceDepartment,
evt_updatedby AS UpdatedBy,
evt_target AS TargetCompletionDate,
evt_object AS AssetCode,
NULL AS ActualLaborHours
FROM r5events
WHERE evt_type IN ('JOB', 'PPM') -- Filter for relevant WO types
AND evt_created >= '2023-01-01' -- [Set Start Date]
AND evt_org = 'YOUR_ORG' -- [Set Organization]
UNION ALL
/* 2. Priority Updated (Requires Audit Log) */
SELECT
aud_code AS WorkOrderNumber,
'Priority Updated' AS ActivityName,
aud_date AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
NULL AS WorkOrderType,
aud_value AS PriorityCode,
NULL AS MaintenanceDepartment,
aud_user AS UpdatedBy,
NULL AS TargetCompletionDate,
NULL AS AssetCode,
NULL AS ActualLaborHours
FROM r5auditvalues
WHERE aud_table = 'R5EVENTS'
AND aud_field = 'EVT_PRIORITY'
AND aud_org = 'YOUR_ORG'
UNION ALL
/* 3. Status Changes (Approved, Scheduled, Started, Completed, Signed Off, Closed) */
/* This block maps generic status codes to specific ProcessMind activities */
SELECT
est_event AS WorkOrderNumber,
CASE est_status
WHEN 'A' THEN 'Work Order Approved'
WHEN 'S' THEN 'Work Order Scheduled'
WHEN 'IP' THEN 'Work Order Started'
WHEN 'C' THEN 'Work Order Completed'
WHEN 'QC' THEN 'Quality Control Passed'
WHEN 'SO' THEN 'Work Order Signed Off'
WHEN 'CL' THEN 'Work Order Closed'
ELSE 'Status Change: ' + est_status
END AS ActivityName,
est_date AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
NULL AS WorkOrderType,
NULL AS PriorityCode,
NULL AS MaintenanceDepartment,
est_auth AS UpdatedBy,
NULL AS TargetCompletionDate,
NULL AS AssetCode,
NULL AS ActualLaborHours
FROM r5eventstatus
WHERE est_status IN ('A', 'S', 'IP', 'C', 'QC', 'SO', 'CL')
AND est_org = 'YOUR_ORG'
UNION ALL
/* 4. Material Requisition Created */
SELECT
req_event AS WorkOrderNumber,
'Material Requisition Created' AS ActivityName,
req_created AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
NULL AS WorkOrderType,
NULL AS PriorityCode,
NULL AS MaintenanceDepartment,
req_createdby AS UpdatedBy,
NULL AS TargetCompletionDate,
NULL AS AssetCode,
NULL AS ActualLaborHours
FROM r5requisitions
WHERE req_event IS NOT NULL
AND req_org = 'YOUR_ORG'
UNION ALL
/* 5. Material Issued */
SELECT
trl_event AS WorkOrderNumber,
'Material Issued' AS ActivityName,
trl_date AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
NULL AS WorkOrderType,
NULL AS PriorityCode,
NULL AS MaintenanceDepartment,
trl_user AS UpdatedBy,
NULL AS TargetCompletionDate,
trl_part AS AssetCode, -- Storing Part ID in Asset column for context
NULL AS ActualLaborHours
FROM r5translines
WHERE trl_type = 'I' -- I = Issue
AND trl_event IS NOT NULL
AND trl_org = 'YOUR_ORG'
UNION ALL
/* 6. Labor Hours Recorded */
SELECT
boo_event AS WorkOrderNumber,
'Labor Hours Recorded' AS ActivityName,
boo_entered AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
NULL AS WorkOrderType,
NULL AS PriorityCode,
boo_mrc AS MaintenanceDepartment,
boo_person AS UpdatedBy,
NULL AS TargetCompletionDate,
NULL AS AssetCode,
boo_hours AS ActualLaborHours
FROM r5bookedhours
WHERE boo_event IS NOT NULL
AND boo_org = 'YOUR_ORG'
UNION ALL
/* 7. Checklist Item Verified */
SELECT
ckv_event AS WorkOrderNumber,
'Checklist Item Verified' AS ActivityName,
ckv_entrydate AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
NULL AS WorkOrderType,
NULL AS PriorityCode,
NULL AS MaintenanceDepartment,
ckv_enteredby AS UpdatedBy,
NULL AS TargetCompletionDate,
NULL AS AssetCode,
NULL AS ActualLaborHours
FROM r5checklistvalues
WHERE ckv_completed = '+' -- Logic for completed item depends on config
AND ckv_event IS NOT NULL
AND ckv_org = 'YOUR_ORG' ステップ
- データベース接続を確認します。Hexagon EAMのOracleまたはSQL Serverバックエンドデータベースに接続するための読み取り専用認証情報(通常はサービスアカウント)を用意してください。
- 基本テーブルを確認します。R5EVENTS(作業指示書ヘッダー)、R5STATUS(ステータス履歴)、R5BOOKEDHOURS(作業時間)、R5TRANSACTIONS(資材)、R5AUDITVALUES(監査ログ)へのアクセス権を確認してください。
- ステータスコードを対応付けます。Hexagon EAMでは設定可能なステータスコード(A、C、O、Rなど)が使われます。システム設定(画面:管理 -> コード)を確認し、1文字または2文字のコードを「承認済み」「スケジュール済み」「開始済み」「完了」「品質管理合格」「承認署名済み」「クローズ済み」の各アクティビティに対応付けてください。
- クエリを設定します。以下のSQLスクリプトを開き、プレースホルダーのステータスコード(「APPR」「SCHD」「COMP」など)を実際のシステムコードに置き換えます。
- 日付範囲を設定します。WHERE句を更新し、EVT_DATEまたはTRN_DATEで対象期間を絞り込みます。クエリのパフォーマンスを保つため、通常は直近12か月を指定します。
- 抽出を実行します。SQLクライアント(SQL Developer、SSMS、Toadなど)でクエリを実行します。
- 監査データを確認します。「優先度の更新」アクティビティの行が返されない場合は、EAMシステムの設定でR5EVENTSテーブルの監査機能が有効になっているか確認してください。
- チェックリストデータを検証します。お使いのバージョンでR5CHECKLISTVALUESが正しいテーブルか確認してください。古いバージョンでは、タスク単位の完了記録にR5ACTIVITIESが使われる場合があります。
- データをエクスポートします。結果をCSVまたはParquetファイルとして保存します。解析エラーを防ぐため、Timestamp列をISO 8601形式(YYYY-MM-DD HH:MM:SS)にしてください。
- ProcessMindにインポートします。フラットファイルをProcessMindの画面にアップロードし、WorkOrderNumberをケースID、ActivityNameをアクティビティ、EventTimestampをタイムスタンプにマッピングします。
設定
- 期間の絞り込み:現在のクエリはすべてのデータを選択します。基礎となるCTEまたは各SELECTブロックに、WHERE EVT_DATE >= SYSDATE - 365(Oracle)またはGetDate() - 365(SQL Server)のような条件を追加することを強くおすすめします。
- ステータスコードの対応付け:SQL内の文字列(「APPR」「COMP」「QC」など)を、R5STATUSに定義された実際のコードに置き換えてください。
- 監査設定:「優先度の更新」の抽出にはR5AUDITVALUESテーブルが必要です。EVT_PRIORITY列の監査が無効の場合、このアクティビティは取得されません。
- 組織/テナント:EAM環境で複数の組織を管理している場合は、データが混在しないようEVT_ORGまたはEVT_MRC(部門)で絞り込んでください。
- 言語:このクエリでは標準的な英語の列見出しを想定しています。データベースでローカライズされた列名を使用している場合は、適宜変更してください。
クエリの例 sql
/* 1. Work Order Created */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Work Order Created' AS ActivityName,
E.EVT_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
E.EVT_CREATEDBY AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
WHERE E.EVT_TYPE IN ('JOB', 'PPM') -- Filter for Standard and Preventive WOs
UNION ALL
/* 2. Priority Updated (From Audit Log) */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Priority Updated' AS ActivityName,
A.AUD_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
A.AUD_VALUE AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
A.AUD_USER AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5AUDITVALUES A ON E.EVT_CODE = A.AUD_KEY1
WHERE A.AUD_TABLE = 'R5EVENTS'
AND A.AUD_FIELD = 'EVT_PRIORITY'
UNION ALL
/* 3. Work Order Approved */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Work Order Approved' AS ActivityName,
S.STA_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
S.STA_UPDATEUSER AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5STATUS S ON E.EVT_CODE = S.STA_EVENT
WHERE S.STA_STATUS = 'APPR' -- Replace with your Approved status code
UNION ALL
/* 4. Material Requisition Created */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Material Requisition Created' AS ActivityName,
R.REQ_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
R.REQ_CREATEDBY AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5REQUISITIONS R ON E.EVT_CODE = R.REQ_EVENT
UNION ALL
/* 5. Work Order Scheduled */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Work Order Scheduled' AS ActivityName,
S.STA_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
S.STA_UPDATEUSER AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5STATUS S ON E.EVT_CODE = S.STA_EVENT
WHERE S.STA_STATUS = 'SCHD' -- Replace with your Scheduled status code
UNION ALL
/* 6. Work Order Started */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Work Order Started' AS ActivityName,
S.STA_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
S.STA_UPDATEUSER AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5STATUS S ON E.EVT_CODE = S.STA_EVENT
WHERE S.STA_STATUS IN ('STRT', 'INPRG') -- Replace with your Started/In Progress status codes
UNION ALL
/* 7. Material Issued */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Material Issued' AS ActivityName,
T.TRN_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
T.TRN_USER AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5TRANSACTIONS T ON E.EVT_CODE = T.TRN_EVENT
WHERE T.TRN_TYPE = 'ISSUE' -- Indicates material issue from store
UNION ALL
/* 8. Labor Hours Recorded */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Labor Hours Recorded' AS ActivityName,
B.BOO_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
B.BOO_PERSON AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
B.BOO_HOURS AS ActualLaborHours
FROM R5EVENTS E
JOIN R5BOOKEDHOURS B ON E.EVT_CODE = B.BOO_EVENT
UNION ALL
/* 9. Checklist Item Verified */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Checklist Item Verified' AS ActivityName,
C.CKV_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
C.CKV_ENTEREDBY AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5CHECKLISTVALUES C ON E.EVT_CODE = C.CKV_EVENT
WHERE C.CKV_COMPLETED = '+' -- Assuming '+' indicates checked/complete
UNION ALL
/* 10. Work Order Completed */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Work Order Completed' AS ActivityName,
S.STA_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
S.STA_UPDATEUSER AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5STATUS S ON E.EVT_CODE = S.STA_EVENT
WHERE S.STA_STATUS = 'COMP' -- Replace with your Completed status code
UNION ALL
/* 11. Quality Control Passed */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Quality Control Passed' AS ActivityName,
S.STA_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
S.STA_UPDATEUSER AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5STATUS S ON E.EVT_CODE = S.STA_EVENT
WHERE S.STA_STATUS = 'QC' -- Replace with your QC Passed status code
UNION ALL
/* 12. Work Order Signed Off */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Work Order Signed Off' AS ActivityName,
S.STA_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
S.STA_UPDATEUSER AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5STATUS S ON E.EVT_CODE = S.STA_EVENT
WHERE S.STA_STATUS = 'SIGNOFF' -- Replace with your Sign Off status code
UNION ALL
/* 13. Work Order Closed */
SELECT
E.EVT_CODE AS WorkOrderNumber,
'Work Order Closed' AS ActivityName,
S.STA_DATE AS EventTimestamp,
'Hexagon EAM' AS SourceSystem,
GETDATE() AS LastDataUpdate,
E.EVT_TYPE AS WorkOrderType,
E.EVT_PRIORITY AS PriorityCode,
E.EVT_MRC AS MaintenanceDepartment,
S.STA_UPDATEUSER AS UpdatedBy,
E.EVT_TARGET AS TargetCompletionDate,
E.EVT_OBJECT AS AssetCode,
NULL AS ActualLaborHours
FROM R5EVENTS E
JOIN R5STATUS S ON E.EVT_CODE = S.STA_EVENT
WHERE S.STA_STATUS = 'CLOS' -- Replace with your Closed status code ステップ
- Hexagon EAM Databridge Outboundがインストールされ、ライセンスが有効であり、この抽出に必要な保全作業指示書データへのアクセスが許可されていることを確認します。送信トランザクションの設定、送信先、スケジュール機能、ソーステーブルまたはビューへのアクセスも確認してください。メニュー名やトランザクション識別子はEAMのリリースによって異なるため、該当する管理メニューのパスには[お使いのシステムに合わせて設定]を使用してください。
- 作業指示書ヘッダー、作業指示書のステータス履歴、優先度履歴、資材依頼、資材払出、作業時間の取引、チェックリストまたは検査結果、スケジュール割り当て、品質承認、承認署名、クローズ記録の正本となるHexagon EAMのテーブルまたはビューを特定します。クエリ内の各[Your ... table name]プレースホルダーを、環境内の対応するオブジェクトに置き換えてください。現在の作業指示書ヘッダーに過去の変更がすべて含まれているとは限りません。
- 関連する作業指示書の変更が確定するたびに、XMLまたはCSVのトランザクションを公開するようDatabridge Outboundを設定します。作業指示書番号、イベント種別、イベント日時、ソースユーザー、優先度、作業指示書の種類、部門、完了予定日、設備、実作業時間、更新または抽出日時を含めてください。ステータス、作業時間、資材、チェックリスト、スケジュール、品質、承認署名、クローズでソースのトランザクション構造が異なる場合は、それぞれ別の送信マッピングを設定します。
- 各業務上の発生事象が個別のイベントレコードとして表されるよう、送信データを設定します。最新の作業指示書ステータスだけを送信しないでください。作業時間の記録、資材払出、チェックリスト項目、優先度変更など、繰り返し発生する事象は、発生ごとに1レコードを出力します。Databridgeのイベント種別を、必須の13種類のActivityNameのいずれかに対応付けてください。
- DatabridgeのXMLまたはCSV出力を管理されたステージング領域に格納し、クエリで参照するデータベースオブジェクトに読み込むか、クエリのソースオブジェクトをステージングテーブルに置き換えます。元のイベント識別子、作業指示書番号、イベント日時、ソースユーザー、LastDataUpdateを保持してください。DatabridgeがXMLを送信する場合は、アクティビティを対応付ける前に、繰り返し出現するイベントノードを行に変換します。CSVの場合は、区切り文字、引用符、文字コード、タイムスタンプ形式を検証してください。
- 接続固有のオブジェクト、日付パラメーター、会社の絞り込み条件に関するクエリ内のプレースホルダーを置き換えます。クエリでは、アクティビティごとに正規化したイベントソースを使い、UNION ALLで結果を結合します。各ブロックで使うソース列のデータ型に互換性があることを確認してください。推奨属性をソースから取得できない場合は、値を作り出さず、その属性にNULLを返してください。
- まず約3~6か月分の期間でクエリを実行します。結果に必須列のWorkOrderNumber、ActivityName、EventTimestamp、SourceSystem、LastDataUpdateと、取得可能な推奨属性が含まれていることを確認してください。WorkOrderNumber、EventTimestamp、ActivityNameの順に並べ替え、異なるソース事象を表す重複行は残してください。
- 抽出した行数をDatabridgeの納品件数、ソースのトランザクション件数、Hexagon EAM内の作業指示書のサンプルと照合します。ステータス履歴の欠落、重複納品、無効なタイムスタンプ、指定期間外のイベントを調査してください。同じソースイベントが複数回納品された場合に限り、一貫した重複排除ルールを適用します。
- 最終結果をUTF-8のCSV、またはProcessMindが対応する別のイベントログ形式でエクスポートします。1行につき1イベントとし、タイムゾーンを統一したタイムスタンプを使用します。WorkOrderNumberをケース識別子、ActivityNameをアクティビティ、EventTimestampをイベント日時としてマッピングします。ファイルをProcessMindにアップロードし、イベントモデルで13種類すべてのアクティビティ名を利用できることを確認してください。
設定
- Hexagon EAM Databridge Outboundを設定し、イベント単位のXMLまたはCSVを送信します。トランザクション名、管理画面、メニューのパスは、インストールされているHexagon EAMのリリースによって異なります。特定のリリースのパスを前提とせず、[お使いのシステムに合わせて設定]を使用してください。
- WorkOrderNumberをProcessMindのケース識別子、ActivityNameをアクティビティ項目、EventTimestampをイベント日時として設定します。SourceSystemにはHexagon EAMを入力し、LastDataUpdateには抽出または更新の日時を設定してください。
- 次の13種類すべてのアクティビティについて、送信マッピングを設定します:作業指示書作成、優先度更新、作業指示書承認、資材依頼作成、作業指示書スケジュール設定、作業指示書開始、資材払出、作業時間記録、チェックリスト項目確認、作業指示書完了、品質管理合格、作業指示書承認署名、作業指示書クローズ。
- 過去の発生記録を保持してください。現在のステータス項目だけでは、ステータスの変更、優先度の更新、作業時間の記録、資材払出、チェックリストの確認、承認、承認署名をすべて再現できません。
- 初回抽出では3~6か月の期間を指定します。増分読み込みでは、Databridgeの納品記録またはLastDataUpdateのウォーターマークを使い、遅れて到着するトランザクションに備えて期間に少し重なりを持たせてください。
- 会社、拠点、組織、作業指示書の種類、部門、ステータスによる絞り込みは、分析に必要な場合にのみ適用します。組織固有の制限には[Your company filter]または[お使いのシステムに合わせて設定]を使用してください。
- ライフサイクル全体を分析する場合は、クローズ済みの作業指示書も含めてください。未完了の作業指示書だけに絞ると、完了、品質、承認署名、クローズのアクティビティが除外されます。
- タイムゾーンの扱いを明示的に設定します。ProcessMindにアップロードする前に、すべてのソースタイムスタンプを合意した1つのタイムゾーンに変換し、可能な場合は元のタイムゾーンまたはオフセットも保持してください。
- 大規模なデータセットでは、ソース側で絞り込み、抽出期間を限定し、イベント日時と作業指示書番号にインデックスを設定するかパーティション分割を行い、変換前にDatabridgeファイルをステージングします。過去のXMLデータ全体を繰り返し解析しないでください。
- 前提条件として、Databridge Outboundが利用可能であること、関連するEAMデータの読み取りが許可されていること、送信先またはステージングデータベースにアクセスできること、作業指示書、ステータス、資材、作業時間、チェックリスト、スケジュール、承認、品質、承認署名、クローズの各データにアクセスできることが必要です。
- 必要な業務イベントを標準のDatabridgeトランザクションで取得できない場合は、明示的なイベント行を出力するソースビューまたはステージング変換を設定してください。ProcessMindは、他の行から欠落したアクティビティを推測しません。
クエリの例 sql
WITH
created_events AS (
SELECT
CAST(c.[WorkOrderNumber] AS VARCHAR(100)) AS WorkOrderNumber,
CAST('Work Order Created' AS VARCHAR(100)) AS ActivityName,
CAST(c.[CreatedTimestamp] AS TIMESTAMP) AS EventTimestamp,
CAST('Hexagon EAM' AS VARCHAR(100)) AS SourceSystem,
CAST(c.[LastDataUpdate] AS TIMESTAMP) AS LastDataUpdate,
CAST(c.[WorkOrderType] AS VARCHAR(100)) AS WorkOrderType,
CAST(c.[PriorityCode] AS VARCHAR(100)) AS PriorityCode,
CAST(c.[MaintenanceDepartment] AS VARCHAR(100)) AS MaintenanceDepartment,
CAST(c.[CreatedBy] AS VARCHAR(100)) AS UpdatedBy,
CAST(c.[TargetCompletionDate] AS TIMESTAMP) AS TargetCompletionDate,
CAST(c.[AssetCode] AS VARCHAR(100)) AS AssetCode,
CAST(c.[ActualLaborHours] AS DECIMAL(18,2)) AS ActualLaborHours
FROM [Your work order creation table or view] c
WHERE c.[CreatedTimestamp] >= CAST('[Start date parameter]' AS TIMESTAMP)
AND c.[CreatedTimestamp] < CAST('[End date parameter]' AS TIMESTAMP)
AND [Your company filter]
),
priority_events AS (
SELECT
CAST(p.[WorkOrderNumber] AS VARCHAR(100)) AS WorkOrderNumber,
CAST('Priority Updated' AS VARCHAR(100)) AS ActivityName,
CAST(p.[PriorityChangedTimestamp] AS TIMESTAMP) AS EventTimestamp,
CAST('Hexagon EAM' AS VARCHAR(100)) AS SourceSystem,
CAST(p.[LastDataUpdate] AS TIMESTAMP) AS LastDataUpdate,
CAST(w.[WorkOrderType] AS VARCHAR(100)) AS WorkOrderType,
CAST(p.[NewPriorityCode] AS VARCHAR(100)) AS PriorityCode,
CAST(w.[MaintenanceDepartment] AS VARCHAR(100)) AS MaintenanceDepartment,
CAST(p.[UpdatedBy] AS VARCHAR(100)) AS UpdatedBy,
CAST(w.[TargetCompletionDate] AS TIMESTAMP) AS TargetCompletionDate,
CAST(w.[AssetCode] AS VARCHAR(100)) AS AssetCode,
CAST(w.[ActualLaborHours] AS DECIMAL(18,2)) AS ActualLaborHours
FROM [Your priority history table or view] p
LEFT JOIN [Your work order current or history table or view] w ON w.[WorkOrderNumber] = p.[WorkOrderNumber]
WHERE p.[PriorityChangedTimestamp] >= CAST('[Start date parameter]' AS TIMESTAMP)
AND p.[PriorityChangedTimestamp] < CAST('[End date parameter]' AS TIMESTAMP)
AND [Your company filter]
),
approved_events AS (
SELECT
CAST(s.[WorkOrderNumber] AS VARCHAR(100)) AS WorkOrderNumber,
CAST('Work Order Approved' AS VARCHAR(100)) AS ActivityName,
CAST(s.[StatusChangedTimestamp] AS TIMESTAMP) AS EventTimestamp,
CAST('Hexagon EAM' AS VARCHAR(100)) AS SourceSystem,
CAST(s.[LastDataUpdate] AS TIMESTAMP) AS LastDataUpdate,
CAST(w.[WorkOrderType] AS VARCHAR(100)) AS WorkOrderType,
CAST(w.[PriorityCode] AS VARCHAR(100)) AS PriorityCode,
CAST(w.[MaintenanceDepartment] AS VARCHAR(100)) AS MaintenanceDepartment,
CAST(s.[UpdatedBy] AS VARCHAR(100)) AS UpdatedBy,
CAST(w.[TargetCompletionDate] AS TIMESTAMP) AS TargetCompletionDate,
CAST(w.[AssetCode] AS VARCHAR(100)) AS AssetCode,
CAST(w.[ActualLaborHours] AS DECIMAL(18,2)) AS ActualLaborHours
FROM [Your work order status history table or view] s
LEFT JOIN [Your work order current or history table or view] w ON w.[WorkOrderNumber] = s.[WorkOrderNumber]
WHERE s.[NewStatus] = '[Your approved status value]'
AND s.[StatusChangedTimestamp] >= CAST('[Start date parameter]' AS TIMESTAMP)
AND s.[StatusChangedTimestamp] < CAST('[End date parameter]' AS TIMESTAMP)
AND [Your company filter]
),
requisition_events AS (
SELECT
CAST(r.[WorkOrderNumber] AS VARCHAR(100)) AS WorkOrderNumber,
CAST('Material Requisition Created' AS VARCHAR(100)) AS ActivityName,
CAST(r.[RequisitionCreatedTimestamp] AS TIMESTAMP) AS EventTimestamp,
CAST('Hexagon EAM' AS VARCHAR(100)) AS SourceSystem,
CAST(r.[LastDataUpdate] AS TIMESTAMP) AS LastDataUpdate,
CAST(w.[WorkOrderType] AS VARCHAR(100)) AS WorkOrderType,
CAST(w.[PriorityCode] AS VARCHAR(100)) AS PriorityCode,
CAST(w.[MaintenanceDepartment] AS VARCHAR(100)) AS MaintenanceDepartment,
CAST(r.[CreatedBy] AS VARCHAR(100)) AS UpdatedBy,
CAST(w.[TargetCompletionDate] AS TIMESTAMP) AS TargetCompletionDate,
CAST(w.[AssetCode] AS VARCHAR(100)) AS AssetCode,
CAST(w.[ActualLaborHours] AS DECIMAL(18,2)) AS ActualLaborHours
FROM [Your material requisition table or view] r
LEFT JOIN [Your work order current or history table or view] w ON w.[WorkOrderNumber] = r.[WorkOrderNumber]
WHERE r.[RequisitionCreatedTimestamp] >= CAST('[Start date parameter]' AS TIMESTAMP)
AND r.[RequisitionCreatedTimestamp] < CAST('[End date parameter]' AS TIMESTAMP)
AND [Your company filter]
),
scheduled_events AS (
SELECT
CAST(a.[WorkOrderNumber] AS VARCHAR(100)) AS WorkOrderNumber,
CAST('Work Order Scheduled' AS VARCHAR(100)) AS ActivityName,
CAST(a.[ScheduledTimestamp] AS TIMESTAMP) AS EventTimestamp,
CAST('Hexagon EAM' AS VARCHAR(100)) AS SourceSystem,
CAST(a.[LastDataUpdate] AS TIMESTAMP) AS LastDataUpdate,
CAST(w.[WorkOrderType] AS VARCHAR(100)) AS WorkOrderType,
CAST(w.[PriorityCode] AS VARCHAR(100)) AS PriorityCode,
CAST(w.[MaintenanceDepartment] AS VARCHAR(100)) AS MaintenanceDepartment,
CAST(a.[UpdatedBy] AS VARCHAR(100)) AS UpdatedBy,
CAST(a.[ScheduledStartDate] AS TIMESTAMP) AS TargetCompletionDate,
CAST(w.[AssetCode] AS VARCHAR(100)) AS AssetCode,
CAST(w.[ActualLaborHours] AS DECIMAL(18,2)) AS ActualLaborHours
FROM [Your work order scheduling table or view] a
LEFT JOIN [Your work order current or history table or view] w ON w.[WorkOrderNumber] = a.[WorkOrderNumber]
WHERE a.[ScheduledTimestamp] >= CAST('[Start date parameter]' AS TIMESTAMP)
AND a.[ScheduledTimestamp] < CAST('[End date parameter]' AS TIMESTAMP)
AND [Your company filter]
),
started_events AS (
SELECT
CAST(s.[WorkOrderNumber] AS VARCHAR(100)) AS WorkOrderNumber,
CAST('Work Order Started' AS VARCHAR(100)) AS ActivityName,
CAST(s.[StatusChangedTimestamp] AS TIMESTAMP) AS EventTimestamp,
CAST('Hexagon EAM' AS VARCHAR(100)) AS SourceSystem,
CAST(s.[LastDataUpdate] AS TIMESTAMP) AS LastDataUpdate,
CAST(w.[WorkOrderType] AS VARCHAR(100)) AS WorkOrderType,
CAST(w.[PriorityCode] AS VARCHAR(100)) AS PriorityCode,
CAST(w.[MaintenanceDepartment] AS VARCHAR(100)) AS MaintenanceDepartment,
CAST(s.[UpdatedBy] AS VARCHAR(100)) AS UpdatedBy,
CAST(w.[TargetCompletionDate] AS TIMESTAMP) AS TargetCompletionDate,
CAST(w.[AssetCode] AS VARCHAR(100)) AS AssetCode,
CAST(w.[ActualLaborHours] AS DECIMAL(18,2)) AS ActualLaborHours
FROM [Your work order status history table or view] s
LEFT JOIN [Your work order current or history table or view] w ON w.[WorkOrderNumber] = s.[WorkOrderNumber]
WHERE s.[NewStatus] IN ('[Your in progress status value]', '[Your started status value]')
AND s.[StatusChangedTimestamp] >= CAST('[Start date parameter]' AS TIMESTAMP)
AND s.[StatusChangedTimestamp] < CAST('[End date parameter]' AS TIMESTAMP)
AND [Your company filter]
),
issued_events AS (
SELECT
CAST(i.[WorkOrderNumber] AS VARCHAR(100)) AS WorkOrderNumber,
CAST('Material Issued' AS VARCHAR(100)) AS ActivityName,
CAST(i.[IssueTimestamp] AS TIMESTAMP) AS EventTimestamp,
CAST('Hexagon EAM' AS VARCHAR(100)) AS SourceSystem,
CAST(i.[LastDataUpdate] AS TIMESTAMP) AS LastDataUpdate,
CAST(w.[WorkOrderType] AS VARCHAR(100)) AS WorkOrderType,
CAST(w.[PriorityCode] AS VARCHAR(100)) AS PriorityCode,
CAST(w.[MaintenanceDepartment] AS VARCHAR(100)) AS MaintenanceDepartment,
CAST(i.[IssuedBy] AS VARCHAR(100)) AS UpdatedBy,
CAST(w.[TargetCompletionDate] AS TIMESTAMP) AS TargetCompletionDate,
CAST(w.[AssetCode] AS VARCHAR(100)) AS AssetCode,
CAST(w.[ActualLaborHours] AS DECIMAL(18,2)) AS ActualLaborHours
FROM [Your material issue table or view] i
LEFT JOIN [Your work order current or history table or view] w ON w.[WorkOrderNumber] = i.[WorkOrderNumber]
WHERE i.[IssueTimestamp] >= CAST('[Start date parameter]' AS TIMESTAMP)
AND i.[IssueTimestamp] < CAST('[End date parameter]' AS TIMESTAMP)
AND [Your company filter]
),
labor_events AS (
SELECT
CAST(l.[WorkOrderNumber] AS VARCHAR(100)) AS WorkOrderNumber,
CAST('Labor Hours Recorded' AS VARCHAR(100)) AS ActivityName,
CAST(l.[LaborEntryTimestamp] AS TIMESTAMP) AS EventTimestamp,
CAST('Hexagon EAM' AS VARCHAR(100)) AS SourceSystem,
CAST(l.[LastDataUpdate] AS TIMESTAMP) AS LastDataUpdate,
CAST(w.[WorkOrderType] AS VARCHAR(100)) AS WorkOrderType,
CAST(w.[PriorityCode] AS VARCHAR(100)) AS PriorityCode,
CAST(w.[MaintenanceDepartment] AS VARCHAR(100)) AS MaintenanceDepartment,
CAST(l.[RecordedBy] AS VARCHAR(100)) AS UpdatedBy,
CAST(w.[TargetCompletionDate] AS TIMESTAMP) AS TargetCompletionDate,
CAST(w.[AssetCode] AS VARCHAR(100)) AS AssetCode,
CAST(l.[LaborHours] AS DECIMAL(18,2)) AS ActualLaborHours
FROM [Your labor transaction table or view] l
LEFT JOIN [Your work order current or history table or view] w ON w.[WorkOrderNumber] = l.[WorkOrderNumber]
WHERE l.[LaborEntryTimestamp] >= CAST('[Start date parameter]' AS TIMESTAMP)
AND l.[LaborEntryTimestamp] < CAST('[End date parameter]' AS TIMESTAMP)
AND [Your company filter]
),
checklist_events AS (
SELECT
CAST(k.[WorkOrderNumber] AS VARCHAR(100)) AS WorkOrderNumber,
CAST('Checklist Item Verified' AS VARCHAR(100)) AS ActivityName,
CAST(k.[VerifiedTimestamp] AS TIMESTAMP) AS EventTimestamp,
CAST('Hexagon EAM' AS VARCHAR(100)) AS SourceSystem,
CAST(k.[LastDataUpdate] AS TIMESTAMP) AS LastDataUpdate,
CAST(w.[WorkOrderType] AS VARCHAR(100)) AS WorkOrderType,
CAST(w.[PriorityCode] AS VARCHAR(100)) AS PriorityCode,
CAST(w.[MaintenanceDepartment] AS VARCHAR(100)) AS MaintenanceDepartment,
CAST(k.[VerifiedBy] AS VARCHAR(100)) AS UpdatedBy,
CAST(w.[TargetCompletionDate] AS TIMESTAMP) AS TargetCompletionDate,
CAST(w.[AssetCode] AS VARCHAR(100)) AS AssetCode,
CAST(w.[ActualLaborHours] AS DECIMAL(18,2)) AS ActualLaborHours
FROM [Your checklist verification table or view] k
LEFT JOIN [Your work order current or history table or view] w ON w.[WorkOrderNumber] = k.[WorkOrderNumber]
WHERE k.[VerifiedTimestamp] >= CAST('[Start date parameter]' AS TIMESTAMP)
AND k.[VerifiedTimestamp] < CAST('[End date parameter]' AS TIMESTAMP)
AND [Your company filter]
),
completed_events AS (
SELECT
CAST(s.[WorkOrderNumber] AS VARCHAR(100)) AS WorkOrderNumber,
CAST('Work Order Completed' AS VARCHAR(100)) AS ActivityName,
CAST(s.[StatusChangedTimestamp] AS TIMESTAMP) AS EventTimestamp,
CAST('Hexagon EAM' AS VARCHAR(100)) AS SourceSystem,
CAST(s.[LastDataUpdate] AS TIMESTAMP) AS LastDataUpdate,
CAST(w.[WorkOrderType] AS VARCHAR(100)) AS WorkOrderType,
CAST(w.[PriorityCode] AS VARCHAR(100)) AS PriorityCode,
CAST(w.[MaintenanceDepartment] AS VARCHAR(100)) AS MaintenanceDepartment,
CAST(s.[UpdatedBy] AS VARCHAR(100)) AS UpdatedBy,
CAST(w.[TargetCompletionDate] AS TIMESTAMP) AS TargetCompletionDate,
CAST(w.[AssetCode] AS VARCHAR(100)) AS AssetCode,
CAST(w.[ActualLaborHours] AS DECIMAL(18,2)) AS ActualLaborHours
FROM [Your work order status history table or view] s
LEFT JOIN [Your work order current or history table or view] w ON w.[WorkOrderNumber] = s.[WorkOrderNumber]
WHERE s.[NewStatus] = '[Your completed status value]'
AND s.[StatusChangedTimestamp] >= CAST('[Start date parameter]' AS TIMESTAMP)
AND s.[StatusChangedTimestamp] < CAST('[End date parameter]' AS TIMESTAMP)
AND [Your company filter]
),
quality_events AS (
SELECT
CAST(q.[WorkOrderNumber] AS VARCHAR(100)) AS WorkOrderNumber,
CAST('Quality Control Passed' AS VARCHAR(100)) AS ActivityName,
CAST(q.[QualityApprovalTimestamp] AS TIMESTAMP) AS EventTimestamp,
CAST('Hexagon EAM' AS VARCHAR(100)) AS SourceSystem,
CAST(q.[LastDataUpdate] AS TIMESTAMP) AS LastDataUpdate,
CAST(w.[WorkOrderType] AS VARCHAR(100)) AS WorkOrderType,
CAST(w.[PriorityCode] AS VARCHAR(100)) AS PriorityCode,
CAST(w.[MaintenanceDepartment] AS VARCHAR(100)) AS MaintenanceDepartment,
CAST(q.[ApprovedBy] AS VARCHAR(100)) AS UpdatedBy,
CAST(w.[TargetCompletionDate] AS TIMESTAMP) AS TargetCompletionDate,
CAST(w.[AssetCode] AS VARCHAR(100)) AS AssetCode,
CAST(w.[ActualLaborHours] AS DECIMAL(18,2)) AS ActualLaborHours
FROM [Your quality approval table or view] q
LEFT JOIN [Your work order current or history table or view] w ON w.[WorkOrderNumber] = q.[WorkOrderNumber]
WHERE q.[QualityResult] = '[Your quality passed value]'
AND q.[QualityApprovalTimestamp] >= CAST('[Start date parameter]' AS TIMESTAMP)
AND q.[QualityApprovalTimestamp] < CAST('[End date parameter]' AS TIMESTAMP)
AND [Your company filter]
),
signoff_events AS (
SELECT
CAST(f.[WorkOrderNumber] AS VARCHAR(100)) AS WorkOrderNumber,
CAST('Work Order Signed Off' AS VARCHAR(100)) AS ActivityName,
CAST(f.[SignOffTimestamp] AS TIMESTAMP) AS EventTimestamp,
CAST('Hexagon EAM' AS VARCHAR(100)) AS SourceSystem,
CAST(f.[LastDataUpdate] AS TIMESTAMP) AS LastDataUpdate,
CAST(w.[WorkOrderType] AS VARCHAR(100)) AS WorkOrderType,
CAST(w.[PriorityCode] AS VARCHAR(100)) AS PriorityCode,
CAST(w.[MaintenanceDepartment] AS VARCHAR(100)) AS MaintenanceDepartment,
CAST(f.[SignedOffBy] AS VARCHAR(100)) AS UpdatedBy,
CAST(w.[TargetCompletionDate] AS TIMESTAMP) AS TargetCompletionDate,
CAST(w.[AssetCode] AS VARCHAR(100)) AS AssetCode,
CAST(w.[ActualLaborHours] AS DECIMAL(18,2)) AS ActualLaborHours
FROM [Your work order sign-off table or view] f
LEFT JOIN [Your work order current or history table or view] w ON w.[WorkOrderNumber] = f.[WorkOrderNumber]
WHERE f.[SignOffTimestamp] >= CAST('[Start date parameter]' AS TIMESTAMP)
AND f.[SignOffTimestamp] < CAST('[End date parameter]' AS TIMESTAMP)
AND [Your company filter]
),
closed_events AS (
SELECT
CAST(s.[WorkOrderNumber] AS VARCHAR(100)) AS WorkOrderNumber,
CAST('Work Order Closed' AS VARCHAR(100)) AS ActivityName,
CAST(s.[StatusChangedTimestamp] AS TIMESTAMP) AS EventTimestamp,
CAST('Hexagon EAM' AS VARCHAR(100)) AS SourceSystem,
CAST(s.[LastDataUpdate] AS TIMESTAMP) AS LastDataUpdate,
CAST(w.[WorkOrderType] AS VARCHAR(100)) AS WorkOrderType,
CAST(w.[PriorityCode] AS VARCHAR(100)) AS PriorityCode,
CAST(w.[MaintenanceDepartment] AS VARCHAR(100)) AS MaintenanceDepartment,
CAST(s.[UpdatedBy] AS VARCHAR(100)) AS UpdatedBy,
CAST(w.[TargetCompletionDate] AS TIMESTAMP) AS TargetCompletionDate,
CAST(w.[AssetCode] AS VARCHAR(100)) AS AssetCode,
CAST(w.[ActualLaborHours] AS DECIMAL(18,2)) AS ActualLaborHours
FROM [Your work order status history table or view] s
LEFT JOIN [Your work order current or history table or view] w ON w.[WorkOrderNumber] = s.[WorkOrderNumber]
WHERE s.[NewStatus] = '[Your closed status value]'
AND s.[StatusChangedTimestamp] >= CAST('[Start date parameter]' AS TIMESTAMP)
AND s.[StatusChangedTimestamp] < CAST('[End date parameter]' AS TIMESTAMP)
AND [Your company filter]
)
SELECT WorkOrderNumber, ActivityName, EventTimestamp, SourceSystem, LastDataUpdate, WorkOrderType, PriorityCode, MaintenanceDepartment, UpdatedBy, TargetCompletionDate, AssetCode, ActualLaborHours FROM created_events
UNION ALL
SELECT WorkOrderNumber, ActivityName, EventTimestamp, SourceSystem, LastDataUpdate, WorkOrderType, PriorityCode, MaintenanceDepartment, UpdatedBy, TargetCompletionDate, AssetCode, ActualLaborHours FROM priority_events
UNION ALL
SELECT WorkOrderNumber, ActivityName, EventTimestamp, SourceSystem, LastDataUpdate, WorkOrderType, PriorityCode, MaintenanceDepartment, UpdatedBy, TargetCompletionDate, AssetCode, ActualLaborHours FROM approved_events
UNION ALL
SELECT WorkOrderNumber, ActivityName, EventTimestamp, SourceSystem, LastDataUpdate, WorkOrderType, PriorityCode, MaintenanceDepartment, UpdatedBy, TargetCompletionDate, AssetCode, ActualLaborHours FROM requisition_events
UNION ALL
SELECT WorkOrderNumber, ActivityName, EventTimestamp, SourceSystem, LastDataUpdate, WorkOrderType, PriorityCode, MaintenanceDepartment, UpdatedBy, TargetCompletionDate, AssetCode, ActualLaborHours FROM scheduled_events
UNION ALL
SELECT WorkOrderNumber, ActivityName, EventTimestamp, SourceSystem, LastDataUpdate, WorkOrderType, PriorityCode, MaintenanceDepartment, UpdatedBy, TargetCompletionDate, AssetCode, ActualLaborHours FROM started_events
UNION ALL
SELECT WorkOrderNumber, ActivityName, EventTimestamp, SourceSystem, LastDataUpdate, WorkOrderType, PriorityCode, MaintenanceDepartment, UpdatedBy, TargetCompletionDate, AssetCode, ActualLaborHours FROM issued_events
UNION ALL
SELECT WorkOrderNumber, ActivityName, EventTimestamp, SourceSystem, LastDataUpdate, WorkOrderType, PriorityCode, MaintenanceDepartment, UpdatedBy, TargetCompletionDate, AssetCode, ActualLaborHours FROM labor_events
UNION ALL
SELECT WorkOrderNumber, ActivityName, EventTimestamp, SourceSystem, LastDataUpdate, WorkOrderType, PriorityCode, MaintenanceDepartment, UpdatedBy, TargetCompletionDate, AssetCode, ActualLaborHours FROM checklist_events
UNION ALL
SELECT WorkOrderNumber, ActivityName, EventTimestamp, SourceSystem, LastDataUpdate, WorkOrderType, PriorityCode, MaintenanceDepartment, UpdatedBy, TargetCompletionDate, AssetCode, ActualLaborHours FROM completed_events
UNION ALL
SELECT WorkOrderNumber, ActivityName, EventTimestamp, SourceSystem, LastDataUpdate, WorkOrderType, PriorityCode, MaintenanceDepartment, UpdatedBy, TargetCompletionDate, AssetCode, ActualLaborHours FROM quality_events
UNION ALL
SELECT WorkOrderNumber, ActivityName, EventTimestamp, SourceSystem, LastDataUpdate, WorkOrderType, PriorityCode, MaintenanceDepartment, UpdatedBy, TargetCompletionDate, AssetCode, ActualLaborHours FROM signoff_events
UNION ALL
SELECT WorkOrderNumber, ActivityName, EventTimestamp, SourceSystem, LastDataUpdate, WorkOrderType, PriorityCode, MaintenanceDepartment, UpdatedBy, TargetCompletionDate, AssetCode, ActualLaborHours FROM closed_events
ORDER BY WorkOrderNumber, EventTimestamp, ActivityName; 準備はできましたか?
このテンプレートに沿って保全データを具体的な改善案につなげましょう。データ準備の際に技術的な質問があれば、担当チームがサポートします。
設備保全の遅延を減らし、パフォーマンスを向上
サイクルタイムを30%短縮し、見えにくいボトルネックを解消します。
クレジットカード不要。数分で設定できます。