2016-10-28 4 views
0

Я пытаюсь написать блестящее приложение, которое берет файл в качестве входного файла и загружает данные в этот файл в таблицу bigquery, где будут продолжены другие вещи. Кажется, что все работает с точки зрения получения данных в моем приложении, но когда я пытаюсь загрузить данные в bigquery, ничего не происходит. Нет сообщений об ошибках, просто ничего.Как написать таблицу bigquery из блестящей?

Я могу запустить код сам по себе, и он выполняется просто отлично. У меня есть небольшая проблема с тем, как создать воспроизводимый пример, потому что вы не можете писать в общедоступный набор данных, но я включил свой код ниже.

Дополнительная информация:

  • рабочего каталог содержит мой .httr-OAuth файл
  • данных видна в моем блестящем приложении

Пожалуйста, дайте мне знать, если есть что-то я могу добавить, чтобы сделать этот вопрос легче ответить. Благодарю.

############# UI ############ 
# 

library(shiny) 

shinyUI(fluidPage(

    # Application title 
    titlePanel("Upload"), 

    # Sidebar with a slider input for number of bins 
    sidebarLayout(
    sidebarPanel(
     fileInput('list', 'Choose file to upload', 
       accept = c(
        'text/csv', 
        'text/comma-separated-values', 
        '.csv' 
       )), 
     tags$hr(), 
     textInput('sql', 'Or give a query to get the customer_ids you want'), 
     tags$hr(), 
     actionButton('go', 'Go') 
    ), 

    # Show a plot of the generated distribution 
    mainPanel(
     tableOutput('log') 
    ) 
) 
)) 


############# server ############## 

### setting up the environment 
library(shiny) 
library(data.table) 
library(bigrquery) 

### setting up the constants 
project <- 'xxxxxxx' 
dest_dataset <- 'temp' 
dest_table <- 'custs_hash' 
cd <- 'CREATE_IF_NEEDED' 
wd <- 'WRITE_TRUNCATE' 

options(shiny.maxRequestSize = 100*1024^2) 


shinyServer(function(input, output) { 

    logs <- eventReactive(input$go, { 
    inFile <- input$list 
    dat <- fread(inFile$datapath) 
    dat <- head(dat) 
    return(list(dat = dat)) 
    }) 

    upload <- eventReactive(input$go, { 
    data <- dat()$dat 
    ins <- insert_upload_job(project, dataset = dest_dataset, table = dest_table, values = data, 
          create_disposition = cd, write_disposition = wd) 
    return(list(ins = ins)) 
    }) 

    output$log <- renderTable(logs()$dat) 

}) 
+0

Я не вижу, чтобы «upload» eventReactive использовался/назывался в любом месте вашего кода. –

+0

Я не уверен, что вы подразумеваете под «upload» eventReactive. Это особая функция? функция журналов на сервере может извлекать входной файл и загружать его в мой блестящий сеанс. Это то же самое? – nFrain

+1

У вас есть 'upload <- eventReactive (...)'. Обратите внимание, что eventReactive не будет запускаться сам по себе, если вы не вызываете его с помощью 'upload()'. Причина, по которой работает 'logs', заключается в том, что вы вызвали ее в' renderTable' –

ответ

0

eventReactive возвращает объект реактивного выражения. Как и другие реактивные объекты, вам нужно явно называть это как функцию. В противном случае он не будет работать сам по себе.

Так что в вашем случае у вас есть upload <- eventReactive(...), тогда вам нужно позвонить ему, используя upload().

Смежные вопросы