2016-10-28 10 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()を使用して呼び出す必要があります。

関連する問題