語意層[中文]

何謂語意層?

語意層是含有以下內容的檔案:
• 一個或數個資料庫中介軟體的連線參數。
• 稱為物件的 SQL 結構,它們會對應到資料庫中實際的 SQL 結構 (如欄、表格和資料庫函數等)。
物件會群組為許多種類別。Web Intelligence使用者能同時看到物件和類別。
• 內含資料庫中使用的表格和連接之結構描述。物件是依據您結構描述中所包含的資料庫結構所建立的。
只有 設計者 使用者才能使用結構描述。Web Intelligence 使用者看不到結構描述。
Web Intelligence 使用者會連接到語意層,然後對資料庫執行查詢。
它們可以使用語意層中的物件來進行資料分析及建立報表,
無需看到或知道資料庫的基底資料結構。

語意層扮演何種角色?

語意層的角色是提供易用易懂的介面給非技術背景的 Web Intelligence使用者,
讓他們能夠執行資料庫查詢,以建立報表和執行資料分析。
作為語意層設計者,您使用 設計者 來建立代表資料庫結構 (例如欄和資料庫函數) 的物件,
使用者存取及查詢時必須使用這些物件來取得業務所需的資訊。
您在語意層所建立的物件必須和使用者商務環境和詞彙相關。
它們的角色是將「以業務為重點的前端」呈現給資料庫的 SQL 結構。
下圖顯示在資料庫結構描述和在 Web Intelligence 中的 [查詢] 工作區之間,
物件作為對應層的角色,使用者用此建立對資料庫表格的查詢。

語意層中包含什麼?

語意層包含下列結構:
• 類別
• 物件

類別

類別是語意層內部物件的邏輯分組。它代表某一類的物件。類別名稱
必須能夠代表它所包含的物件之類別。類別可以再往下細分成子類別。

物件

物件是一個命名元件,它會對應到資料庫中的資料或衍生資料。物件
名稱應來自目標使用者群組的商務詞彙。例如,產品經理使用於語意層中
的物件可以是產品、生命週期或發行日期°C而財務分析師所使用的語意
層,則可能包含邊際利潤和投資報酬等物件。

物件類型

在 設計者 中,物件屬於下列三種之一:維度、詳細資料或計量。

  1. 維度用來進行分析的參數。維度一般都和階層 (如地理位置、產品或時間) 有關。例如姓氏和 City_Id
  2. 詳細資料提供維度的描述,但它並非分析的焦點。例如電話號碼
  3. 計量表達數字資訊,用來以數量表示維度物件。例如營業收入

物件會推斷結構描述中所顯示的 SQL 結構

Web Intelligence 使用者在語意層中看到的物件,會推斷出您已插入資料庫結構描述中的 SQL 結構。
身為語意層設計者,您會依據傳回資料所需的表格和連接來建立此結構描述,
而所傳回的資料則視使用者進行分析及報表建立的需求而定。
結構描述是語意層檔案的一部分,但它只能從 設計者 中看到及使用。

可惡的BeginTransaction

Public Sub RunSqlTransaction(myConnString As String)
Dim myConnection As New SqlConnection(myConnString)
myConnection.Open()

Dim myCommand As SqlCommand = myConnection.CreateCommand()
Dim myTrans As SqlTransaction

' Start a local transaction
myTrans = myConnection.BeginTransaction(IsolationLevel.ReadCommitted, "SampleTransaction")
' Must assign both transaction object and connection
' to Command object for a pending local transaction
myCommand.Connection = myConnection
myCommand.Transaction = myTrans

Try
myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"
myCommand.ExecuteNonQuery()
myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')"
myCommand.ExecuteNonQuery()
myTrans.Commit()
Console.WriteLine("Both records are written to database.")
Catch e As Exception
Try
myTrans.Rollback("SampleTransaction")
Catch ex As SqlException
If Not myTrans.Connection Is Nothing Then
Console.WriteLine("An exception of type " & ex.GetType().ToString() & _
" was encountered while attempting to roll back the transaction.")
End If
End Try

Console.WriteLine("An exception of type " & e.GetType().ToString() & _
"was encountered while inserting the data.")
Console.WriteLine("Neither record was written to database.")
Finally
myConnection.Close()
End Try
End Sub 'RunSqlTransaction

BO DashBoard設計

效能管理:
設定–>系統使用者–>初始化使用者需設定
–>語意層(不能有SUM或Average)
–>維度(預設即以時間[日曆]為維度)
–>時間設定(必須配合Universe的時間Dimension)
Dashboard Manager–>度量資訊

Designer:
所要計算的”計量(Measure)”加入WHERE的參數設定(prompt)
@Prompt(‘BEGIN_DATE’,’D’,,mono,free)

SQL 2005被UPDATE被鎖定

星期日整整研究了一天,毫無進展,
問題是這樣的,
在一個SUB中,UPDATE可以執行,
但在另一個SUB中,UPDATE卻會一直發生錯誤,
(已超過連接逾時的設定。在作業完成之前超過逾時等待的時間,或者是伺服器未回應。)
SQL SERVER會LOCK住,然後其他指令就無法執行,
有可能是因為BeginTranscatio會鎖住同一條CONNECTION,
出錯後導致SQL連線鎖住,
可是為什麼會鎖住,
就是不解

寫程式沒勁

這個當然不是在說我啦!!
我可有勁的很,因為我太喜歡東搞西搞了
 
是某位RD說跟我他寫程式寫的很無聊,
問我有沒有類似的情況,
我反問他有沒有在接觸新的東西?
老是寫舊的東西,就跟天天在DEBUG一樣,
是很無趣的,做久就會累
要一直接觸新資訊,學新東西,
對新事物有無窮的好奇心,
這就是身為RD的命運

BO WEBI名詞解釋

別名 (一份基準表格):

別名是結構描述中現有表格的參照。
別名是以不同名稱完全複製自原始表格 (基準表格) 的表格。
表格中的資料完全與原始表格相同,
但是不同的名稱會「欺騙」查詢的 SQL,
讓它以為您使用的是兩個不同的表格而接受。

本文 (已定義的連接路徑):

本文是連接的集合,
提供 Web Intelligence 有效的查詢路徑以產生 SQL。

捷徑連接:

捷徑連接是一個可提供兩個表格之間替代路徑的連接。
由於不考慮中介表格並將一般較長的連接路徑縮短,
因此捷徑連接能夠改善查詢的效能。
捷徑連接最常用來將一個共用查詢表格沿著連接路徑進一步連結到另一個表格。
連接路徑是由同一個本文中許多不同的表格所構成。
此時,捷徑連接只有在被查詢的值於表格階層中解除常態化成較低層級,
使得相連的所有層級都存在相同的值時才有效。

連接問題:

Loop / 多對單一查詢設陷 (收斂式多對單一連接) / 一對多重查詢設陷 (序列式多對單一連接)

笛卡兒乘積

笛卡兒乘積是一個結果集,內含查詢中每個表格每一列的所有可能組
合。笛卡兒乘積幾乎都是不正確的結果。

兩個表格在結合時,不指定任何條件,如:
SELECT employee.realname, salary.amount FROM employee, salary
SELECT employee.realname, salary.amount FROM employee JOIN salary
SELECT employee.realname, salary.amount FROM employee CROSS JOIN salary
在這個例子中,employee 原有 4 筆資料,而 salary 有 5 筆資料,在 JOIN 之後,
結果將是兩者資料筆數的乘積:20。
就等於是將兩個資料表中,所有可能的組合全部列出來一樣,
其結果在實務上不見得有意義。這種結合可被視為兩個資料表的
「笛卡兒乘積(Cartesian product)」。