import scala.collection.mutable.MutableList import scala.compat.java8.FunctionConverters._ import com.coherentlogic.cmr.api.builders.CMR import com.coherentlogic.cmr.quandl._ import com.coherentlogic.quandl.client.core.domain.tables.Column import com.coherentlogic.quandl.client.core.domain.tables.Columns import com.coherentlogic.quandl.client.core.domain.tables.Datum import com.coherentlogic.quandl.client.core.domain.tables.DatumArray
import scala.collection.mutable.MutableList import scala.compat.java8.FunctionConverters._ import com.coherentlogic.cmr.api.builders.CMR import com.coherentlogic.cmr.quandl._ import com.coherentlogic.quandl.client.core.domain.tables.Column import com.coherentlogic.quandl.client.core.domain.tables.Columns import com.coherentlogic.quandl.client.core.domain.tables.Datum import com.coherentlogic.quandl.client.core.domain.tables.DatumArray
val QUANDL_API_KEY=System.getenv ("QUANDL_API_KEY")
val cmr = new CMR ()
case class MerF1 (reportDate : java.sql.Date, amount : scala.math.BigDecimal) {} def mapper (quandlResponse : com.coherentlogic.quandl.client.core.domain.tables.QuandlResponse) : scala.collection.mutable.Seq[MerF1] = {
var result : MutableList[MerF1] = MutableList()
var dataTable : com.coherentlogic.quandl.client.core.domain.tables.DataTable = quandlResponse.getDataTable
val columns : Columns = dataTable.getColumns();
val columnMap = columns.asMap();
val reportDateColumn : Column = columnMap.get("reportdate"); val amountColumn : Column = columnMap.get("amount");
val reportDateIndex = columns.getIndexOf (reportDateColumn) val amountIndex = columns.getIndexOf (amountColumn)
dataTable.getData.forEachDatumArray ( asJavaConsumer[com.coherentlogic.quandl.client.core.domain.tables.DatumArray] ( (datumArray : com.coherentlogic.quandl.client.core.domain.tables.DatumArray) => {
val reportDateDatum : Datum = datumArray.getDatumAt(reportDateIndex); val amountDatum : Datum = datumArray.getDatumAt(amountIndex);
val reportSQLDate = reportDateDatum.getValueAsSQLDate () val amount = new scala.math.BigDecimal(amountDatum.getValueAsBigDecimal ())
result += new MerF1 (reportSQLDate, amount) } ) ) result }
import spark.implicits._
val merF1Seq : Seq[MerF1] = cmr.quandl.tables.datatables("MER", "F1").withApiKey(QUANDL_API_KEY).doGetAsSeq (mapper)
merF1Seq.toDS.show(5) merF1Seq.toDS.count
import scala.collection.mutable.MutableList import scala.compat.java8.FunctionConverters._ import com.coherentlogic.cmr.api.builders.CMR import com.coherentlogic.cmr.quandl._ import com.coherentlogic.quandl.client.core.domain.timeseries.ColumnNames
import scala.collection.mutable.MutableList import scala.compat.java8.FunctionConverters._ import com.coherentlogic.cmr.api.builders.CMR import com.coherentlogic.cmr.quandl._ import com.coherentlogic.quandl.client.core.domain.timeseries.ColumnNames
val QUANDL_API_KEY=System.getenv ("QUANDL_API_KEY")
val cmr = new CMR ()
case class EODHD (columnName : String) {} def mapper (quandlResponse : com.coherentlogic.quandl.client.core.domain.timeseries.metadata.QuandlResponse) : scala.collection.mutable.Seq[EODHD] = { val result : MutableList[EODHD] = MutableList()
val dataset = quandlResponse.getDataset
val columnNames = dataset.getColumnNames();
columnNames.forEachColumnName ( asJavaConsumer[String] ( columnName => { result += new EODHD (columnName) } ) )
result }
import spark.implicits._
val eodHDSeq : Seq[EODHD] = cmr.quandl.metadata.datasets("EOD", "HD").metadata().withApiKey(QUANDL_API_KEY).doGetAsSeq (mapper)
val eodHDDS = eodHDSeq.toDS
eodHDDS.show(5) eodHDDS.count