設備保全データテンプレート
設備保全データテンプレート
- 保全ログに必要なデータ項目
- 標準的なプロセスの節目と作業指示書の段階
- 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 | 保全対象となる設備または施設の一意の識別子です。 | ||
| 説明 この属性により、作業指示を特定の設備または場所に関連付けます。資産ごとの故障頻度を分析し、問題を繰り返し起こす設備や交換が必要な設備を特定できます。 重要な理由 資産の信頼性指標の算出と、保全作業が集中している場所の把握に欠かせません。 入手先 Hexagon EAMテーブルR5EVENTS、フィールドEVT_OBJECT 例 PUMP-001HVAC-204FLEET-99CONVEYOR-A | |||
| 部門 MaintenanceDepartment | 作業を実行する部門または作業センターです。 | ||
| 説明 この属性は、作業指示を担当するチームまたは保全拠点を示します。例として、電気、機械、施設管理などがあります。異なる技術チーム間でパフォーマンスを比較できます。 重要な理由 技術者の労働生産性ダッシュボードを支援し、異なる専門分野間でリソースを効果的に配分するのに役立ちます。 入手先 Hexagon EAMのR5EVENTSテーブル、EVT_MRCフィールド 例 電気整備工場機械保全施設管理車両保全 | |||
| SLA状態 SLAState | 作業指示がサービスレベル合意を満たしたかどうかを示します。 | ||
| 説明 この計算属性は、実際の完了日と目標完了日を比較します。ケースを「SLA内」または「違反」に分類し、請負業者と社内のパフォーマンスを簡単にレポートできるようにします。 重要な理由 SLA遵守率KPIの直接的なデータソースです。 入手先 算出式:実際の終了日 <= 目標日 例 SLA以内SLA違反オープン | |||
| 予防保全かどうか IsPreventive | 作業指示が予防保全であるかどうかを示すフラグです。 | ||
| 説明 この真偽値属性により、作業指示を簡単に絞り込み、分類できます。計画的な作業と事後対応の修理を分けることで、予防保全比率KPIを簡単に算出できます。 重要な理由 予防保全比率分析ダッシュボードの基本的な分類軸です。 入手先 WorkOrderTypeから導出 例 truefalse | |||
| 作成日 DateCreated | 作業指示が最初に生成された日付です。 | ||
| 説明 この属性は、作業指示のライフサイクルの開始点を示します。計画までの平均時間の算出や、バックログ項目の経過期間の判定に使用する基準日です。 重要な理由 保全計画速度ダッシュボードとバックログ経過期間KPIに必要です。 入手先 Hexagon EAMテーブルR5EVENTS、フィールドEVT_CREATED 例 2023-09-012023-09-15 | |||
| 作業指示の説明 WorkOrderDescription | 保全作業の概要を短くまとめたテキストです。 | ||
| 説明 この属性には、問題の件名または短い説明が含まれます。特定の問題事例を詳しく調べる際や、非構造化テキストからパターンを特定する際に、分析担当者へ背景情報を提供します。 重要な理由 プロセスデータを人が確認する際に必要な背景情報を提供します。 入手先 Hexagon EAMテーブルR5EVENTS、フィールドEVT_DESC 例 ポンプシールの漏れを修理HVACの月次点検コンベヤーベルトを交換 | |||
| 品質管理に合格 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 | |||
| 作業指示を開始 | 技術者が資産に対する実作業を開始した状態です。通常は「In Progress」へのステータス変更、または労務入力の最初のタイムスタンプで記録されます。 | ||
| 重要な理由 バックログ計算の終点であり、実作業時間の測定開始点です。SLA遵守率の算出に欠かせません。 入手先 Hexagon EAMのr5statuslog。「In Progress」への遷移(通常はステータスコード「I」または「IP」)。 取得 r5statuslogでトランザクションが実行されたときに記録 イベントタイプ explicit | |||
| 労働時間を記録 | 技術者が作業指示に対して作業時間を入力します。このアクティビティは、1つの案件で複数回発生する場合があります。 | ||
| 重要な理由 労働時間差異と技術者の労働生産性のダッシュボードの基盤となります。計画に対する実際の作業量を明らかにします。 入手先 Hexagon EAMのr5booklaborテーブル。各行が作業指示のタイムシート入力を表します。 取得 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 | |||
抽出ガイド
ステップ
- Advanced Reporting Authoring権限を持つユーザーアカウントでHexagon EAMアプリケーションにログインします。
- 通常はAdministrationまたはReportsメニューにあるReportsモジュールに移動し、Advanced Reportingインターフェース(Cognosまたは組み込みのSQLレポートビルダー)を起動します。
- 新しいレポート作成ウィザードを開始し、データソースの種類として「SQL」または「Free-hand SQL」を選択します。これにより、標準のビジネスオブジェクトモデルではなく、データベースに直接クエリを実行できます。
- 下記のQueryセクションに記載されたSQLスクリプトをコピーし、データセット定義ウィンドウに貼り付けます。
- [Your Organization Code]や日付範囲などのプレースホルダーを、ご利用の環境に適した具体的な値に置き換えます。
- エディターでクエリ構文を検証し、データベースプラットフォーム(OracleまたはSQL Server)がUNION文を受け付けることを確認します。
- 生成された列をレポートレイアウトの一覧に対応付け、WorkOrderNumber、ActivityName、EventTimestampが明確に表示されるようにします。
- 結合セルや書式設定されたヘッダーのない表形式を維持するため、レポートのエクスポート形式をCSVまたはExcelに設定します。
- 検証期間(例:直近100件の作業指示書)でレポートを実行し、データ構造を確認します。
- 検証が完了したら、レポートを定期実行するようスケジュールするか、抽出対象の全期間に対して実行します。
- 出力ファイルをダウンロードし、日付形式を確認します。正確な順序付けのため、可能であればタイムスタンプに秒まで含めます。
- 生成したCSVファイルをProcessMindにインポートし、SourceSystem列をケース属性として、ActivityName列をアクティビティ分類子として対応付けます。
設定
- Date Range:クエリのパフォーマンスを維持するため、EVT_DATE(作成日)で直近6~12か月の期間に絞り込むことを推奨します。
- Organization Filter:Hexagon EAMは複数組織で運用されることが多いため、他の事業部門のデータが混入しないよう、対象のOrganization Codeによるフィルターをクエリに含めます。
- Database Syntax:下記のクエリでは可能な限りANSI標準SQLを使用していますが、Hexagon EAMは通常OracleまたはSQL Server上で稼働します。日付関数(SYSDATEとGETDATEなど)の調整が必要になる場合があります。
- Status Configuration:Status Codes(例:「A」「C」「R」)とActivity Names(例:「Work Order Approved」)の対応付けは、ご利用のシステム固有のステータス設定と一致させる必要があります。
- Permissions:レポートを実行するユーザーアカウントには、R5EVENTS、R5EVENTSTATUS、R5BOOKEDHOURS、R5TRANSACTIONS、R5AUDITVALUESテーブルへの読み取りアクセス権が必要です。
a サンプルクエリ 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)を使用します。システム設定(画面:Administration -> Codes)を確認し、1文字または2文字のコードを、Approved、Scheduled、Started、Completed、QC Passed、Signed Off、Closedの各アクティビティに対応付けます。
- クエリを設定します:下記のSQLスクリプトを開き、プレースホルダーのステータスコード(例:「APPR」「SCHD」「COMP」)を実際のシステムコードに置き換えます。
- 日付範囲を設定します:WHERE句を更新し、EVT_DATEまたはTRN_DATEで対象期間を絞り込みます。クエリのパフォーマンスを確保するため、通常は直近12か月を指定します。
- 抽出を実行します:SQLクライアント(SQL Developer、SSMS、またはToad)でクエリを実行します。
- 監査データを確認します:「Priority Updated」アクティビティの行が返されない場合は、EAMシステム設定でR5EVENTSテーブルの監査機能が有効になっているか確認します。
- チェックリストデータを検証します:ご利用のバージョンでR5CHECKLISTVALUESが正しいテーブルであることを確認します。旧バージョンでは、タスクレベルの完了情報にR5ACTIVITIESを使用する場合があります。
- データをエクスポートします:結果セットをCSVまたはParquetファイルとして保存します。解析エラーを避けるため、Timestamp列をISO 8601(YYYY-MM-DD HH:MM:SS)形式にします。
- ProcessMindにインポートします:フラットファイルをProcessMindインターフェースにアップロードし、WorkOrderNumberをCase ID、ActivityNameをActivity、EventTimestampをTimestampに対応付けます。
設定
- 期間フィルター:現在のクエリでは、すべてのデータが選択されます。基盤となるCTEまたは各SELECTブロックに、WHERE EVT_DATE >= SYSDATE - 365(Oracle)やGetDate() - 365(SQL Server)などのフィルターを追加することを強く推奨します。
- ステータスコードのマッピング:SQL内の文字列リテラル(例:'APPR'、'COMP'、'QC')を、R5STATUSセットで定義されている実際のコードに置き換える必要があります。
- 監査設定:「Priority Updated」の抽出にはR5AUDITVALUESテーブルが使用されます。EVT_PRIORITY列の監査が無効になっている場合、このアクティビティは抽出されません。
- 組織/テナント:EAMインスタンスで複数の組織を管理している場合は、データが混在しないようにEVT_ORGまたはEVT_MRC(部門)のフィルターを追加してください。
- 言語:このクエリでは、標準的な英語の列見出しを前提としています。データベースでローカライズされた列名を使用している場合は、それに合わせて調整してください。
a サンプルクエリ 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がインストールされ、ライセンスが付与され、今回の抽出に必要な保全作業指示書データへのアクセスが許可されていることを確認します。Outboundトランザクションの設定、送信先、スケジュール実行機能、ソーステーブルまたはビューへのアクセスも確認します。メニュー名とトランザクション識別子はEAMのリリースによって異なるため、該当する管理メニューのパスには[Configure based on your system]を使用してください。
- 作業指示書ヘッダー、作業指示書のステータス履歴、優先度履歴、資材要求、資材出庫、作業時間トランザクション、チェックリストまたは検査結果、スケジュール割り当て、品質承認、承認記録、完了記録について、信頼できるHexagon EAMのテーブルまたはビューを特定します。クエリ内の各[Your ... table name]プレースホルダーを、ご利用の環境に対応するオブジェクトに置き換えます。現在の作業指示書ヘッダーだけで過去の変更を再現できるとは限りません。
- 関連する作業指示書の変更が確定するたびに、XMLまたはCSVのトランザクションを公開するようDatabridge Outboundを設定します。作業指示書番号、イベント種別、イベントタイムスタンプ、ソースユーザー、優先度、作業指示書タイプ、部門、完了予定日、資産、実績作業時間、更新または抽出のタイムスタンプを含めます。ステータス、作業時間、資材、チェックリスト、スケジュール、品質、承認、完了のイベントでソースのトランザクション構造が異なる場合は、個別のOutboundマッピングを設定します。
- 各業務上の発生事象が個別のイベントレコードとして表現されるよう、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個すべてのアクティビティ名がイベントモデルで利用できることを確認します。
設定
- イベント単位のXMLまたはCSV配信を行うよう、Hexagon EAM Databridge Outboundを設定します。正確なトランザクション名、管理画面、メニューパスはインストールされているHexagon EAMのリリースによって異なるため、リリース固有のパスを想定せず、[Configure based on your system]を使用してください。
- WorkOrderNumberをProcessMindのケース識別子、ActivityNameをアクティビティフィールド、EventTimestampをイベントタイムスタンプとして設定します。SourceSystemにはHexagon EAMを入力し、LastDataUpdateには抽出または更新の時刻を記録します。
- 13個すべてのアクティビティについてOutboundマッピングを設定します:Work Order Created、Priority Updated、Work Order Approved、Material Requisition Created、Work Order Scheduled、Work Order Started、Material Issued、Labor Hours Recorded、Checklist Item Verified、Work Order Completed、Quality Control Passed、Work Order Signed Off、Work Order Closed。
- 過去の発生事象を保持します。現在のステータスフィールドだけでは、すべてのステータス遷移、優先度更新、作業時間記録、資材出庫、チェックリスト検証、承認、承認記録を再現できません。
- 初回抽出には3~6か月の日付範囲を使用します。増分ロードでは、遅れて到着するトランザクションに備え、Databridgeの配信時刻またはLastDataUpdateをウォーターマークとして使用し、短い重複期間を設けます。
- 会社、サイト、組織、作業指示書タイプ、部門、ステータスのフィルターは、分析に必要な場合に限って適用します。組織固有の制限には[Your company filter]または[Configure based on your system]を使用します。
- 分析対象がライフサイクル全体に及ぶ場合は、完了済みの作業指示書を含めます。オープンな作業指示書だけに絞り込むと、完了、品質、承認、クローズのアクティビティが除外されます。
- タイムゾーン処理を明示的に設定します。ProcessMindにアップロードする前に、すべてのソースタイムスタンプを合意した1つのタイムゾーンに変換し、可能な場合は元のタイムゾーンまたはオフセットも保持します。
- 大規模なデータセットでは、ソース側で絞り込み、抽出期間を限定し、イベントタイムスタンプと作業指示書番号にインデックスまたはパーティションを設定し、変換前にDatabridgeファイルをステージングします。過去のXML全体を繰り返し解析することは避けてください。
- 必要な前提条件は、Databridge Outboundの利用環境、関連するEAMデータの読み取り権限、Outboundの送信先またはステージングデータベースへのアクセス、作業指示書、ステータス、資材、作業時間、チェックリスト、スケジュール、承認、品質、承認記録、完了データへのアクセスです。
- 必須の業務イベントをネイティブのDatabridgeトランザクションとして利用できない場合は、明示的なイベント行を1件出力するソースビューまたはステージング変換を設定します。ProcessMindは、他の行から欠落したアクティビティを推測しません。
a サンプルクエリ 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%短縮し、隠れたボトルネックをなくします。
クレジットカードは不要です。数分でセットアップできます。