資料採礦內容中NODE_DISTRIBUTION的「ATTRIBUTE_VALUE」這一欄全是null值
-
2012年4月17日 上午 03:52
大家好,
小弟我用amo建出了羅吉斯模型
但是都遇到一個很奇怪的問題,
我想要查羅吉斯各個變數的係數,
於是我用AdomdDataAdapter來查詢模型內容中的NODE_DISTRIBUTION這張表,
但是ATTRIBUTE_VALUE這個欄位裡的值是空的,
除了這一欄外,NODE_DISTRIBUTION中的其他欄的值全部都有(ATTRIBUTE_NAME, SUPPORT, etc),
然後我用SQL Server Management Studio,
下了同樣的查詢語法,
可以查到NODE_DISTRIBUTION中ATTRIBUTE_VALUE這個欄位是有值的,
為了確定是只有我的AdomdDataAdapter查的ATTRIBUTE_VALUE欄位是空的,
我再用了SQL Server Business Intelligence Development Studio中的Microsoft 一般內容樹狀檢視器,
看到NODE_DISTRIBUTION中ATTRIBUTE_VALUE也是有值的。
請問為什麼AdomdDataAdapter查出來的ATTRIBUTE_VALUE欄位中全是NULL,
然而其他欄位卻都有正確的值呢?
所有回覆
-
2012年4月17日 上午 06:35版主
-
2012年4月17日 上午 06:59
我不確定您是要哪一部分的程式碼,
我就把我查詢資料採礦內容的程式碼部分給您看:
public DataSet QueryLogistic()
{Microsoft.AnalysisServices.AdomdClient.AdomdConnection conn = new Microsoft.AnalysisServices.AdomdClient.AdomdConnection("Data Source = localhost;Initial Catalog = Logistic");
Microsoft.AnalysisServices.AdomdClient.AdomdCommand cmd = new Microsoft.AnalysisServices.AdomdClient.AdomdCommand();
conn.Open();
cmd.Connection = conn;StringBuilder cmdtext = new StringBuilder();
cmdtext.AppendFormat("SELECT FLATTENED (SELECT * FROM NODE_DISTRIBUTION) AS B FROM [Logistic Model-{0}].CONTENT", "TEST");cmd.CommandText = cmdtext.ToString();
Microsoft.AnalysisServices.AdomdClient.AdomdDataAdapter adapter = new Microsoft.AnalysisServices.AdomdClient.AdomdDataAdapter(cmd);
DataSet resultset = new DataSet();
adapter.Fill(resultset);
return resultset;}
這一段就是會回傳一個DataSet,
裡面放著查詢回來的資料,
所有在NODE_DISTRIBUTION內的欄位都有正確的值,
唯讀ATTRIBUTE_VALUE是空的。
關於cube,
不好意思因為我是剛接觸這部分的新手,
對cube不太熟,
我好像沒有用到cube,
我建模型時是用資料庫中的檢視表去建的。
因為NODE_DISTRIBUTION這張表是跑完建模後,
微軟就會根據演算法及用來建模的資料建立這張表內的資料,
是微軟本身產生的資料表,
所以我不清楚ATTRIBUTE_VALUE這一欄是什麼資料類型。
關於MDX在SSMS中的錯誤,
我無法很肯定裡面沒有出錯,
不過整支程式debug的時候系統沒有錯誤或警告視窗,
除了ATTRIBUTE_VALUE沒有值這個問題外,
不論是建模、查詢模型內容、預測,
都沒有問題。
-
2012年4月18日 上午 02:16版主
我不確定您是要哪一部分的程式碼,
我就把我查詢資料採礦內容的程式碼部分給您看:
public DataSet QueryLogistic()
{Microsoft.AnalysisServices.AdomdClient.AdomdConnection conn = new Microsoft.AnalysisServices.AdomdClient.AdomdConnection("Data Source = localhost;Initial Catalog = Logistic");
Microsoft.AnalysisServices.AdomdClient.AdomdCommand cmd = new Microsoft.AnalysisServices.AdomdClient.AdomdCommand();
conn.Open();
cmd.Connection = conn;StringBuilder cmdtext = new StringBuilder();
cmdtext.AppendFormat("SELECT FLATTENED (SELECT * FROM NODE_DISTRIBUTION) AS B FROM [Logistic Model-{0}].CONTENT", "TEST");cmd.CommandText = cmdtext.ToString();
Microsoft.AnalysisServices.AdomdClient.AdomdDataAdapter adapter = new Microsoft.AnalysisServices.AdomdClient.AdomdDataAdapter(cmd);
DataSet resultset = new DataSet();
adapter.Fill(resultset);
return resultset;}
這一段就是會回傳一個DataSet,
裡面放著查詢回來的資料,
所有在NODE_DISTRIBUTION內的欄位都有正確的值,
唯讀ATTRIBUTE_VALUE是空的。
關於cube,
不好意思因為我是剛接觸這部分的新手,
對cube不太熟,
我好像沒有用到cube,
我建模型時是用資料庫中的檢視表去建的。
因為NODE_DISTRIBUTION這張表是跑完建模後,
微軟就會根據演算法及用來建模的資料建立這張表內的資料,
是微軟本身產生的資料表,
所以我不清楚ATTRIBUTE_VALUE這一欄是什麼資料類型。
關於MDX在SSMS中的錯誤,
我無法很肯定裡面沒有出錯,
不過整支程式debug的時候系統沒有錯誤或警告視窗,
除了ATTRIBUTE_VALUE沒有值這個問題外,
不論是建模、查詢模型內容、預測,
都沒有問題。
SELECT FLATTENED (SELECT * FROM NODE_DISTRIBUTION) AS B FROM [Logistic Model-TEST].CONTENT
這句在 SSMS 中查詢是否有資料?
我嘗試模擬你的狀況,基本上只要採礦結構輸入沒問題,透過 AdomdDataAdapter 來接應該也會有值
你嘗試重新處理採礦結構看看
保證解答-微軟技術支援服務
-
2012年4月19日 上午 01:39
您好:
我剛剛又再測試了一下,
我用AMO建了一個羅吉斯模型,
然後用SSMS去對該模型下了查詢指令(只下查詢指令,不下其他建模、預測等等的其他指令,以確保該模型全由AMO完成),
查到的ATTRIBUTE_VALUE確實有值,
但是AdomdDataAdapter下了同樣的查詢指令,
其他值都有,
獨獨ATTRIBUTE_VALUE這一欄內全是空值,
不知道您對這樣的問題有沒有什麼想法?
如果有需要進一步的資訊請再跟我說,
我盡可能提供所有您需要的資訊,
謝謝。
-
2012年4月19日 上午 03:08版主
debug mode中設 breakpoints 在 return resultset ,這時候查看 resultset 的 ATTRIBUTE_VALUE欄位是不是真的都沒有值
保證解答-微軟技術支援服務
- 已標示為解答 grimmq52156 2012年4月19日 上午 04:12
-
2012年4月19日 上午 04:12
您好:
resultset裡面的ATTRIBUTE_VALUE有值!
真是謝謝您的解答,
因為在您說用監看式查看之前,
我一直以為debug mode無法看到dataset裡的資料(真是新手才會犯的錯Orz),
從來沒有想過會不會是DataGrid顯示的問題(因為我是用AutoGenerateColumns,如果是顯示有問題,應該是所有欄位都出不來,而不是特別只有ATTRIBUTE_VALUE出不來;我也有試過抓模型的其他資訊,都有成功的顯示出來沒有問題,所以才會覺得問題是出在建模or查詢,而不是DataGrid)
現在看了之後,
可以確定的是resultset裡面ATTRIBUTE_VALUE確實有值,
而且一直到傳回前端的dataset裡ATTRIBUTE_VALUE一樣有值,
所以剩下的問題就是為什麼DataGrid不會顯示出來,
這個問題應該是超過本版的範圍,
所以這部分我自行努力。
非常謝謝ricoisme的解答,
讓我知道我從建模到查詢模型內容這些過程都沒有問題,
辛苦您了。

