通过Powershell检查cube中每个度量是否都有值
[void][reflection.assembly]::LoadFile("C:\Program Files\Microsoft.NET\ADOMD.NET\100\Microsoft.AnalysisServices.AdomdClient.dll")
$conn = New-object Microsoft.AnalysisServices.AdomdClient.AdomdConnection;
write-host "Server(default localhost):"
$strServer= read-host
write-host "Database(default DBName):"
$strDatabase = read-host
write-host "Cube(default CubeName, press 'a' for ALL):"
$strCube=read-host
if ([System.String]::IsNullOrEmpty($strServer))
{
$strServer="localhost\r2"
}
if ([System.String]::IsNullOrEmpty($strDatabase))
{
$strDatabase="DBName"
}
if ([System.String]::IsNullOrEmpty($strCube))
{
$strCube="CubeName"
}
write-host "Connect server:" $strServer ", database:" $strDatabase ",cube:" $strCube
$conn.ConnectionString = "Provider=MSOLAP.3;Persist Security Info=True;Data Source= " + $strServer + " ;Initial Catalog= " +$strDatabase;
$conn.Open();
write-output "Opened."
foreach ($cu in $conn.Cubes)
{
if ($cu.Type -eq [Microsoft.AnalysisServices.AdomdClient.CubeType]::Cube)
{
if (($cu.Name -eq $strCube) -or ($strCube.ToUpper() -eq "A"))
{
write-output "---------------------------------------"
write-output "Cube:" $cu.Name;
write-output "---------------------------------------"
$total=0
$zero=0
foreach ($m in $cu.Measures)
{
$total++
$strMDX = "SELECT " + $m.UniqueName + " ON 0 FROM [" + $cu.Name + "]"
#write-host $strMDX
$comm=$conn.CreateCommand()
$comm.CommandText=$strMDX
$reader=$comm.ExecuteReader()
$t = $reader.Read()
$result=0
if ($reader[0] -eq $null)
{
$result=0
}
else
{
$result = [System.Convert]::ToDouble($reader[0])
$reader.Close()
if ($result -gt 0)
{
#write-output $result
$zero++
continue
}
}
$name=$m.Name
write-output "$name : $result"
#write-output $m.Name
$reader.Close()
}
write-output "------------------------------------$zero/$total"
}
}
}
Keypoints:
如何在powershell引入并且使用adomd.net对象。
如何声明一个.net对象。
如何使用.net枚举。
如何使用.net下实例或者静态方法。
---------------------------------------------------------------
aspnetx的BI笔记系列索引:
使用SQL Server Analysis Services数据挖掘的关联规则实现商品推荐功能
---------------------------------------------------------------
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2006-03-14 3月14号,oracle的说道多多
2006-03-14 3月12日,感觉有些东西还是不一样的