資料採礦內容中NODE_DISTRIBUTION的「ATTRIBUTE_VALUE」這一欄全是null值

已答覆 資料採礦內容中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
    版主
     
     

    hi

    方便把你有問題的程式碼 PO出來嗎?

    Cube 中 ATTRIBUTE_VALUE 是什麼資料類型? 

    MDX 在 SSMS 確定沒有任何錯誤?


    保證解答-微軟技術支援服務

  • 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的解答,

    讓我知道我從建模到查詢模型內容這些過程都沒有問題,

    辛苦您了。