Пользовательская визуализация Power Bi R (PBIVIZ)
**РЕДАКТИРОВАТЬ; Для простоты приведу пример того, что я пытаюсь сделать. Мне нужно софткодировать мой график. Ниже жестко запрограммировано.
p <- ggplot(data = Thisismydata, aes(x = thisismyX, fill = thisismyFill)) +
geom_bar(position = "dodge")
w = ggplotly(p)
w =as_widget(w)
}
Мне нужно что-то динамическое, поэтому мне НЕ НУЖНО использовать жестко запрограммированные столбцы. Все, что мне нужно сравнить, это версия псевдо-Python, вот так;
p <- ggplot(data = dataset, aes(x = dataset.iloc[:,1], fill = dataset.iloc[:,2])) +
geom_bar(position = "dodge")
w = ggplotly(p)
w =as_widget(w)
}
Мне нужно объявить их как позиции столбцов в моих полях, а не по имени. Они будут часто меняться местами, и у меня не может появиться сообщение об ошибках, потому что кто-то использовал необъявленное имя в своем значении / столбце.**
Я создаю визуал для Power BI и застрял. В самом начале. Это странно. Я делал визуальные эффекты на Typescript и Python, но не думаю, что когда-либо зацикливался на чем-то так рано. Кажется, я не могу найти никаких хороших и актуальных ресурсов для пользовательских визуальных элементов R в Power BI, поэтому я застрял на старых видео YouTube и репозиториях Github трехлетней давности. Если бы кто-нибудь мог помочь мне в этом с некоторой обновленной информацией, я был бы невероятно благодарен. Моя проблема, как показано ниже;
Я начал создавать визуал R на основе видео на YouTube, сделанного три года назад. Наверное, это моя первая ошибка. Это тоже PBIVIZ, а не окно сценария в Power BI. Внутри моего файла script.r у меня есть это
source('./r_files/flatten_HTML.r')
############### Library Declarations ###############
libraryRequireInstall("ggplot2");
libraryRequireInstall("plotly")
####################################################
################### Actual code ####################
g = plot_ly(x = Values[,1], y = Values[,2], text = paste("z:", Values[,3]),mode = "markers", color = Values[,3], size = Values[,1])
####################################################
############# Create and save widget ###############
p = ggplotly(g);
internalSaveWidget(p, 'out.html');
####################################################```
Кажется, это ничего не делает. Он говорит, что мой объект Values не существует... но я дословно слежу за ним в соответствии с их учебником. Я не уверен, как это работает, но в редакторе сценариев, встроенном в Power BI, вы можете объявить каждое поле с помощью индексации. Я не могу вспомнить правильный синтаксис, поэтому буду использовать Python в качестве примера. В Python, если вам нужно что-то сделать с первым полем визуала, это будет dataset.iloc[,0]. Я - предполагаю - вот что здесь происходит, поскольку они на самом деле этого не объяснили. Похоже на какую-то индексацию... Мои возможности пока невелики по сравнению с предыдущей сборкой, над которой я работал, но на самом деле это не имеет большого значения. Я могу вернуть это значение по умолчанию и поработать над этим позже. А пока мне хотелось бы что-нибудь по сюжету.
Моя конечная игра - это просто линейный график.
Кто-нибудь может сказать мне, что я делаю не так? Эти поля также должны быть динамическими, поскольку они могут меняться в зависимости от того, что пользователь хочет добавить туда, поэтому я стараюсь избегать жесткого кодирования полей по имени.
Журнал ошибок
Feedback Type:
Frown (Error)
Timestamp:
2019-09-09T16:03:19.3159296Z
Local Time:
2019-09-09T11:03:19.3159296-05:00
Session ID:
#####
Release:
August 2019
Product Version:
2.72.5556.801 (19.08) (x64)
Error Message:
R script error.
Loading required package: XML
Loading required package: htmlwidgets
Loading required package: ggplot2
Loading required package: plotly
Attaching package: 'plotly'
The following object is masked from 'package:ggplot2':
last_plot
The following object is masked from 'package:stats':
filter
The following object is masked from 'package:graphics':
layout
Error in plot_ly(x = Values[, 1], y = Values[, 2], text = paste("z:", :
object 'Values' not found
Execution halted
Stack Trace:
Microsoft.PowerBI.ExploreServiceCommon.ScriptHandlerException: R script error.
Loading required package: XML
Loading required package: htmlwidgets
Loading required package: ggplot2
Loading required package: plotly
Attaching package: 'plotly'
The following object is masked from 'package:ggplot2':
last_plot
The following object is masked from 'package:stats':
filter
The following object is masked from 'package:graphics':
layout
Error in plot_ly(x = Values[, 1], y = Values[, 2], text = paste("z:", :
object 'Values' not found
Execution halted
---> Microsoft.PowerBI.Scripting.R.Exceptions.RScriptRuntimeException: R script error.
Loading required package: XML
Loading required package: htmlwidgets
Loading required package: ggplot2
Loading required package: plotly
Attaching package: 'plotly'
The following object is masked from 'package:ggplot2':
last_plot
The following object is masked from 'package:stats':
filter
The following object is masked from 'package:graphics':
layout
Error in plot_ly(x = Values[, 1], y = Values[, 2], text = paste("z:", :
object 'Values' not found
Execution halted
at Microsoft.PowerBI.Scripting.R.RScriptWrapper.RunScript(String originalScript, Int32 timeoutMs)
at Microsoft.PowerBI.Client.Windows.R.RScriptHandler.GenerateVisual(ScriptHandlerOptions options)
--- End of inner exception stack trace ---
at Microsoft.PowerBI.Client.Windows.R.RScriptHandler.GenerateVisual(ScriptHandlerOptions options)
at Microsoft.PowerBI.ExploreServiceCommon.ScriptVisualCommandFlow.RunInternal(Stream dataShapeResultStream, QueryBindingDescriptor& bindingDescriptor)
at Microsoft.PowerBI.ExploreServiceCommon.ScriptVisualCommandFlow.Run(Stream dataShapeResultStream, QueryBindingDescriptor& bindingDescriptor)
at Microsoft.PowerBI.ExploreHost.SemanticQuery.ExecuteSemanticQueryFlow.TransformDataShapeResult(QueryCommand transformCommand, SemanticQueryDataShapeCommand command, Stream dataShapeResultStream, QueryBindingDescriptor& bindingDescriptor)
at Microsoft.PowerBI.ExploreHost.SemanticQuery.ExecuteSemanticQueryFlow.ExecuteDataQuery(IQueryResultDataWriter queryResultDataWriter, EngineDataModel engineDataModel, DataQuery query, Int32 queryId, ServiceErrorStatusCode& serviceErrorStatusCode, CancellationToken cancelToken)
at Microsoft.PowerBI.ExploreHost.SemanticQuery.ExecuteSemanticQueryFlow.ProcessAndWriteSemanticQueryCommands(IQueryResultsWriter queryResultsWriter, IList`1 queries, HashSet`1 pendingQueriesToCancel, EngineDataModel engineDataModel)
Invocation Stack Trace:
at Microsoft.Mashup.Host.Document.ExceptionExtensions.GetCurrentInvocationStackTrace()
at Microsoft.Mashup.Client.UI.Shared.StackTraceInfo..ctor(String exceptionStackTrace, String invocationStackTrace, String exceptionMessage)
at Microsoft.PowerBI.Client.Windows.ErrorHostService.GetErrorDetails(ShowErrorDialogArgs args)
at Microsoft.PowerBI.Client.Windows.ErrorHostService.<>c__DisplayClass2_0.<<ShowErrorDialog>b__0>d.MoveNext()
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine)
at Microsoft.PowerBI.Client.Windows.ErrorHostService.<>c__DisplayClass2_0.<ShowErrorDialog>b__0()
at Microsoft.Mashup.Host.Document.SynchronizationContextExtensions.<>c__DisplayClass1_0`1.<SendAndMarshalExceptions>b__0()
at Microsoft.Mashup.Host.Document.SynchronizationContextExtensions.<>c__DisplayClass0_1.<SendAndMarshalExceptions>b__0(Object null)
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Delegate.DynamicInvokeImpl(Object[] args)
at System.Windows.Forms.Control.InvokeMarshaledCallbackDo(ThreadMethodEntry tme)
at System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme)
at System.Windows.Forms.Control.InvokeMarshaledCallbacks()
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Form.ShowDialog(IWin32Window owner)
at Microsoft.Mashup.Client.UI.Shared.WebDialogs.WebDialog.<>n__0(IWindowHandle owner)
at Microsoft.Mashup.Client.UI.Shared.WindowManager.ShowModal[T](T dialog, Func`1 showModalFunction)
at Microsoft.PowerBI.Client.Program.<>c__DisplayClass4_0.<Main>b__1()
at Microsoft.PowerBI.Client.Windows.IExceptionHandlerExtensions.<>c__DisplayClass3_0.<HandleExceptionsWithNestedTasks>b__0()
at Microsoft.Mashup.Host.Document.ExceptionHandlerExtensions.HandleExceptions(IExceptionHandler exceptionHandler, Action action)
at Microsoft.PowerBI.Client.Program.Main(String[] args)
OS Version:
Microsoft Windows NT 10.0.17134.0 (x64 en-US)
CLR Version:
4.7 or later [Release Number = 461808]
Peak Virtual Memory:
38.3 GB
Private Memory:
445 MB
Peak Working Set:
673 MB
IE Version:
11.950.17134.0
User ID:#####
Workbook Package Info:
1* - en-US, Query Groups: 0, fastCombine: Disabled, runBackgroundAnalysis: True.
Telemetry Enabled:
True
AS Live Connection:
True
Performance Trace Logs:
C:\Users\MYNAME\Microsoft\Power BI Desktop Store App\PerformanceTraces.zip
Enabled Preview Features:
PBI_userFavoriteResourcePackagesEnabled
Disabled Preview Features:
PBI_shapeMapVisualEnabled
PBI_SpanishLinguisticsEnabled
PBI_NewWebTableInference
PBI_showIncrementalRefreshPolicy
PBI_qnaLiveConnect
Disabled DirectQuery Options:
TreatHanaAsRelationalSource
Cloud:
GlobalCloud
DPI Scale:
100%
Supported Services:
Power BI
Formulas:
section Section1;
1 ответ
Добро пожаловать в сообщество!
R в Power BI немного раздражает.
- Он не будет использовать этот файл, потому что может не знать, где находится ваш
get_wd()
. Попробуйте поместить весь свой путь или, что еще лучше, загрузите его где-нибудь в сети и посмотрите, сработает ли это, ИЛИ импортируйте данные в PowerBI и прочтите их оттуда. - вам нужно убедиться, что в УСТАНОВКЕ R, КОТОРОЙ ИСПОЛЬЗУЕТ POWER BI, установлены как ggplot2, так и plotly. Убедитесь, что это та же самая версия R, иначе она не сработает.
Попробуйте эти 2, если нет, опубликуйте сообщение об ошибке, которое выдает, и мы устраним его оттуда.