Пользовательская визуализация 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;

person Fehnraal    schedule 09.09.2019    source источник
comment
Чтобы добавить сюда больше деталей, это будет упаковано в визуальный файл. Я не буду использовать редактор сценариев в приложении. Я буду использовать файлы visual.ts, features.json и script.r. Значения в приведенном выше коде у меня не работают, но в учебнике, которому я изначально следил, он работал правильно. Я пытаюсь найти добавленные столбцы путем индексации DataFrame. (В Python это dataset.iloc [:, 0] для первого поля столбца, и оттуда он изменяется линейно. Кто-нибудь знает метод или синтаксис для достижения этого с помощью сценария PBIVIZ?   -  person Fehnraal    schedule 09.09.2019


Ответы (1)


добро пожаловать в сообщество!

R в Power BI немного раздражает.

  1. Он не будет использовать этот файл, потому что может не знать, где находится ваш get_wd(). Попробуйте указать весь свой путь или, что еще лучше, загрузите его где-нибудь в Интернете и посмотрите, сработает ли это, ИЛИ импортируйте данные в PowerBI и прочтите их оттуда.
  2. вам нужно убедиться, что в УСТАНОВКЕ R, КОТОРОЙ ИСПОЛЬЗУЕТ POWER BI, установлены как ggplot2, так и plotly. Убедитесь, что это та же самая версия R, иначе она не сработает.

Попробуйте эти 2, если это не так, опубликуйте ошибку, которую он дает вам, и мы устраним ее оттуда.

person Amit Kohli    schedule 09.09.2019
comment
Я, наверное, должен кое-что прояснить. Создаваемый мной визуал не использует редактор сценариев R в Power Bi. Я создаю визуал с помощью визуальных инструментов Power BI (PBIVIZ). Данные, которые я использую, не из CSV. Я подключился к серверу MySQL и беру свои данные оттуда. Я делаю это с файлом PBIVIZ, чтобы избежать проблем с библиотеками и т.п., если они используются другим пользователем. (или где-то встроен). Я обновлю сообщение с полным журналом ошибок из визуала. - person Fehnraal; 09.09.2019
comment
Также следует отметить, что я использую табличную модель. Не уверен, что это действительно помогает, но чем больше информации об этом, тем лучше. - person Fehnraal; 09.09.2019