public DaxStudioTraceEventArgs(Microsoft.AnalysisServices.TraceEventArgs e, string powerBIFileName) { StartTime = DateTime.Now; EventClassName = e.EventClass.ToString(); EventSubclassName = e.EventSubclass.ToString(); Enum.TryParse <DaxStudioTraceEventClass>(EventClassName, out _eventClass); Enum.TryParse <DaxStudioTraceEventSubclass>(EventSubclassName, out _eventSubclass); TextData = e.TextData; /* * switch (e.EventClass) * { * case TraceEventClass.QueryEnd: * Duration = e.Duration; * DatabaseName = e.DatabaseName; * StartTime = e.StartTime; * NTUserName = e.NTUserName; * * break; * case TraceEventClass.VertiPaqSEQueryCacheMatch: * StartTime = e.StartTime; * break; * case TraceEventClass.CommandBegin: * * default: * throw new ArgumentException($"No mapping for the event class {e.EventClass.ToString()} was found"); * * } */ if (e.EventClass != TraceEventClass.CommandBegin) { // not all events have CpuTime try { CpuTime = e.CpuTime; } catch (ArgumentNullException) { CpuTime = 0; } // not all events have a duration try { Duration = e.Duration; } catch (ArgumentNullException) { Duration = 0; } } if (e.NTUserName != null) { NTUserName = e.NTUserName; } if (e.DatabaseName != null) { DatabaseName = e.DatabaseName; if (!string.IsNullOrEmpty(powerBIFileName)) { DatabaseFriendlyName = powerBIFileName; } else { DatabaseFriendlyName = DatabaseName; } } try { StartTime = e.CurrentTime; StartTime = e.StartTime; } catch (NullReferenceException) { } try { RequestID = e[TraceColumn.RequestID]; } catch { } }
public DaxStudioTraceEventArgs(Microsoft.AnalysisServices.TraceEventArgs e, string powerBiFileName) { StartTime = DateTime.Now; EventClassName = e.EventClass.ToString(); EventSubclassName = e.EventSubclass.ToString(); Enum.TryParse <DaxStudioTraceEventClass>(EventClassName, out _eventClass); Enum.TryParse <DaxStudioTraceEventSubclass>(EventSubclassName, out _eventSubclass); TextData = e.TextData; RequestID = e[TraceColumn.RequestID]; DatabaseName = e.DatabaseName; DatabaseFriendlyName = !string.IsNullOrEmpty(powerBiFileName)? powerBiFileName : DatabaseName; switch (e.EventClass) { case TraceEventClass.QueryBegin: RequestProperties = e.RequestProperties; RequestParameters = e.RequestParameters; NTUserName = e.NTUserName; StartTime = e.StartTime; break; case TraceEventClass.QueryEnd: Duration = e.Duration; StartTime = e.StartTime; NTUserName = e.NTUserName; EndTime = e.EndTime; CpuTime = e.CpuTime; break; case TraceEventClass.DirectQueryEnd: Duration = e.Duration; EndTime = e.EndTime; CpuTime = e.CpuTime; StartTime = e.StartTime; break; case TraceEventClass.VertiPaqSEQueryEnd: StartTime = e.StartTime; CpuTime = e.CpuTime; Duration = e.Duration; NTUserName = e.NTUserName; break; case TraceEventClass.AggregateTableRewriteQuery: case TraceEventClass.VertiPaqSEQueryCacheMatch: StartTime = e.CurrentTime; NTUserName = e.NTUserName; break; case TraceEventClass.CommandBegin: string s = e[TraceColumn.StartTime] ?? e[TraceColumn.CurrentTime] ?? string.Empty; DateTime.TryParse(s, out var startTime); StartTime = startTime; NTUserName = e.NTUserName; break; case TraceEventClass.DiscoverBegin: case TraceEventClass.DAXQueryPlan: // no additional properties captured, the plan is stored in the text field break; default: throw new ArgumentException($"No mapping for the event class {e.EventClass.ToString()} was found"); } //if (e.EventClass != TraceEventClass.CommandBegin) //{ // // not all events have CpuTime // try // { // CpuTime = e.CpuTime; // } // catch (ArgumentNullException) // { // CpuTime = 0; // } // // not all events have a duration // try // { // Duration = e.Duration; // } // catch (ArgumentNullException) // { // Duration = 0; // } //} //if (e.EventClass == TraceEventClass.QueryBegin) //{ // RequestParameters = e.RequestParameters; // RequestProperties = e.RequestProperties; //} //if (e.NTUserName != null) // NTUserName = e.NTUserName; //if (e.DatabaseName != null) //{ // DatabaseName = e.DatabaseName; // if (!string.IsNullOrEmpty(powerBIFileName)) DatabaseFriendlyName = powerBIFileName; // else DatabaseFriendlyName = DatabaseName; //} //try //{ // StartTime = e.CurrentTime; // StartTime = e.StartTime; //} //catch (NullReferenceException) //{ //} //try //{ // RequestID = e[TraceColumn.RequestID]; //} //catch //{ } }