Automation Data View Example

Using Views to Simplify Reporting

Creating Views Over Automation Entities

These views encapsulate filtering to specific Automation entities and selecting out all useful information from the JSON payload into named columns.

See Appendix for view SQL

Get All rows for a Single Data Hub Entity

This example gets all Automation Assignments. No filtering or JSON parsing is needed because that is done by the view.


                                                    

SELECT

sourceId AS [Automation ID],

AutomationName AS [Automation Name],

dateAddedInSourceSystem AS [Date Started],

DateEnded AS [Date Ended],

candidateId AS [ATS Candidate ID],

jobOrderId AS [ATS Job ID],

placementId AS [ATS Placement ID]

FROM DataHub_Automation_AutomationAssignments

Automation ID Automation Name Date Started Date Ended ATS Candidate ID ATS Job ID ATS Placement ID
1 Add Credentials 2024-01-01 2024-01-05 123 456 789
2 Email Reminder 2024-01-15   234 345 567

Filtering and Aggregating by Entity Specific Data

This example shows the count of Automations that have finished in 2024, broken down by entity.

				

SELECT EntityType AS [ATS Entity], COUNT(*) AS [Number of Automations Run]

FROM DataHub_Automation_AutomationAssignments

WHERE DateEnded >= '2024-01-01'

GROUP BY EntityType

			
ATS Entity Number of Autmations Completed
Candidate 5052
Job 145

Joining to ATS entities

This example uses the top level ATS entity id fields to join from Automation Assignments to Placements. The ATS entity ID fields will only be populated where a link exists, otherwise they will be empty.

			

SELECT

aa.sourceId AS [Automation ID],

aa.AutomationName AS [Automation Name],

j.title AS [Job Title],

c.name AS [Candidate Name],

p.fee AS [Placement Fee]

FROM DataHub_Automation_AutomationAssignments aa

JOIN dbo.Placement p ON p.placementId = aa.placementId

LEFT JOIN dbo.Candidate c ON c.candidateID = p.candidateID

LEFT JOIN dbo.JobOrder j ON j.jobOrderID = p.jobOrderID;

			
Automation ID Automation Name Job Title Candidate Name Placement Fee
1 Add Credentials Software Developer Jon Smith $1,234
2 Email Reminder Product Manager Mandy Jones $2,345

Putting it all Together

This example uses joins, filtering and aggregation to show placement value for candidates who interacted with Automations.

SELECT

aa.sourceId AS [Automation ID],

aa.AutomationName AS [Automation Name],

SUM(p.fee) AS [Placement Fees]

FROM DataHub_Automation_AutomationAssignments aa

LEFT JOIN dbo.Placement p ON p.placementId = aa.placementId

WHERE

aa.EntityType = 'Candidate'

AND aa.dateAddedInSourceSystem < p.dateAdded

GROUP BY

aa.sourceId,

aa.AutomationName;


                                                
Automation ID Automation Name Placement Fees
16 Update Candidate Skills 1,240,534
53 Notify Expired Credentials 340,534

Appendix

SQL to create views over all Automation entities

DROP VIEW IF EXISTS DataHub_Automation_Events;

GO

CREATE VIEW DataHub_Automation_Events AS

SELECT

sourceId,

entityTypeId,

entityTypeSchemaVersionId,

dateAddedInSourceSystem,

dateLastModifiedInSourceSystem,

isDeleted,

JSON_VALUE(payload, '$.Type') AS [Type],

JSON_VALUE(payload, '$.PageTitle') AS [PageTitle],

JSON_VALUE(payload, '$.Url') AS [Url],

JSON_VALUE(payload, '$.Description') AS [Description],

JSON_VALUE(payload, '$.TextMessageTemplate_Id') AS [TextMessageTemplate_Id],

JSON_VALUE(payload, '$.EmailTemplate_Id') AS [EmailTemplate_Id],

candidateId,

clientContactId,

clientCorporationId,

jobOrderId,

jobSubmissionId,

placementId,

leadId,

opportunityId,

corporateUserId,

noteId,

appointmentId,

payableChargeId,

billableChargeId

FROM dbo.EdsData

WHERE entityTypeId = (SELECT edsEntityTypeId FROM dbo.EdsEntityType WHERE name = 'Events' AND sourceSystemId = (SELECT edsSourceSystemId FROM dbo.EdsSourceSystem WHERE name = 'Automation'));

GO

DROP VIEW IF EXISTS DataHub_Automation_AutomationAssignments;

GO

CREATE VIEW DataHub_Automation_AutomationAssignments AS

SELECT

sourceId,

entityTypeId,

entityTypeSchemaVersionId,

dateAddedInSourceSystem,

dateLastModifiedInSourceSystem,

isDeleted,

JSON_VALUE(payload, '$.DateEnded') AS [DateEnded],

JSON_VALUE(payload, '$.Status') AS [Status],

JSON_VALUE(payload, '$.AutomationName') AS [AutomationName],

JSON_VALUE(payload, '$.EntityId') AS [EntityId],

JSON_VALUE(payload, '$.EntityType') AS [EntityType],

candidateId,

clientContactId,

clientCorporationId,

jobOrderId,

jobSubmissionId,

placementId,

leadId,

opportunityId,

corporateUserId,

noteId,

appointmentId,

payableChargeId,

billableChargeId

FROM dbo.EdsData

WHERE entityTypeId = (SELECT edsEntityTypeId FROM dbo.EdsEntityType WHERE name = 'AutomationAssignments' AND sourceSystemId = (SELECT edsSourceSystemId FROM dbo.EdsSourceSystem WHERE name = 'Automation'));

GO

DROP VIEW IF EXISTS DataHub_Automation_Surveys;

GO

CREATE VIEW DataHub_Automation_Surveys AS

SELECT

sourceId,

entityTypeId,

entityTypeSchemaVersionId,

dateAddedInSourceSystem,

dateLastModifiedInSourceSystem,

isDeleted,

JSON_VALUE(payload, '$.AddResponsesToNote') AS [AddResponsesToNote],

JSON_VALUE(payload, '$.SendSurveResponsesAsCsvEmails') AS [SendSurveResponsesAsCsvEmails],

JSON_VALUE(payload, '$.CustomerPageUrl') AS [CustomerPageUrl],

JSON_VALUE(payload, '$.Type') AS [Type],

JSON_VALUE(payload, '$.SendNotificationToOwner') AS [SendNotificationToOwner],

JSON_VALUE(payload, '$.SendNotification') AS [SendNotification],

JSON_VALUE(payload, '$.NoteAction') AS [NoteAction],

JSON_VALUE(payload, '$.SubmitLabel') AS [SubmitLabel],

JSON_VALUE(payload, '$.IntroText') AS [IntroText],

JSON_VALUE(payload, '$.NotificationMessage') AS [NotificationMessage],

JSON_VALUE(payload, '$.IsUnknownVisitorChat') AS [IsUnknownVisitorChat],

JSON_VALUE(payload, '$.CompletionMessage') AS [CompletionMessage],

JSON_VALUE(payload, '$.NotificationEmails') AS [NotificationEmails],

JSON_VALUE(payload, '$.ContactType') AS [ContactType],

JSON_VALUE(payload, '$.Name') AS [Name],

JSON_VALUE(payload, '$.EntityType') AS [EntityType],

candidateId,

clientContactId,

clientCorporationId,

jobOrderId,

jobSubmissionId,

placementId,

leadId,

opportunityId,

corporateUserId,

noteId,

appointmentId,

payableChargeId,

billableChargeId

FROM dbo.EdsData

WHERE entityTypeId = (SELECT edsEntityTypeId FROM dbo.EdsEntityType WHERE name = 'Surveys' AND sourceSystemId = (SELECT edsSourceSystemId FROM dbo.EdsSourceSystem WHERE name = 'Automation'));

GO

DROP VIEW IF EXISTS DataHub_Automation_SurveyQuestions;

GO

CREATE VIEW DataHub_Automation_SurveyQuestions AS

SELECT

sourceId,

entityTypeId,

entityTypeSchemaVersionId,

dateAddedInSourceSystem,

dateLastModifiedInSourceSystem,

isDeleted,

JSON_VALUE(payload, '$.IsRequired') AS [IsRequired],

JSON_VALUE(payload, '$.Order') AS [Order],

JSON_VALUE(payload, '$.Type') AS [Type],

JSON_VALUE(payload, '$.IntValue') AS [IntValue],

JSON_VALUE(payload, '$.SurveyBranchContainer_Id') AS [SurveyBranchContainer_Id],

JSON_VALUE(payload, '$.MinScaleText') AS [MinScaleText],

JSON_VALUE(payload, '$.Scale') AS [Scale],

JSON_VALUE(payload, '$.DisplayOption') AS [DisplayOption],

JSON_VALUE(payload, '$.SurveyBranch_Id') AS [SurveyBranch_Id],

JSON_VALUE(payload, '$.Survey_Id') AS [Survey_Id],

JSON_VALUE(payload, '$.MaxScaleText') AS [MaxScaleText],

JSON_VALUE(payload, '$.QuestionText') AS [QuestionText],

candidateId,

clientContactId,

clientCorporationId,

jobOrderId,

jobSubmissionId,

placementId,

leadId,

opportunityId,

corporateUserId,

noteId,

appointmentId,

payableChargeId,

billableChargeId

FROM dbo.EdsData

WHERE entityTypeId = (SELECT edsEntityTypeId FROM dbo.EdsEntityType WHERE name = 'SurveyQuestions' AND sourceSystemId = (SELECT edsSourceSystemId FROM dbo.EdsSourceSystem WHERE name = 'Automation'));

GO

DROP VIEW IF EXISTS DataHub_Automation_SurveyAnswers;

GO

CREATE VIEW DataHub_Automation_SurveyAnswers AS

SELECT

sourceId,

entityTypeId,

entityTypeSchemaVersionId,

dateAddedInSourceSystem,

dateLastModifiedInSourceSystem,

isDeleted,

JSON_VALUE(payload, '$.Order') AS [Order],

JSON_VALUE(payload, '$.Question_Id') AS [Question_Id],

JSON_VALUE(payload, '$.SurveyBranch_Id') AS [SurveyBranch_Id],

JSON_VALUE(payload, '$.AnswerText') AS [AnswerText],

candidateId,

clientContactId,

clientCorporationId,

jobOrderId,

jobSubmissionId,

placementId,

leadId,

opportunityId,

corporateUserId,

noteId,

appointmentId,

payableChargeId,

billableChargeId

FROM dbo.EdsData

WHERE entityTypeId = (SELECT edsEntityTypeId FROM dbo.EdsEntityType WHERE name = 'SurveyAnswers' AND sourceSystemId = (SELECT edsSourceSystemId FROM dbo.EdsSourceSystem WHERE name = 'Automation'));

GO

DROP VIEW IF EXISTS DataHub_Automation_SurveySubmittals;

GO

CREATE VIEW DataHub_Automation_SurveySubmittals AS

SELECT

sourceId,

entityTypeId,

entityTypeSchemaVersionId,

dateAddedInSourceSystem,

dateLastModifiedInSourceSystem,

isDeleted,

JSON_VALUE(payload, '$.AddedNotification') AS [AddedNotification],

JSON_VALUE(payload, '$.UnknownVisitorId') AS [UnknownVisitorId],

JSON_VALUE(payload, '$.Survey_Id') AS [Survey_Id],

JSON_VALUE(payload, '$.Candidate_Id') AS [Candidate_Id],

JSON_VALUE(payload, '$.AllQuestionsAnswered') AS [AllQuestionsAnswered],

JSON_VALUE(payload, '$.EntityId') AS [EntityId],

JSON_VALUE(payload, '$.Completed') AS [Completed],

candidateId,

clientContactId,

clientCorporationId,

jobOrderId,

jobSubmissionId,

placementId,

leadId,

opportunityId,

corporateUserId,

noteId,

appointmentId,

payableChargeId,

billableChargeId

FROM dbo.EdsData

WHERE entityTypeId = (SELECT edsEntityTypeId FROM dbo.EdsEntityType WHERE name = 'SurveySubmittals' AND sourceSystemId = (SELECT edsSourceSystemId FROM dbo.EdsSourceSystem WHERE name = 'Automation'));

GO

DROP VIEW IF EXISTS DataHub_Automation_SurveyAnswerSubmittals;

GO

CREATE VIEW DataHub_Automation_SurveyAnswerSubmittals AS

SELECT

sourceId,

entityTypeId,

entityTypeSchemaVersionId,

dateAddedInSourceSystem,

dateLastModifiedInSourceSystem,

isDeleted,

JSON_VALUE(payload, '$.IntValue') AS [IntValue],

JSON_VALUE(payload, '$.DateValue') AS [DateValue],

JSON_VALUE(payload, '$.Answer_Id') AS [Answer_Id],

JSON_VALUE(payload, '$.Candidate_Id') AS [Candidate_Id],

JSON_VALUE(payload, '$.EntityId') AS [EntityId],

JSON_VALUE(payload, '$.SurveySubmittal_Id') AS [SurveySubmittal_Id],

JSON_VALUE(payload, '$.StringValue') AS [StringValue],

candidateId,

clientContactId,

clientCorporationId,

jobOrderId,

jobSubmissionId,

placementId,

leadId,

opportunityId,

corporateUserId,

noteId,

appointmentId,

payableChargeId,

billableChargeId

FROM dbo.EdsData

WHERE entityTypeId = (SELECT edsEntityTypeId FROM dbo.EdsEntityType WHERE name = 'SurveyAnswerSubmittals' AND sourceSystemId = (SELECT edsSourceSystemId FROM dbo.EdsSourceSystem WHERE name = 'Automation'));

GO

DROP VIEW IF EXISTS DataHub_Automation_SurveyNpsAnswerSubmittals;

GO

CREATE VIEW DataHub_Automation_SurveyNpsAnswerSubmittals AS

SELECT

sourceId,

entityTypeId,

entityTypeSchemaVersionId,

dateAddedInSourceSystem,

dateLastModifiedInSourceSystem,

isDeleted,

JSON_VALUE(payload, '$.IntValue') AS [IntValue],

JSON_VALUE(payload, '$.Scale') AS [Scale],

JSON_VALUE(payload, '$.Answer_Id') AS [Answer_Id],

JSON_VALUE(payload, '$.SurveyName') AS [SurveyName],

JSON_VALUE(payload, '$.Candidate_Id') AS [Candidate_Id],

JSON_VALUE(payload, '$.EntityId') AS [EntityId],

JSON_VALUE(payload, '$.QuestionText') AS [QuestionText],

JSON_VALUE(payload, '$.SurveySubmittal_Id') AS [SurveySubmittal_Id],

candidateId,

clientContactId,

clientCorporationId,

jobOrderId,

jobSubmissionId,

placementId,

leadId,

opportunityId,

corporateUserId,

noteId,

appointmentId,

payableChargeId,

billableChargeId

FROM dbo.EdsData

WHERE entityTypeId = (SELECT edsEntityTypeId FROM dbo.EdsEntityType WHERE name = 'SurveyNpsAnswerSubmittals' AND sourceSystemId = (SELECT edsSourceSystemId FROM dbo.EdsSourceSystem WHERE name = 'Automation'));

GO