在 PowerBI 報告中展示可滾動的表格,是一個相當普遍的需求。然而,PowerBI 自身的表格和矩陣功能僅支持靜態效果,無法實現數據的動態滾動展示。借助 SVG 代碼雖可達成這一目標,但并不是每個人都會用SVG,因此之前想要實現這一需求并非易事。
如今借助 DeepSeek,我們便可在 PowerBI 中輕松實現這一需求。以PowerBI星球案例模型為例,假如我們想在報表中添加個滾動的表格,來顯示每個產品的售價、銷售數量、銷售額等信息,可以通過上傳TMDL腳本的方式,先讓DeepSeek熟悉這個模型,然后通過SVG寫個度量值來實現這個需求。附件是PowerBI報告的TMDL腳本,請你分析這個模型,并幫我用SVG代碼生成一個滾動表格的度量值,表格中體現的是每個產品的零售價、銷售數量、銷售額和利潤等信息,要求表格第一行標題固定,連續循環滾動,背景透明。 先寫個空白度量值,放到新卡片圖中,并把值和標簽都關掉,然后打開圖像,類型選擇“圖像URL”,點擊fx按鈕,選擇上面利用DeepSeek建好的SVG度量值。具體哪里有錯誤并不清楚,我們直接讓DeepSeek來調試:然后它又給出了一個公式,利用這個來更新度量值,這次更離譜,新卡片圖直接報錯了,我把報錯信息發給它讓它繼續調試:這次它又給了一個修改后的版本,終于可以滾動了,效果如下:如果想修改標題背景填充色,不知道改動哪里的代碼,也可以讓DeepSeek告訴你怎么改:它不僅告訴需要修改的代碼在哪里,還告訴你顏色的規則和工具推薦,非常貼心。讓DeepSeek數次調試后的滾動表格最終效果如下: 滾動表格 = VAR RowHeight = 35 // 行高 VAR FontSize = 12 // 字體大小 VAR TableWidth = 800 // 表格總寬 VAR ColCount = 5 // 列數 VAR ColWidth = TableWidth / ColCount VAR VisibleRows = 5 // 可見行數 VAR TotalHeight = (VisibleRows + 1) * RowHeight VAR AnimationDuration = 15 // 滾動速度(秒)
// 列中心坐標計算(兼容DAX語法) VAR Col1_X = ColWidth * 0 + ColWidth/2 VAR Col2_X = ColWidth * 1 + ColWidth/2 VAR Col3_X = ColWidth * 2 + ColWidth/2 VAR Col4_X = ColWidth * 3 + ColWidth/2 VAR Col5_X = ColWidth * 4 + ColWidth/2
// 數據準備(含行索引) VAR Data = ADDCOLUMNS( SUMMARIZE( '產品表', '產品表'[產品名稱], "零售價", MAX('產品表'[零售價]), "銷售數量", CALCULATE(SUM('訂單表'[銷售數量])), "銷售額", CALCULATE(SUM('訂單表'[銷售額])), "利潤", CALCULATE(SUM('訂單表'[利潤])) ), "RowIndex", RANKX(ALL('產品表'), '產品表'[產品名稱], , ASC, Dense) )
VAR RowCount = COUNTROWS(Data)
// 標題垂直居中修正(核心修改點) VAR HeaderY = RowHeight/2 + FontSize/3 // 精確垂直居中公式 VAR Header = "<text x='0' y='" & HeaderY & "' font-size='" & FontSize & "' fill='white' font-weight='bold' dominant-baseline='middle' text-anchor='middle'> <tspan x='" & Col1_X & "'>產品名稱</tspan> <tspan x='" & Col2_X & "'>零售價</tspan> <tspan x='" & Col3_X & "'>銷售數量</tspan> <tspan x='" & Col4_X & "'>銷售額</tspan> <tspan x='" & Col5_X & "'>利潤</tspan> </text>"
// 數據行模板(同步垂直居中) VAR DataRows = CONCATENATEX( Data, VAR YPosition = [RowIndex] * RowHeight RETURN "<g transform='translate(0," & YPosition & ")'> <text y='" & HeaderY & "' font-size='" & FontSize & "' fill='white' dominant-baseline='middle' text-anchor='middle'> <tspan x='" & Col1_X & "'>" & '產品表'[產品名稱] & "</tspan> <tspan x='" & Col2_X & "'>¥ " & FORMAT([零售價], "#,0") & "</tspan> <tspan x='" & Col3_X & "'>" & FORMAT([銷售數量], "#,0") & "</tspan> <tspan x='" & Col4_X & "'>¥ " & FORMAT([銷售額], "#,0") & "</tspan> <tspan x='" & Col5_X & "'>¥ " & FORMAT([利潤], "#,0") & "</tspan> </text> </g>", UNICHAR(10) )
// 動畫邏輯(無縫滾動) VAR AnimatedContent = "<g transform='translate(0," & RowHeight & ")'> <animateTransform attributeName='transform' type='translate' from='0 0' to='0 -" & (RowCount * RowHeight) & "' dur='" & IF(RowCount <= VisibleRows, 0, AnimationDuration) & "s' repeatCount='indefinite'/> " & DataRows & DataRows & " </g>"
RETURN "data:image/svg+xml;utf8, <svg xmlns='http://www./2000/svg' width='" & TableWidth & "' height='" & TotalHeight & "' viewBox='0 0 " & TableWidth & " " & TotalHeight & "' style='background:transparent;font-family:Segoe UI'>
<!-- 固定標題欄 --> <rect width='100%' height='" & RowHeight & "' fill='rgba(75,183,218,1)' rx='3'/> " & Header & "
<!-- 滾動遮罩 --> <mask id='scrollMask'> <rect width='100%' height='" & (TotalHeight - RowHeight) & "' y='" & RowHeight & "' fill='white'/> </mask>
<!-- 滾動內容 --> <g mask='url(#scrollMask)'> " & AnimatedContent & " </g>
<!-- 裝飾性邊框 --> <rect width='100%' height='100%' fill='none' stroke='#555' stroke-width='1'/> </svg>" 具體細節還可以根據需求調整公式中的參數或者讓DeepSeek繼續優化。以后若有滾動表格方面的需求,可借助上面的 SVG 思路來達成,或者直接讓 DeepSeek 基于你的模型與需求撰寫 SVG 公式。像這類復雜需求,通常涉及上百行公式,大概率不會一次成功。倘若遇到錯誤或存在需要調整的細節,可交由 DeepSeek 進行調試。運用這一思路,你可以利用 DeepSeek 編寫 SVG 的方式,制作各類可視化效果。借助 AI 的力量,無需專門學習 SVG,也能顯著拓寬 PowerBI 的可視化能力邊界。
AI必將改變我們之前熟悉的PowerBI使用方式,我在知識星球社群中開設有【AI賦能PowerBI】專欄,介紹AI工具,結合PowerBI功能挖掘AI潛力,探索AI+Power BI應用場景,利用AI提升數據分析效率,內容不斷更新中……
歡迎加入,一起學習、探討、進化,成為精通AI的數據分析專家~
|