我正在尝试运行python脚本,以便可以基于“住所地址”列和“居住城市”列创建住户计数。两列都包含字符串。
我尝试过的脚本可以在下面看到:
import React from "react";
const SearchBox = ({ value, onChange }) => {
return (
<div className="search-box">
<input
className="search-txt"
type="text"
name="query"
placeholder="search"
value={value}
onChange={e => onChange(e.currentTarget.value)}
/>
<a className="search-btn" href="">
<i className="fa fa-search" />
</a>
</div>
);
};
export default SearchBox;
但是,它在20,000行后给了我这个错误:
DataSource.Error:ADO.NET:处理Python脚本时发生问题。这里是技术细节:[DataFormat.Error]我们无法转换为Number。详细信息:DataSourceKind = Python DataSourcePath = Python消息=在处理Python脚本时发生问题。这里是技术细节:[DataFormat.Error]我们无法转换为Number。 ErrorCode = -2147467259。
有什么办法可以解决这个问题?这段代码每次都可以在python中运行,并且错误代码在Power BI中绝对没有意义,我非常感谢有关如何使用DAX进行操作的任何建议。
答案 0 :(得分:2)
我无法重现您的错误,但是我强烈怀疑错误的 来源是数据类型 。在Power Query Editor
中,尝试将分组变量转换为文本。对于大于20000
行的数据集,查询失败的事实与该问题完全无关。当然,除非行20000之后的数据内容有所改变。
如果您可以描述您的数据源并在Power Query Editor中显示应用的步骤,那么这对尝试帮助您的任何人都会有很大的帮助。您也可以尝试一次一步地应用代码,这意味着使用dataset['id'] =dataset.groupby(['RESIDENTIAL_ADDRESS1','RESIDENTIAL_CITY']).ngroup()
创建一个表,并使用dataset['household_count'] = dataset.groupby(['id'])['id'].transform('count')
我可能还会向您展示如何做到这一点,同时也让我怀疑错误在于数据类型,并希望排除其他错误源。
我正在使用numpy以及一些随机的城市和街道名称来构建一个数据集,我希望该数据集代表您的真实数据集的结构和数据类型:
代码段1:
import numpy as np
import pandas as pd
np.random.seed(123)
strt=['Broadway', 'Bowery', 'Houston Street', 'Canal Street', 'Madison', 'Maiden Lane']
city=['New York', 'Chicago', 'Baltimore', 'Victory Boulevard', 'Love Lane', 'Utopia Parkway']
RESIDENTIAL_CITY=np.random.choice(strt,21000).tolist()
RESIDENTIAL_ADDRESS1=np.random.choice(strt,21000).tolist()
sample_dataset=pd.DataFrame({'RESIDENTIAL_CITY':RESIDENTIAL_CITY,
'RESIDENTIAL_ADDRESS1':RESIDENTIAL_ADDRESS1})
复制该代码段,转到PowerBI Desktop > Power Query Editor > Transform > Run Python Script
并运行以获取此代码:
然后使用此代码段执行相同的操作:
dataset['id'] =dataset.groupby(['RESIDENTIAL_ADDRESS1','RESIDENTIAL_CITY']).ngroup()
现在您应该拥有这个:
到目前为止,您的最后一步称为Changed Type 2
。上面的步骤称为dataset
。如果单击,您会看到ID
的数据类型有一个字符串ABC
,并且在下一步中它将更改为数字123
。使用我的设置,Power BI自动插入步骤Changed Type 2
。也许事实并非如此?暂时 是潜在的错误源。
下一步,插入最后一行作为自己的步骤:
dataset['household_count'] = dataset.groupby(['id'])['id'].transform('count')
现在,您应该拥有以下数据集,以及Applied Steps
下的相同步骤:
使用此设置,一切似乎都工作正常。那么,我们现在确定 什么呢?
我们怀疑什么?
我希望这可以帮助您。如果没有,那就不要犹豫,让我知道。