Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Amritha
New Member

Error while importing .pbix using powerbi-client

TypeError: Cannot read property 'importState' of undefined
    at C:\Users\Admin\AppData\Roaming\npm\node_modules\powerbi-cli\lib\cli-impor
t.js:69:70
    at C:\Users\Admin\AppData\Roaming\npm\node_modules\powerbi-cli\node_modules\
powerbi-api\lib\autorest\operations\imports.js:416:14
    at retryCallback (C:\Users\Admin\AppData\Roaming\npm\node_modules\powerbi-cl
i\node_modules\ms-rest\lib\filters\systemErrorRetryPolicyFilter.js:85:9)
    at retryCallback (C:\Users\Admin\AppData\Roaming\npm\node_modules\powerbi-cl
i\node_modules\ms-rest\lib\filters\exponentialRetryPolicyFilter.js:135:9)
    at handleRedirect (C:\Users\Admin\AppData\Roaming\npm\node_modules\powerbi-c
li\node_modules\ms-rest\lib\filters\redirectFilter.js:36:9)
    at Request._callback (C:\Users\Admin\AppData\Roaming\npm\node_modules\powerb
i-cli\node_modules\ms-rest\lib\requestPipeline.js:126:16)
    at Request.self.callback (C:\Users\Admin\AppData\Roaming\npm\node_modules\po
werbi-cli\node_modules\request\request.js:187:22)
    at emitTwo (events.js:106:13)
    at Request.emit (events.js:191:7)
    at Request.<anonymous> (C:\Users\Admin\AppData\Roaming\npm\node_modules\powe
rbi-cli\node_modules\request\request.js:1044:10)

How it can be resolved, Is there any fix for the following error?
1 ACCEPTED SOLUTION

@Amritha

If you're using the NodeJS Power BI SDK, it is no longer supported. Try to directly call the REST API instead.

I don't know NodeJS, you can reference how I call the Create Import REST API in C#.

 

 static void Main(string[] args)
        {
            //Import sample 
            string pbixPath = @"C:\test\2.pbix";
            string datasetDisplayName = "mydataset";

            string importResponse = Import(string.Format("{0}/groups/{1}/imports?datasetDisplayName={2}", datasetsBetaUri, groupId, datasetDisplayName), pbixPath,"Bearer Token here");
              
            Console.WriteLine(importResponse);

        }

        public static string Import(string url, string fileName,string bearerToken)
        {
            string responseStatusCode = string.Empty;

            string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
            byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

            request.ContentType = "multipart/form-data; boundary=" + boundary;
            request.Method = "POST";
            request.KeepAlive = true;
            request.Headers.Add("Authorization", String.Format("Bearer {0}", bearerToken));

            using (Stream rs = request.GetRequestStream())
            {
                rs.Write(boundarybytes, 0, boundarybytes.Length);

                string headerTemplate = "Content-Disposition: form-data; filename=\"{0}\"\r\nContent-Type: application / octet - stream\r\n\r\n";
                string header = string.Format(headerTemplate, fileName);
                byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header);
                rs.Write(headerbytes, 0, headerbytes.Length);

                using (FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read))
                {
                    byte[] buffer = new byte[4096];
                    int bytesRead = 0;
                    while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
                    {
                        rs.Write(buffer, 0, bytesRead);
                    }
                }

                byte[] trailer = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");
                rs.Write(trailer, 0, trailer.Length);
            }
            using (HttpWebResponse response = request.GetResponse() as System.Net.HttpWebResponse)
            {
                responseStatusCode = response.StatusCode.ToString();
            }
                         return responseStatusCode;
        }

 

View solution in original post

2 REPLIES 2
Amritha
New Member

TypeError: Cannot read property 'importState' of undefined
    at C:\Users\Admin\AppData\Roaming\npm\node_modules\powerbi-cli\lib\cli-impor
t.js:69:70
    at C:\Users\Admin\AppData\Roaming\npm\node_modules\powerbi-cli\node_modules\
powerbi-api\lib\autorest\operations\imports.js:416:14
    at retryCallback (C:\Users\Admin\AppData\Roaming\npm\node_modules\powerbi-cl
i\node_modules\ms-rest\lib\filters\systemErrorRetryPolicyFilter.js:85:9)
    at retryCallback (C:\Users\Admin\AppData\Roaming\npm\node_modules\powerbi-cl
i\node_modules\ms-rest\lib\filters\exponentialRetryPolicyFilter.js:135:9)
    at handleRedirect (C:\Users\Admin\AppData\Roaming\npm\node_modules\powerbi-c
li\node_modules\ms-rest\lib\filters\redirectFilter.js:36:9)
    at Request._callback (C:\Users\Admin\AppData\Roaming\npm\node_modules\powerb
i-cli\node_modules\ms-rest\lib\requestPipeline.js:126:16)
    at Request.self.callback (C:\Users\Admin\AppData\Roaming\npm\node_modules\po
werbi-cli\node_modules\request\request.js:187:22)
    at emitTwo (events.js:106:13)
    at Request.emit (events.js:191:7)
    at Request.<anonymous> (C:\Users\Admin\AppData\Roaming\npm\node_modules\powe
rbi-cli\node_modules\request\request.js:1044:10)

How it can be resolved, Is there any fix for the following error?

@Amritha

If you're using the NodeJS Power BI SDK, it is no longer supported. Try to directly call the REST API instead.

I don't know NodeJS, you can reference how I call the Create Import REST API in C#.

 

 static void Main(string[] args)
        {
            //Import sample 
            string pbixPath = @"C:\test\2.pbix";
            string datasetDisplayName = "mydataset";

            string importResponse = Import(string.Format("{0}/groups/{1}/imports?datasetDisplayName={2}", datasetsBetaUri, groupId, datasetDisplayName), pbixPath,"Bearer Token here");
              
            Console.WriteLine(importResponse);

        }

        public static string Import(string url, string fileName,string bearerToken)
        {
            string responseStatusCode = string.Empty;

            string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
            byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

            request.ContentType = "multipart/form-data; boundary=" + boundary;
            request.Method = "POST";
            request.KeepAlive = true;
            request.Headers.Add("Authorization", String.Format("Bearer {0}", bearerToken));

            using (Stream rs = request.GetRequestStream())
            {
                rs.Write(boundarybytes, 0, boundarybytes.Length);

                string headerTemplate = "Content-Disposition: form-data; filename=\"{0}\"\r\nContent-Type: application / octet - stream\r\n\r\n";
                string header = string.Format(headerTemplate, fileName);
                byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header);
                rs.Write(headerbytes, 0, headerbytes.Length);

                using (FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read))
                {
                    byte[] buffer = new byte[4096];
                    int bytesRead = 0;
                    while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
                    {
                        rs.Write(buffer, 0, bytesRead);
                    }
                }

                byte[] trailer = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");
                rs.Write(trailer, 0, trailer.Length);
            }
            using (HttpWebResponse response = request.GetResponse() as System.Net.HttpWebResponse)
            {
                responseStatusCode = response.StatusCode.ToString();
            }
                         return responseStatusCode;
        }

 

Helpful resources

Announcements
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.