SQL скрипт в R, дающий только ограниченное количество наблюдений - PullRequest
0 голосов
/ 11 марта 2020

Я использую SQL Сценарий в R Studio и подключение к серверу SAP HANA. Каждый раз, когда я запускаю сценарий, он дает мне лишь ограниченные наблюдения. Иногда я получаю 800 наблюдений, а иногда 1000 наблюдений. Когда я запускаю этот SQL скрипт в Tableau или SSMS, я получаю миллион наблюдений.

Кто-нибудь может помочь, почему R дает только ограниченные строки?

Ниже приведен код I ' м, используя

library(RODBC)

ch <- odbcConnect('HANAxxx',uid='xxxxx',pwd='xxxxx', DBMSencoding="UTF-8")

fiscqtr <- as.character(20191)
begqtr <- as.character(201901)
endqtr <- as.character(201913)
avginvBOP <- as.character(201850)
avginvEOP <- as.character(as.numeric(endqtr)-1)
eopweek <- endqtr
receiptstart <- as.character(201850)
receiptend <- as.character(as.numeric(endqtr)-2)

sales <- sqlQuery(ch, paste('SELECT

                            mat."DIVISION_TXT" AS Division_Name,
                            mat."DEPARTMENT_TXT" AS Department_Name,
                            mat."CLASS_TXT" AS Class_Name,
                            mat."yz_abc1" AS Base_Style_ID,
                            mat."yz_abc1_TXT" AS Base_Style_Name,
                            mat."COLOR" AS Color_Code,
                            mat."COLOR_TXT" AS Color_Name,

                            SUM(CASE WHEN (r."ZWEEK" BETWEEN \'',begqtr,'\' AND \'',endqtr,'\') THEN r."SALES" ELSE 0 END) AS NET_SLS$,
                            SUM(CASE WHEN (r."ZWEEK" BETWEEN \'',begqtr,'\' AND \'',endqtr,'\') THEN r."COST" ELSE 0 END) AS NET_SLSC,
                            SUM(CASE WHEN (r."ZWEEK" BETWEEN \'',begqtr,'\' AND \'',endqtr,'\') THEN r."UNIT" ELSE 0 END) AS NET_SLSU,
                            SUM(CASE WHEN (r."ZWEEK" = \'',eopweek,'\') THEN r."ONHAND" ELSE 0 END) AS EOP_INV_UNIT,    
                            SUM(CASE WHEN (r."ZWEEK" = \'',eopweek,'\') THEN r."ONHANDCOST" ELSE 0 END) AS EOP_INV_COST,    
                            AVG(CASE WHEN (r."ZWEEK" BETWEEN \'',avginvBOP,'\' AND \'',avginvEOP,'\') THEN r."ONHAND" ELSE 0 END) AS BOP_INV_UNIT,  
                            AVG(CASE WHEN (r."ZWEEK" BETWEEN \'',avginvBOP,'\' AND \'',avginvEOP,'\') THEN r."ONHANDCOST" ELSE 0 END) AS BOP_INV_COST,              
                            SUM(CASE WHEN (r."ZWEEK" BETWEEN \'',receiptstart,'\' AND \'',receiptend,'\') THEN r."RECEIPU" ELSE 0 END) AS RECEIPT_UNITS,
                            SUM(CASE WHEN (r."ZWEEK" BETWEEN \'',receiptstart,'\' AND \'',receiptend,'\') THEN r."RECEIPC" ELSE 0 END) AS RECEIPT_COST


                            FROM "_SYS_BIC"."ZBHD.bw.bw2hana/XYZ_REPORT" As r
                            LEFT JOIN "_SYS_BIC"."ZBHD.bw.bw2hana/XYZ_MASTERMATERIAL" As mat On r."0MATERIAL" = mat."MATERIAL"

                            WHERE mat."DIVISION" IN (\'A\',\'B\',\'C\',\'D\',\'E\')
                            AND mat."MATL_TYPE" = \'RECENT\'


                            GROUP BY

                            mat."DIVISION_TXT",
                            mat."DEPARTMENT_TXT",
                            mat."CLASS_TXT",
                            mat."yz_abc1",
                            mat."yz_abc1_TXT",
                            mat."COLOR",
                            mat."COLOR_TXT"', sep = ''))

1 Ответ

0 голосов
/ 25 марта 2020

Я действительно решил ошибку, установив пакет RJDB C и установив jdbcDriver. и это работало отлично ... Спасибо за вашу помощь.

Ниже приведен код для установки драйвера и подключения к HANA

jdbcDriver <- JDB C (driverClass = "com.sap.db.jdb c .Driver", classPath = "C: / Program Files / sap / hdbclient / ngdb c .jar") </p>

ch <- dbConnect (jdbcDriver, "jdb c: sap: // имя_сервера: порт", "Имя пользователя", "пароль") </p>

...