powerbi中如何再度量值中提取虚拟表中的列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了powerbi中如何再度量值中提取虚拟表中的列相关的知识,希望对你有一定的参考价值。
参考技术A 在新建某个度量值时,可能需要引用另一张表中的数据,这时候RELATED函数就能很好的满足需求。RELATED函数是DAX提供的一个关系函数,当两个表之间建立了关系,就可以使用RELATED函数访问与之关联的表中的列。在一对多关系中,RELATED可以从“多”端访问“一”端。也即,在多表中使用RELATED函数,可以从相关联的一表中匹配到唯一值。如果没有与之匹配的行,RELATED函数会返回空值(BLANK)。
如何从表中的列中删除默认值?
【中文标题】如何从表中的列中删除默认值?【英文标题】:How do you drop a default value from a column in a table? 【发布时间】:2010-11-24 18:31:30 【问题描述】:如何更改列以删除默认值?
该列是通过以下方式创建的:
ALTER table sometable Add somecolumn nchar(1) NOT NULL DEFAULT 'N'
然后修改为:
alter table sometable alter column somecolumn nchar(1) null
这允许空值,但保留默认值。如何删除它?
【问题讨论】:
How do you drop a default value or similar constraint in T-SQL?的可能重复 你有机会获得 VTC 吗? @RubenBartelink,答案是解决方案的一半。如果一个 Mods 想要合并,我不介意,但我在下面的回答实际上是关于如何删除约束,而不是仅仅发现名称。 我们可以同意不同意,但***.com/a/10758357/11635 完美地回答了我的问题,4 份问题对我来说只是浪费时间的 PITA @RubenBartelink,我认为它可能没有具体解决默认约束。我必须测试一下。 【参考方案1】:它是一个默认约束,你需要执行一个:
ALTER TABLE TableName
DROP CONSTRAINT ConstraintName
如果您在创建约束时没有指定名称,则 SQL Server 会为您创建一个。您可以使用 SQL Server Management Studio 通过浏览表、打开其树节点,然后打开 Constraints 节点来查找约束名称。
如果我没记错的话,约束将被命名为 DF_SomeStuff_ColumnName。
编辑:Josh W.'s 答案包含指向 SO question 的链接,该链接向您展示如何使用 SQL 而不是使用 Management Studio 界面查找自动生成的约束名称。
【讨论】:
可以在sql server中使用sp_help 'table_name'
获取约束的名称【参考方案2】:
这就是我想出的(在看到 Josh W. 的回答之前,实际上我看到了它,但浏览的速度太快了,以至于我误解了它):
declare @name nvarchar(100)
select @name = [name] from sys.objects where type = 'D' and parent_object_id = object_id('sometable')
if (@name is not null)
begin
exec ('alter table [sometable] drop constraint [' + @name +']')
end
我在这里的优势是我知道整个表上只有一个这样的约束。如果有两个,那么我想这就是你应该命名它们的原因;)。
(问题是这是对 10 个不同的客户数据库进行的修改,因此脚本中没有一个一致的名称)
【讨论】:
是的,这成为任何大规模数据库推出的问题。您最终要做的就是强迫自己始终命名您的约束,以便它们在不同环境中保持一致。例如:ALTER table sometable Add somecolumn nchar(1) NOT NULL CONSTRAINT DF_TableName_SomeColumn DEFAULT 'N' 我相信您的解决方案不适用于具有多个默认值的表,它会删除最后一个 如果表格对不同的列有一些限制,则需要按列名过滤:declare @name nvarchar(100) select * from sys.objects o join sys.columns col on o.object_id = col.default_object_id where type = 'D' and parent_object_id = object_id('tablename') and col.name = 'columnname'
【参考方案3】:
如果你不知道约束名称
DECLARE @ConstraintName nvarchar(200)
SELECT @ConstraintName = Name FROM SYS.DEFAULT_CONSTRAINTS
WHERE PARENT_OBJECT_ID = OBJECT_ID('__TableName__')
AND PARENT_COLUMN_ID = (SELECT column_id FROM sys.columns
WHERE NAME = N'__ColumnName__'
AND object_id = OBJECT_ID(N'__TableName__'))
IF @ConstraintName IS NOT NULL
EXEC('ALTER TABLE __TableName__ DROP CONSTRAINT ' + @ConstraintName)
https://***.com/a/13715343/2547164
【讨论】:
【参考方案4】:select name from sys.default_constraints where name like '%first_3_chars_of_field_name%'
找到您的约束并使用DROP CONSTRAINT
删除它。或者运行 cursor/while 循环来删除数据库中所有类似的默认值。
【讨论】:
它不起作用,因为我的约束的名称类似于 'DF_tableName_someLetters'【参考方案5】:如果您使用的是 SQL Server Management Studio,这非常简单。
如果有多个与表关联的约束并且您不想将它们全部删除,请右键单击约束并选择“脚本约束为 -> 创建到 -> 新查询编辑器窗口”。这将显示创建约束的代码,包括列名和默认值。
然后只需右键单击要删除的约束并选择删除。
【讨论】:
【参考方案6】:我也遇到了同样的问题,并以与您相同的方式更改了表格并添加了默认值。但是上述解决方案都没有解决我的问题,因为尽管进行了几次刷新,但默认值并未列在约束列表中,但是它在插入表时起作用。
我终于通过右键单击 SQL Management Studio 中的表名并选择设计解决了这个问题。然后我删除了列属性中的默认值。
【讨论】:
【参考方案7】:alter table <tablename> drop constraint <constraintname>
如果您不知道约束的名称,您可以使用 sql server manangement studio 来检查约束名称....希望对您有所帮助。
【讨论】:
以上是关于powerbi中如何再度量值中提取虚拟表中的列的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Power BI 中使用 DAX 获取柱形图的平均列百分比度量?
#POWERBI 度量值动态格式字符串,利用动态格式,实现百分数智能缩位(powerbi4月重磅更新功能)