Power BI DAX语言简介3 - 度量值(Measure) vs 列(Column)

要想在Power BI中使用DAX的函数对数据进行加工,就必须先创建一个度量值(Measure) 或者列(Column)。那么何时使用度量值,何时使用列呢?要想回答这个问题,先了解一下度量值和列的区别。

外在差别:
当创建一个度量值(Measure) 后,在导入的Power BI Table中并不会看有新的列被创建处理。而选择创建一个列(Column)后,Table里面会实实在在的增加一个新列并且对应的每一行都生成相应的数值。
例如下面这个例子中,求全部学生的语文总成绩,用度量值(Measure)类型的column求和,成绩单table中并没有增加一个新列;而当使用列(Column)类型求和时,则会增加一列,并且每列的值都相同,都为所有学生的语文成绩总和。
这里写图片描述

这里写图片描述

内在差别
度量值(Measure)主要用于聚合计算时使用,运算是在查询时才执行,并不占用RAM。相当于随用随机算。
使用列(Column)得到的运算结果则会被存储在表单当中,计算发生在列生成的时刻。由于Power BI的运算机制是会将表单内容加载到内存当中聚合,因此当数据量庞大时,使用列(Column)进行计算会占用大量的内存。

何时使用度量值(Measure),何时使用列(Column)?
通常情况下,如果你期待计算的结果是一个单一值,应该选用一个度量值(Measure)。例如在示例中,求全部学生语文成绩的总和,此时使用度量值(Measure)最合适。再例如,求成绩单中一共包含有多少个学生,此时也应该使用度量值(Measure)去掉用Count函数去获取。

如果你想针对每行去计算某一特定值(不同行的值很可能不一样),此时应该选用列(Column)进行计算。例如在上个示例中,如果想要计算每个学生的总成绩,这应该使用列(Column)进行计算,此时度量值(Measure)就不再适用,因为你期待获得的并不是单个值,而是期待的是针对每一行单独进行计算。

此外,如果在Report页面,过滤器能使用的内容必须来自于列(Column),因此,如果你想针对某一内容进行过滤,那么该内容就必须生成自列(Column)。再拿学生成绩单为例,如果你想统计语文学科分数大于100分和小于等于100分的学生名单,则需要创建一个列(Column)用来标记哪一行的语文分数大于100或者小于等于100。

需要注意的是对于列(Column)中的数值,当后台原始数据发生改变时,如果不刷新则列(Column)中的内容不会更新。而由于度量值(Measure)运算机制是在加载可视化图形时进行,因此对刷新的依赖性不高。

React Hooks 是 React 16.8 中新增的特性,它可以让你在函数组件中使用 state、生命周期钩子等 React 特性。使用 Hooks 可以让你写出更简洁、可复用且易于测试的代码。 React Hooks 提供了一系的 Hook 函数,包括 useState、useEffect、useContext、useReducer、useCallback、useMemo、useRef、useImperativeHandle、useLayoutEffect 和 useDebugValue。每个 Hook 都有特定的用途,可以帮助你处理不同的问题。 下面是 React Hooks 的一些常用 Hook 函数: 1. useState useState 是最常用的 Hook 之一,它可以让你在函数组件中使用 state。useState 接受一个初始状态值,并返回一个数组,数组的第一个值是当前 state 值,第二个值是更新 state 值的函数。 ``` const [count, setCount] = useState(0); ``` 2. useEffect useEffect 可以让你在组件渲染后执行一些副作用操作,比如订阅事件、异步请求数据等。useEffect 接受两个参数,第一个参数是一个回调函数,第二个参数是一个数组,用于控制 useEffect 的执行时机。 ``` useEffect(() => { // 这里可以执行副作用操作 }, [dependencies]); ``` 3. useContext useContext 可以让你在组件树中获取 context 的值。它接受一个 context 对象,并返回该 context 的当前值。 ``` const value = useContext(MyContext); ``` 4. useRef useRef 可以让你在组件之间共享一个可变的引用。它返回一个对象,该对象的 current 属性可以存储任何值,并在组件的生命周期中保持不变。 ``` const ref = useRef(initialValue); ref.current = value; ``` 5. useCallback useCallback 可以让你缓存一个函数,以避免在每次渲染时都创建一个新的函数实例。它接受一个回调函数和一个依赖数组,并返回一个 memoized 的回调函数。 ``` const memoizedCallback = useCallback(() => { // 这里是回调函数的逻辑 }, [dependencies]); ``` 6. useMemo useMemo 可以让你缓存一个计算结果,以避免在每次渲染时都重新计算。它接受一个计算函数和一个依赖数组,并返回一个 memoized 的计算结果。 ``` const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]); ``` 以上就是 React Hooks 的一些常用 Hook 函数,它们可以帮助你更好地处理组件状态、副作用、上下文和性能优化等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值