Files
linqpad/ScoreDimensions.linq
T

144 lines
5.2 KiB
C#

<Query Kind="Program">
<Connection>
<ID>463c2997-8a6a-4688-9575-6549e5215f7b</ID>
<Persist>true</Persist>
<Server>D0011-SQL-01.sdt.local</Server>
<Database>jazz tst Grady 20191107.1</Database>
<ShowServer>true</ShowServer>
</Connection>
<Reference>&lt;ProgramFilesX64&gt;\Microsoft SDKs\Azure\.NET SDK\v2.9\bin\plugins\Diagnostics\Newtonsoft.Json.dll</Reference>
<NuGetReference>Amazon.Lambda.S3Events</NuGetReference>
<NuGetReference>AWSSDK.Core</NuGetReference>
<NuGetReference>AWSSDK.S3</NuGetReference>
<Namespace>Amazon</Namespace>
<Namespace>Amazon.Auth.AccessControlPolicy</Namespace>
<Namespace>Amazon.Auth.AccessControlPolicy.ActionIdentifiers</Namespace>
<Namespace>Amazon.Internal</Namespace>
<Namespace>Amazon.Lambda.S3Events</Namespace>
<Namespace>Amazon.MissingTypes</Namespace>
<Namespace>Amazon.Runtime</Namespace>
<Namespace>Amazon.Runtime.CredentialManagement</Namespace>
<Namespace>Amazon.Runtime.CredentialManagement.Internal</Namespace>
<Namespace>Amazon.Runtime.EventStreams</Namespace>
<Namespace>Amazon.Runtime.EventStreams.Internal</Namespace>
<Namespace>Amazon.Runtime.Internal</Namespace>
<Namespace>Amazon.Runtime.Internal.Auth</Namespace>
<Namespace>Amazon.Runtime.Internal.Settings</Namespace>
<Namespace>Amazon.Runtime.Internal.Transform</Namespace>
<Namespace>Amazon.Runtime.Internal.Util</Namespace>
<Namespace>Amazon.Runtime.SharedInterfaces</Namespace>
<Namespace>Amazon.Runtime.SharedInterfaces.Internal</Namespace>
<Namespace>Amazon.S3</Namespace>
<Namespace>Amazon.S3.Encryption</Namespace>
<Namespace>Amazon.S3.Encryption.Internal</Namespace>
<Namespace>Amazon.S3.Internal</Namespace>
<Namespace>Amazon.S3.IO</Namespace>
<Namespace>Amazon.S3.Model</Namespace>
<Namespace>Amazon.S3.Model.Internal.MarshallTransformations</Namespace>
<Namespace>Amazon.S3.Transfer</Namespace>
<Namespace>Amazon.S3.Util</Namespace>
<Namespace>Amazon.Util</Namespace>
<Namespace>Amazon.Util.Internal</Namespace>
<Namespace>Amazon.Util.Internal.PlatformServices</Namespace>
<Namespace>Newtonsoft.Json</Namespace>
<Namespace>Newtonsoft.Json.Converters</Namespace>
<Namespace>Newtonsoft.Json.Linq</Namespace>
<Namespace>Newtonsoft.Json.Schema</Namespace>
<Namespace>Newtonsoft.Json.Serialization</Namespace>
<Namespace>System</Namespace>
<Namespace>System.Diagnostics</Namespace>
<Namespace>System.Diagnostics.Tracing</Namespace>
<Namespace>System.IO.Compression</Namespace>
<Namespace>ThirdParty.BouncyCastle.Asn1</Namespace>
<Namespace>ThirdParty.BouncyCastle.Asn1.Utilities</Namespace>
<Namespace>ThirdParty.BouncyCastle.Math</Namespace>
<Namespace>ThirdParty.BouncyCastle.OpenSsl</Namespace>
<Namespace>ThirdParty.BouncyCastle.Utilities.IO.Pem</Namespace>
<Namespace>ThirdParty.Ionic.Zlib</Namespace>
<Namespace>ThirdParty.Json.LitJson</Namespace>
<Namespace>ThirdParty.MD5</Namespace>
</Query>
void Main()
{
var test = (from sd in ScoreDimensions
select new StarterSetAdHocScoreDimensionInfo
{
DimensionGUID = sd.DimensionGUID,
FriendlyName = sd.FriendlyName,
GlobalID = sd.GlobalID
}).ToList();
test.OrderByDescending(t => t.MDXMemberName).Dump();
}
// Define other methods and classes here
public class StarterSetAdHocScoreDimensionInfo
{
public Guid DimensionGUID { get; set; }
public string FriendlyName { get; set; }
public string GlobalID { get; set; }
public string AttributeId { get; set; }
public string MDXMemberID { get; set; }
public bool IsRollup { get; set; }
internal Regex ServiceLineRegex = new Regex(@"^Service Line (\d)$", RegexOptions.IgnoreCase);
public bool ServiceLineRegexIsMatch => ServiceLineRegex.IsMatch(FriendlyName);
public string MDXMemberName
{
get
{
try
{
return AnalysisServicesUtils.GetHierarchyMDXName("Patient Encounter",
ServiceLineRegex.IsMatch(FriendlyName) && IsRollup
? $"{ServiceLineRegex.Replace(FriendlyName, "Service Line Rollup ${1}")}"
: $"{FriendlyName}{(IsRollup ? " Rollup" : "")}");
}
catch (Exception)
{
return string.Empty;
}
}
}
internal string Name => $"Patient Encounter - {FriendlyName}{(IsRollup ? " Rollup" : "")}";
internal StarterSetAdHocScoreDimensionInfo()
{
MDXMemberID = string.Empty;
IsRollup = false;
}
}
public class AnalysisServicesUtils
{
public static string GetHierarchyMDXName(string aDimensionName, string aHierarchyName)
{
var s = "[{0}].[{1}]";
return String.Format(s, GetASFriendlyName(aDimensionName), GetASFriendlyName(aHierarchyName));
}
public static string GetASFriendlyName(string aStr, bool aTrim = true)
{
//Invalid characters --> . , ; ' ` : / \ * | ? " & % $ ! + = ( ) [ ] { }
//Take out white space
var returnStr = System.Text.RegularExpressions.Regex.Replace(aStr, @"[\.,;'`:/\\\*\|\?""&%\$!\+=\(\)\[\]{}]", "");
if (aTrim) returnStr = returnStr.Trim();
//Replace reserved name
if (returnStr.Equals("Name", StringComparison.OrdinalIgnoreCase)) returnStr = "Name_";
if (returnStr.Equals("Measures", StringComparison.OrdinalIgnoreCase)) returnStr = "Measures_";
if (returnStr.Equals("ID", StringComparison.OrdinalIgnoreCase)) returnStr = "ID_";
if (returnStr.Equals("Key", StringComparison.OrdinalIgnoreCase)) returnStr = "Key_";
return returnStr;
}
}