分享方式:


在 Power BI 中優化 Q&A 的最佳做法

使用常見片語和自然語言來詢問數據問題十分強大。 當您的數據回答時,它更強大,也就是 Power BI 中的 Q&A 功能。

為了讓Q&A能夠成功解譯它能夠回應的大型問題集合,Q&A 會假設模型。 如果您的模型結構不符合其中一或多個假設,您需要調整模型。 不論您是否使用 Q&A,Q&A 的調整都是 Power BI 中任何模型的最佳做法優化。

使用問答工具來修正您的問題

在下列各節中,我們會說明如何調整您的模型,使其與Power BI中的Q&A搭配運作良好。 透過 Q&A 工具,您會將核心商務詞彙教導 Q&A,並修正終端使用者提出的問題。 有時候,問題仍無法解決,因為數據的形狀不正確或數據遺失。 在此情況下,請閱讀下列各節,以協助您優化問答。 如需詳細資訊,請參閱 Q&A 工具簡介。

新增遺漏關聯性

如果您的模型缺少數據表之間的關聯性,Power BI 報表和 Q&A 無法解譯如何聯結這些數據表。 關聯性是良好模型的基石。 例如,如果訂單數據表和客戶數據表之間缺少關聯性,則無法要求「西雅圖客戶的總銷售額」。 下列影像顯示需要工作的模型,以及可供Q&A使用的模型。

需要工作

在第一個影像中,[客戶]、[銷售] 和 [產品] 數據表之間沒有關聯性。

Screenshot showing Customers, Sales, and Products tables with no connected relationships.

準備好進行問答

在第二個影像中,數據表之間會定義關聯性。

Screenshot showing Customers, Sales, and Products tables with interconnected relationships.

重新命名數據表和數據行

數據表和數據行的選擇對於Q&A很重要。 例如,假設您有一 個名為 CustomerSummary 的數據表,其中包含客戶清單。 您需要詢問「列出芝加哥的客戶摘要」之類的問題,而不是「列出芝加哥的客戶」。

雖然 Q&A 可以執行一些基本的斷詞和偵測複數,但 Q&A 假設您的資料表和數據行名稱會準確地反映其內容。

另一個範例是,如果您有一 個名為 Headcount 的數據表,其中包含名字和姓氏和員工號碼。 您有另一個名為 Employees 的數據表,其中包含員工號碼、工作號碼和開始日期。 人員 熟悉模型可能會瞭解此結構。 詢問「計算員工計數」的其他人將會從 「Employees」 資料表中取得數據列的計數。 這個結果可能不是他們心目中的,因為這是每位員工曾經擁有的每一份工作。 最好重新命名這些數據表,以真正反映其包含的內容。

需要工作

StoreInfoProduct List數據表名稱需要運作。

Screenshot showing examples of table names that aren't optimal for Q and A.

準備好進行問答

名為 Store 和 Products數據表效果更好。

Screenshot showing examples of table names that are optimal for Q and A.

修正不正確的數據類型

匯入的數據可能會有不正確的數據類型。 特別是,以字串形式匯入的日期和時間數據行不會由Q&A解譯為日期和數位。 在 Power BI 模型中選取正確的數據類型。

Screenshot showing the Formatting panel with the Data type and Date time format selected.

變更年份和標識碼數據行設定

Power BI 預設會匯總數值數據行,因此「依年度總銷售額」之類的問題有時可能會導致總銷售額與總年數。 如果您有不想讓 Power BI 顯示此行為的特定數據行,請將數據行上的預設 摘要 屬性設定為 [不要摘要]。 請注意 YearMonthDayID 數據行,因為這些數據行是最常見的問題。 其他不合理加總的數據行,例如 Age,也可以受益於將預設摘要設定為 [不要摘要] 或 [平均值]。 選取資料行之後,此設定位於 [屬性 ] 區段中。

Screenshot showing the Summarization field with Don't summarize selected.

為每個日期和地理位置數據行選擇資料類別

數據 類別 目錄提供數據行內容超過其數據類型的知識。 例如,您可以將整數數據行標示為郵遞區編碼,或將字串數據行標示為城市、國家/地區。 Q&A 會以兩個重要方式使用這項資訊,用於視覺效果選取和語言偏差。

首先,Q&A 會使用 數據類別 資訊來協助選擇要使用的視覺效果顯示類型。 例如,它可辨識具有日期或時間 數據類別的數據行 是折線圖的水平軸或泡泡圖播放軸的好選擇。 它假設包含具有地理 數據類別 的數據行的結果在地圖上看起來可能不錯。

其次,Q&A 對使用者可能如何談論日期和地理數據行進行一些受過教育的猜測,以協助其瞭解特定類型的問題。 例如,「約翰·史密斯何時僱用?」中的「何時」? 幾乎可以肯定對應到日期數據行,而「布朗計數客戶」中的「布朗」更有可能是一個城市,而不是發色。

Screenshot showing the Data category field with Uncategorized selected.

為相關數據行選擇排序依據數據行

[排序依據數據行] 屬性允許在一個數據行中排序,以改為自動排序不同的數據行。 例如,當您詢問「依帽子大小排序客戶」時,您可能希望您的 Hat Size 數據行依基礎大小數位(XS、S、M、L、XL)排序,而不是依字母順序排序(L、M、S、XL、XS)。

Screenshot showing the Sort by column dropdown with Hat Size ID selected.

將模型正規化

您不需要重塑整個模型。 然而,某些結構是如此困難,Q&A無法妥善處理它們。 如果您執行模型結構的一些基本正規化,Power BI 報表的可用性會大幅增加,以及 Q&A 結果的精確度。

遵循此一般規則:用戶討論的每個唯一「事物」都應該以一個模型對象(數據表或數據行)來表示。 因此,如果您的使用者談論客戶,應該會有一個 客戶 物件。 如果您的使用者談論銷售,應該會有一個 銷售 物件。 如有需要,查詢編輯器提供豐富的數據成形功能。 您可以使用 Power BI 模型中的計算來調整更直接的轉換。

下列各節包含您可能需要執行的一些常見轉換。 如需標準化模型的詳細資訊,請參閱瞭解星型架構和Power BI重要性一文中的正規化與反正規化。

建立多數據行實體的新數據表

如果您有多個數據行在較大的數據表中做為單一相異單位,這些數據行應該分割成自己的數據表。 例如,假設您在 [公司] 數據表中有 [聯繫人名稱]、[聯繫人標題] 和 [聯繫人 電話] 數據行。 更好的設計是讓個別 [聯繫人] 數據表包含名稱、標題和 電話,以及回到 [公司] 數據表的連結。 這可讓您更輕鬆地詢問與聯繫人相關公司的問題,並改善顯示彈性。

需要工作

Screenshot showing a Suppliers table that includes contact information.

準備好進行問答

Screenshot showing two tables, one for Suppliers and one for Contacts.

樞紐以消除屬性包

如果您的模型中有 屬性包 ,則應該重新建構為每個屬性都有單一數據行。 屬性包雖然方便管理大量屬性,但 Power BI 報表和 Q&A 並非設計用來解決的固有限制。

例如,假設有 CustomerID、Property 和 Value 數據行的 CustomerDemographics 數據表,其中每個數據列都代表客戶的不同屬性(例如年齡、婚姻狀態或城市)。 藉由根據 Property 數據行的內容多載 Value 數據行的意義,Q&A 就不可能解譯參考它的大部分查詢。 一個簡單的問題,例如「顯示每個客戶的年齡」可能會發生工作,因為它可以解譯為「顯示屬性為年齡的客戶和客戶人口統計」。 不過,模型的結構不支援更複雜的問題,例如「芝加哥客戶的平均年齡」。 雖然直接撰寫Power BI報表的用戶有時會找到聰明的方式來取得他們正在尋找的數據,但Q&A只有在每個數據行都有單一意義時才能運作。

需要工作

Screenshot showing three columns with the headings Customer ID, Property, and Value.

準備好進行問答

Screenshot showing three columns with the headings Customer ID, Age, Hat Size, and City.

排除數據分割的聯集

如果您已將數據分割到多個數據表,或已跨多個數據行樞紐值,則使用者很難或不可能完成某些常見的作業。 請考慮第一個 典型的數據表分割:Sales2000-2010 數據表和 Sales2011-2020 數據表。 如果所有重要報表都受限於特定十年,您可能會將它留給 Power BI 報表。 不過,Q&A 的彈性可引導用戶預期「依年度總銷售額」等問題的答案。 若要讓此查詢能夠運作,您必須將數據聯集到單一 Power BI 模型數據表中。

同樣地,請考慮一般樞紐值數據行: 包含 Author、Book、City1、City2 和 City3 數據行的 BookTour 數據表。 有了這樣的結構,即使是像“按城市計算書”這樣的簡單問題也無法正確解讀。 若要讓此查詢運作,請建立個別 的 BookTourCities 數據表,將城市值聯集成單一數據行。

需要工作

Screenshot showing a table with pivoted value columns, City 1, City 2, and City 3.

準備好進行問答

Screenshot showing two tables, one with book and author information for tours and one with cities associated with the tours.

分割格式化的數據行

如果您要匯入數據的來源包含格式化的數據行,則 Power BI 報表 (和 Q&A) 不會觸達資料行內部來剖析其內容。 因此, 如果您有包含位址、城市和國家/地區的完整地址數據行,您也應該將其分割成 Address 、City 和 CountryRegion 數據行,讓使用者可以個別查詢它們。

需要工作

Screenshot showing a table with two columns, Customer and Full Address.

準備好進行問答

Screenshot showing a table with five columns, Customer, Full address, Address, City, and Country or Region.

同樣地,如果您有人員的任何完整名稱數據行,請新增 名字姓氏 數據行,以防有人想要使用部分名稱詢問問題。

建立多重值數據行的新數據表

同樣地,如果您匯入數據的來源包含多重值數據行,則 Power BI 報表 (和 Q&A) 無法連線到資料行內部來剖析內容。 因此,如果您有包含歌曲多個作曲家名稱的 Composer 數據行,請將它分割成個別 Composers 數據表中的多個數據列。

需要工作

Screenshot showing a table with four columns, ID, Name, Genre, and Composers.

準備好進行問答

Screenshot showing two tables, one with ID, Name, and Genre and one with ID and Composer.

反正規化以消除非作用中的關聯性

當有多個路徑可從一個數據表到另一個數據表時,就會發生「正規化較佳」規則的例外狀況。 例如,假設您有SourceCityID 和 DestinationCityID 資料行的 Flights 資料表,每個數據表都與 Cities 數據表相關。 其中一個關聯性必須標示為非作用中。 因為 Q&A 只能使用作用中關聯性,因此您無法根據您選擇的來源或目的地詢問問題。 如果您改為將城市名稱數據行反正規化為 Flights 數據表,您可以提出問題,例如「列出明天的航班,並列出西雅圖來源城市和三藩市目的地城市」等問題。

需要工作

Screenshot showing two tables, Flights and Airports.

準備好進行問答

Screenshot showing one table named Flights. The columns from the Airports table are added to the Flights table.

將同義字新增至數據表和數據行

此步驟特別適用於問答(而不是一般適用於Power BI報表)。 使用者通常會使用許多詞彙來參考相同的專案,例如總銷售額、淨銷售額和總凈銷售額。 您可以將這些同義字新增至 Power BI 模型中的數據表和數據行。

此步驟可能很重要。 即使有簡單的數據表和數據行名稱,Q&A 的使用者也會使用第一次出現的詞彙來詢問問題。 它們不會從預先定義的數據列清單中進行選擇。 您新增的更合理同義字,用戶經驗越好,報表就越好。 若要新增同義字,請在Power BI Desktop 中選取 [模型] 索引標籤,然後選取字段或數據表,以移至 [模型] 檢視。 [屬性] 窗格會顯示 [ 同義字] 方塊,您可以在其中新增同義字。

Screenshot showing the Q&A Properties pane with the Synonyms field highlighted.

請注意,將相同的同義字新增至多個數據行或數據表會造成模棱兩可。 Q&A 會盡可能使用內容來選擇模棱兩可的同義字,但並非所有問題都有足夠的內容。 例如,當使用者詢問「計算客戶」時,如果您的模型中有三個同義字「客戶」的專案,使用者可能無法取得他們正在尋找的答案。 在這些情況下,讓主要同義字成為唯一的同義字,因為該同義字是重新述詞中使用的同義字。 它可以對使用者發出模棱兩可的警示(例如,重新說明「顯示已封存的客戶記錄數目」),這暗示他們可能想要以不同的方式詢問。